Реализация сиамской сети в 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…