Реализация сиамской сети в Keras и TensorFlow

Изучите методы обнаружения объектов (и многое другое) на примере кода.

Нейронные сети великолепны и очень популярны в областях AI/ML, но для их обучения требуется слишком много данных. Для таких задач, как обнаружение объектов, проверка подписи, проверка голоса и распознавание рецептурных таблеток, обычные методы нейронной сети были бы намного более трудоемкими и дорогими из-за этих чрезмерных требований к данным. В этих типах работы сиамская сеть может быть очень эффективной, поскольку требует гораздо меньше данных, чем обычная нейронная сеть. Кроме того, несбалансированный набор данных также может работать хорошо.

Этот учебник даст вам общий обзор сиамской сети и полный пример работы с ней. Здесь я работал с набором данных fashion-mnist, но похожая структура хороша для многих других вариантов использования.

Что такое сиамская сеть?

Сиамские сети содержат одну или несколько идентичных сетей, и эти идентичные сети имеют одинаковые параметры и веса. Если веса одной сети обновляются, веса другой сети также обновляются. Они должны быть идентичными. Последний слой обычно представляет собой слой внедрения, который вычисляет расстояние между выходами.

Вы подаете им пару входов. Каждая сеть будет вычислять характеристики входных данных и находить сходство между двумя входными данными, используя расстояние между двумя изображениями. Итак, всего два класса. Либо изображения похожи, либо не похожи.

Концепция станет намного яснее, когда вы будете работать с примером. Учиться на практике — всегда лучшая идея.

Необходимый импорт и определение функций

Начнем с необходимого импорта. Мы будем импортировать больше, если это необходимо.

import os
import tensorflow.keras.backend as K
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import…