Обзор глубокого обучения:

Глубокое обучение и машинное обучение - самые прогрессивные технологии в эту эпоху. Искусственный интеллект теперь сравнивают с человеческим разумом, и в некоторых областях ИИ выполняет большую работу, чем люди. День ото дня в этой области появляются новые исследования. Это поле очень быстро увеличивается, потому что теперь у нас достаточно вычислительной мощности для выполнения этой задачи. Глубокое обучение - это ветвь машинного обучения, в которой используются многослойные нейронные сети.

В традиционном машинном обучении алгоритму предоставляется набор важных функций для анализа. Однако при глубоком обучении алгоритму предоставляются необработанные данные и он сам решает, какие функции важны. Сети глубокого обучения часто улучшаются по мере увеличения объема данных, используемых для их обучения.

Подробнее о простом объяснении глубокого обучения здесь

Ниже показаны некоторые очень интересные приложения для глубокого обучения.

Источник: - https://techvidvan.com/tutorials/deep-learning-applications/

Теперь мы увидим одно из его приложений, которое является генератором описаний фотографий или подписей к изображениям.

Генератор подписей к изображениям.

Генератор подписей к изображениям или описания фотографий - одно из приложений глубокого обучения. В котором мы должны передать изображение модели, и модель выполняет некоторую обработку и генерирует подписи или описания в соответствии с ее обучением. Это предсказание иногда бывает не очень точным и порождает бессмысленные предложения. Для лучших результатов нам нужна очень высокая вычислительная мощность и очень большой набор данных. Теперь мы увидим некоторую информацию о наборе данных и архитектуре нейронной сети генератора подписей к изображениям.

Предварительные условия:

Этот проект требует хороших знаний в области глубокого обучения, Python, работы с записными книжками Jupyter, библиотеки Keras, Numpy и обработки естественного языка.

Убедитесь, что вы установили все следующие необходимые библиотеки:

  • Tensorflow
  • Керас
  • Панды
  • NumPy
  • nltk (набор инструментов для естественного языка)
  • Jupyter- IDE

Набор данных:

В этом проекте мы используем набор данных flicker 30k. В нем 30 000 изображений с идентификатором изображения, а для конкретного идентификатора сгенерировано 5 подписей.

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

Flicker_30k: - https://www.kaggle.com/hsankesara/flickr-image-dataset

Одно из изображений в наборе данных с ID 1000092795

1000092795.jpg

Вот конкретные подписи к этим изображениям, которые присутствуют в наборе данных.

Архитектура сети:

1. Обнаружение функций изображения:

Для обнаружения изображений мы используем предварительно обученную модель VGG16. VGG16 уже установлен в библиотеке Keras. VGG 16 был предложен Кареном Симоняном и Эндрю Зиссерманом из Лаборатории визуальной геометрии Оксфордского университета в 2014 году в статье ОЧЕНЬ ГЛУБОКИЕ КОНВОЛЮЦИОННЫЕ СЕТИ ДЛЯ РАСПОЗНАВАНИЯ БОЛЬШИХ ИЗОБРАЖЕНИЙ.

Эта модель выиграла конкурс ILSVRC в 2014 году.

Вот представление модели в 3-х и 2-х измерениях.

Источник: - Очень глубокие сверточные сети для распознавания крупномасштабных изображений

Источник: -VGG16 | Модель CNN GF G

Обзор:

Вход в слой conv1 представляет собой изображение RGB фиксированного размера 224 x 224. Изображение проходит через стопку сверточных (сверточных) слоев, где использовались фильтры с очень маленьким воспринимающим полем: 3 × 3 (что является наименьшим размером, чтобы уловить понятие левого / правого, верхнего / нижнего, центрального ). В одной из конфигураций он также использует фильтры свертки 1 × 1, которые можно рассматривать как линейное преобразование входных каналов (с последующей нелинейностью). Шаг свертки установлен на 1 пиксель; пространственное заполнение conv. входной слой таков, что пространственное разрешение сохраняется после свертки, то есть заполнение составляет 1 пиксель для свертки 3 × 3. слои. Пространственное объединение выполняется пятью слоями максимального объединения, которые следуют за некоторыми конвенциями. слои (не все конв. слои сопровождаются максимальным объединением). Максимальное объединение выполняется в окне размером 2 × 2 пикселя с шагом 2.

Три полностью соединенных (FC) уровня следуют за стеком сверточных слоев (которые имеют разную глубину в разных архитектурах): первые два имеют 4096 каналов каждый, третий выполняет 1000-позиционную классификацию ILSVRC и, таким образом, содержит 1000 каналов (по одному для каждого класс). Последний слой - это слой soft-max. Конфигурация полносвязных слоев одинакова во всех сетях.

