I would like to check if my following sentence structure is correct.
I'm seeing very few people roam in the streets these days.
I'm seeing very few people roaming in the streets these days.
To begin with you don't need the "in" in either of them. One "roams the streets", not "in them".
Strictly "roaming" - present participle fits with the present continuous main verb "I'm seeing".
But "roam"- simple present, is idiomatic in such an adjectival clause - though with perhaps a slight change of meaning. "Roam" to my mind would suggest a more deliberate activity, than "roaming" and would work better with the simple present "I see very few people..." Others may disagree.
But I believe you are reasonably safe with either:
I'm seeing very few people [roam / roaming the streets these days].
The basic structure is correct, but the progressive seeing is not especially natural here – many people would use see instead
The bracketed subordinate clause is non-finite - an infinitival with roam and a gerund-participial with roaming. It's function is that of complement to the verb seeing.
Constructions like this are called 'catenative': the term comes from the Latin word for 'chain' and is used to describe a construction where there is a chain of verbs (here see and roam), in which all except the last have a non-finite complement.
In your example, there is an intervening noun phrase very few people between the two verbs. Syntactically it is object of the matrix (main) clause, but semantically it is subject of the subordinate clause. It’s called a 'raised object' because the verb it relates to syntactically is higher in the constituent structure than the one it relates to semantically.