Giter Club home page Giter Club logo

image_captioning's Introduction

Image captioning (Генерация текстового описания изображений)


В данном проекте представлена детальная методология предварительной обработки данных с целью их подготовки перед обучением моделей. Кроме того, реализованы два ведущих архитектурных решения в области image captioning, которые находятся в центре внимания исследовательского сообщества. Помимо этого, мной был создан веб-сервис, обеспечивающий возможность загрузки изображений и генерации двух описаний для каждой из обученных архитектур (модель LSTM + ResNet и модель LSTM + MobileNet + Soft Attention).

Краткая теория:

Архитектура для создания image captioning обычно основывается на сочетании сверточных нейронных сетей (Convolutional Neural Networks, CNN) для обработки изображения и рекуррентных нейронных сетей (Recurrent Neural Networks, RNN) для генерации подписи. То есть данная задача по созданию текстовых описаний является комбинацией сразу двух популярных направлений в Deep Learning (NLP + CV).

Классический подход к image captioning с использованием RNN (например, LSTM - Long Short-Term Memory) имеет некоторые проблемы. Одна из основных проблем - это то, что RNN имеет фиксированную длину контекста и обрабатывает информацию последовательно. Это означает, что RNN видит только небольшой контекст, поэтому при генерации слов часто забывет старые результаты своей генерации. Так же такой подход не позволяет полностью учесть контекст изображения на каждом этапе генерации. В данном случае выделенные фичи изображения с помощью CNN лишь единожды подаются на вход LSTM блока, так что со временем генерация полностью теряет память о исходном изображении и начинает "додумывать самостоятельно".

1st model

Рисунок 1 - Архитектура модели LSTM + ResNet

Для решения этих описанных ранее проблем применяется механизм внимания (attention mechanism). В случае image captioning, механизм внимания позволяет сети "обращаться" к различным частям изображения на каждом шаге генерации текста. Таким образом контекст самого изображения не теряется со временем генерации. А представленный механизм soft attention позволяет сети фокусироваться на разных частях изображения с разной степенью "важности" на каждом шаге генерации, что значительно увеличивает качество финального описания. Так же такие текста по большей части являются полее содержательными, а главное оконченными (В случае первой модели зачастую происходит зацикливание содердания из-за потери контекста).

2nd model

Рисунок 2 - Архитектура модели LSTM + MobileNet + Soft Attention


Структура проекта:

Подробное описание процесса предподготовки изображений и тестовых описаний для обучения сетей, обучение сети с архитектурой LSTM + ResNet34, а так же реализация инференции (inference) данной модели при подаче нового незнакомого изображения представлены в jupiter notebook - image_captioning_no_attention.ipynb

Обучение сети с архитектурой LSTM + MobileNet + Soft Attention, а так же реализация инференции (inference) данной модели при подаче нового незнакомого изображения представлены в jupiter notebook - image_captioning_with_attention.ipynb

Вэб сервис я реализовал с помощью веб-фреймворка Streamlit, предназначенного для простого развертывания моделей. Скрипт для запуска на localhost вэб приложения - web.py

Помимо главных описанных файлов репозитория так же имеются .py файлы, в которых реализованы функции по инференсу моделей и загрузке обученных весов с моего Google Drive. Так же имеется файл с расширением .pkl, в котором сохранен полученный словарь в процессе предобраюотки текстовых описаний (NLP).


Как запускать программу:

Данные команды требуется запускать последовательно в терминале:

  1. Склонируйте к себе этот репозиторий
git clone https://github.com/Koldim2001/Image_captioning.git
  1. Перейдите с помощью команды cd в созданную папку Factory_detection
cd Image_captioning
  1. Загрузите все необходимые библиотеки:
pip install -r requirements.txt
  1. Запустите написанный вэб сервис:
streamlit run web.py --server.port 80
  1. Перейдите на данный сайт:

Local URL: http://localhost:80

PS: Для корректной работы streamlit веб-фреймворка может потребоваться наличие python версии не ниже 3.9.12 (то есть новее) .

web web
web web

Рисунок 3 - Примеры работы веб-приложения

image_captioning's People

Contributors

koldim2001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.