Before deep learning (ca 2013), the SOTA was using descriptors: KAZE, SIFT, SURF, ORB etc use keypoints & descriptors based matching.[1] . Other approaches relied on shape (edge), color matching using color and shape histograms comparisons e.g. HOG [2].
Plenty of approaches existed prior to deep learning, it's just that DL just blew those out of the water with its performance.
p.s. BTW I would bucket these approaches as ML too. ML >> DL