Другой подход заключается в использовании так называемой "сиамской сети". Что на самом деле означает, что вы используете модель, такую как Inception-v3 или MobileNet, и оба изображения и сравниваете их результаты.
Однако эти модели обычно дают классификационный вывод, то есть "это кошка". Но если вы удалите этот классификационный слой из модели, он выдаст выходные данные, представляющие собой просто набор чисел, которые описывают, какие вещи находятся на изображении, но в очень абстрактном смысле.
Если эти числа для двух изображений очень похожи - если «расстояние» между ними очень мало - тогда эти два изображения также очень похожи.
Таким образом, вы можете взять существующую модель Core ML, удалить слой классификации, запустить его дважды (по одному разу на каждом изображении), который даст вам два набора чисел, а затем вычислить расстояние между этими числами. Если это расстояние ниже некоторого порога, то изображения достаточно похожи.