1. A system for multi-object detection and recognition, the system comprising: one or more processors and a non-transitory computer-readable medium having executable instructions encoded thereon such that when executed, the one or more processors perform operations of: (a) receiving an image patch of an image as input, wherein the image patch is a portion of the image containing a plurality of objects of interest; (b) determining a set of overlapping sub-windows in the image patch; (c) evaluating a likelihood of existence of an object of interest in each sub-window in the set of overlapping sub-windows; (d) generating a confidence map comprising a plurality of confidence values corresponding to the set of overlapping sub-windows indicating the likelihood of existence of an object of interest in each sub-window in the set of overlapping sub-windows; (e) applying a non-maxima suppression technique to the confidence map to eliminate sub-windows in the set of overlapping sub-windows having confidence values that are below a determined local maximum confidence value from the confidence map; (f) determining a global maximum confidence value for a sub-window in the set of overlapping sub-windows which corresponds to a location of an instance of an object of interest in the image patch; (g) removing the sub-window in the set of overlapping sub-windows that corresponds to the location of the instance of the object of interest in the image patch from the confidence map; (h) repeating operations (e) through (g) until a predetermined stopping criteria is met; and (i) outputting detection information related to a plurality of instances of the object of interest in the image patch.