1. A method for generating a composite output video from an input video having a sequence of frames, the method comprising: storing a foreground object list comprising a plurality of previously extracted foreground object images, each of the foreground object images comprising a representation of a foreground object with background pixels subtracted; receiving a current video frame for processing from the sequence of frames; performing, by a processing device, a foreground/background segmentation based on a predictive model to extract a foreground object image for the current video frame; determining, by the processing device, if the foreground object image meets first predefined criteria, the determining comprising: identifying a plurality of foreground object images that each overlap a most recent foreground object image in the foreground object list by an overlap amount within a predefined overlap range; determining a best foreground object image from among the plurality of foreground object images according to a predefined image criteria; and determining that the foreground object image for the current video frame meets the first predefined criteria if the foreground object image for the current video frame is the best foreground object image from the plurality of foreground object images having the overlap amount within the predefined overlap range; responsive to the foreground object image meeting the first predefined criteria, storing the foreground object image for the current frame to the foreground object list; and overlaying each of the foreground object images in the foreground object list onto the current video frame to generate a composite video frame.