Подробнее Здесь

2. Генерация текста с использованием LSTM

Сети с долговременной краткосрочной памятью - обычно называемые просто LSTM - это особый вид RNN, способный изучать долгосрочные зависимости. Они были введены Hochreiter & Schmidhuber (1997) и были усовершенствованы и популяризированы многими людьми в следующей работе. Они очень хорошо работают с широким кругом задач и в настоящее время широко используются.

Источник: - LSTM Networks

Обзор:

Обычный блок LSTM состоит из ячейки, входного элемента, выходного элемента и элемента забывания. Ячейка запоминает значения за произвольные интервалы времени, а три шлюза регулируют поток информации в ячейку и из нее.

Сети LSTM хорошо подходят для классификации, обработки и прогнозирования на основе данных временных рядов, поскольку между важными событиями временного ряда могут быть запаздывания неизвестной длительности. LSTM были разработаны для решения проблемы исчезающего градиента, с которой можно столкнуться при обучении традиционных RNN. Относительная нечувствительность к длине промежутка является преимуществом LSTM перед RNN, скрытыми марковскими моделями и другими методами обучения последовательностям во многих приложениях.

Преимущество ячейки LSTM по сравнению с обычным повторяющимся блоком - это блок памяти ячейки. Вектор ячейки имеет возможность инкапсулировать понятие забывания части своей ранее сохраненной памяти, а также добавлять часть новой информации. Чтобы проиллюстрировать это, нужно изучить уравнения ячейки и то, как она обрабатывает последовательности под капотом.

Теперь мы объединяем эту архитектуру модели в одну модель, и это наша последняя модель, которая будет генерировать заголовки из изображений.

Прочтите Википедию: - Полное объяснение сетей LSTM

Архитектура основной модели:

Эта последняя модель представляет собой комбинацию моделей CNN и RNN. Чтобы обучить эту модель, мы должны дать два входа и две модели. (1) Изображения (2) Соответствующие подписи. Для каждого уровня LSTM мы вводим одно слово для каждого уровня LSTM, и каждый уровень LSTM предсказывает следующее слово и то, как модель LSTM оптимизирует себя, изучая заголовки. Что касается функций изображения, мы получаем массив всех функций изображения из предварительно обученной модели VGG16 и сохраняем его в файле, чтобы мы могли использовать этот файл или функции напрямую для сопоставления подписей и функций изображения друг с другом. Наконец, функции изображения и последний слой LSTM мы вводим эту комбинацию обоих выходов в модель декодера, в которой мы добавляем как функции изображения, так и подписи, чтобы модель училась генерировать подписи из изображений, а для последнего слоя мы генерируем вывод или подписи, длина которых равна максимальная длина подписей набора данных.

Последний слой имеет размер, равный длине словаря. Для этой модели мы используем «категориальную кросс-энтропию», потому что на последнем уровне мы должны предсказать вероятность каждого слова, а затем мы используем только слова с высокой вероятностью. Мы используем оптимизатор Adam для оптимизации сети или обновления весов сети.

Оценка Bleu:

Мы можем генерировать подписи с помощью модели n-граммов, для этой цели мы используем Blue-score для этой модели. Используя BLEU Score, мы можем проверить, какой n-грамм лучше всего подходит для создания подписей для этого набора данных. BLEU Score находится в диапазоне от 0 до 1. BLEU, или двуязычный анализ оценок, представляет собой оценку для сравнения кандидата перевод текста на один или несколько справочных переводов. Хотя он разработан для перевода, его можно использовать для оценки текста, созданного для набора задач обработки естественного языка.

Обзор модели:

Код:



Вывод:

Наконец, завершите этот проект, мы понимаем архитектуру модели VGG16, сеть долгосрочной краткосрочной памяти, как объединить обе эти модели, оценку bleu, как сеть LSTM генерирует подписи, как модель VGG16 мы можем использовать для нашего проекта и как создавать подписи из изображений с использованием глубокого обучения.

Больше блогов о подписях к изображениям:

Подпись к изображениям в Python с Keras

Подпись к изображению с использованием механизма внимания

Автоматическая подпись изображений с помощью CNN и RNN

Свяжитесь со мной:

Github:



Средний:



LinkedIn:



Последнее примечание:

Спасибо за внимание! Если вам понравилась эта статья, нажмите кнопку "хлопать" 👏 столько раз, сколько сможете. Это будет много значить и побудит меня продолжать делиться своими знаниями.