www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home
Занимательная история, выдающиеся люди, малоизвестные факты, находки, открытия, фальсификации. Присоединяйся!

Weekend Hack: создание бота распознавания образов для Telegram с использованием Python

Дата публикации Aug 24, 2019

Распознавание объектов с нашим ботом. Исходное изображение отЗахари НельсоннаUnsplash

Целью этого поста является создание бота Telegram с Python, который выполняетраспознавание изображенийс помощьюнейронные сети, Пост состоит из трех основных разделов: введение, выбор технологий и пошаговая настройка.


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


вступление

Автоматическое распознавание изображений(например, распознавание объектов и классификация изображений) может обеспечить огромную ценность для бизнеса. Если вы запускаете форум, приложение для знакомств или любую платформу, на которую пользователи загружают контент, автоматизация распознавания изображений может иметь решающее значение. Преимущества имеют два аспекта:

С одной стороны, этообеспечивает ценность для конечных пользователей, позволяя им выполнять поиск по изображениям по секретной теме, избегая утомительной задачи ручной классификации. Практическим примером этого является функция поиска Unsplash,который ищет высококачественные изображения по теме,

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

Как видим, приложения бесконечны, а преимущества очевидны. Главный вопрос остается, какое решение выбрать для этой задачи? Существует множество сторонних решений, а также возможность создания собственного конвейера распознавания изображений из открытого или закрытого программного обеспечения. В следующем разделемы будем исследовать различные альтернативы,

Выбор технологий

Как указывалось выше, существует множество провайдеров, которые обеспечивают распознавание изображений и видео с помощью API:Google Vision,Amazon Rekognition,Прояснить... Один из главных вопросов - будут ли мои данные в безопасности? Как говорит Google в своемЧасто задаваемые вопросы об использовании данных:

Когда вы отправляете изображение в Cloud Vision API, мы должны хранить это изображение в течение короткого периода времени, чтобы выполнить анализ и вернуть вам результаты.Сохраненное изображение обычно удаляется через несколько часов, Google также временно регистрирует некоторые метаданные о ваших запросах API Vision (например, время получения запроса и размер запроса), чтобы улучшить наш сервис и бороться со злоупотреблениями.

«Типично удалено» ... что означает типично?

Если для вас важны владение данными и конфиденциальность, существует также возможность создать собственный конвейер распознавания изображений, используя существующие технологии. Есть также множество альтернатив в открытом коде:TensorFlow,Darknet,MLpack,Keras… Которые позволяют вам лучше контролировать, где находится владение данными изображения.

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

Пользовательский поток будет следующим: выберите изображение и отправьте его нашему боту Telegram. Он будет классифицировать и выполнять распознавание объектов и отправлять нам результаты. Легко ли?

Проще сказать, чем сделать…

Пошаговая настройка

Хорошо, давайте углубимся в это!

1. Настройка бот-скелета бота Python

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

Выходные Hack: Создание бота Unsplash для Telegram с Python

Создайте своего первого бота Telegram, используя Python и Glitch, который обслуживает изображения в высоком разрешении из Unsplash!

medium.com

2. Добавить Darknet

Для того, чтобы проанализировать изображения, отправленные боту, сначала нужно установить и собрать Darknet.Все команды установки доступнынаinstall.shфайл вГлюк проект,

Для ввода команд в нашем проекте Glitch выберитеИнструменты> Консоль полной страницы,

Выберите консоль Full Page для установки Darknet

Чтобы установить Darknet, перейдите к.данныекаталог в вашем приложении Glitch. Это очень важно, так как этот каталог будет сохранен, когда ваше приложение Glitch перейдет в спящий режим!

cd .data
git clone https://github.com/pjreddie/darknet.git
cd darknet
make

Важно отметить, что пока вы можете тренировать свои собственные модели (и должны,в зависимости от варианта использования), это обычно довольно вычислительно дорогая операция. Учитывая, что мы будем запускать нашего бота сСбойэкземпляр сочень ограниченыМощность и пространство (1 ЦП, 512 ОЗУ, 200 МБ памяти), обучение моделей совершенно неосуществимо.

В нашем случае наилучшим решением является использование предварительно обученных весов моделей. Мы будем использовать существующие веса, сгенерированные из предыдущих тренировок, что позволит нам быстро набрать скорость. Мы загрузим два файла весов,darknet19.weightsдля классификации изображений, иyolov3-tiny.weightsдля распознавания объекта.

# execute in the ./darkent directory
wget https://pjreddie.com/media/files/darknet19.weights
wget https://pjreddie.com/media/files/yolov3-tiny.weights

Обратите внимание, что мы выбрали файлы небольшого веса из-за ограничений пространства и мощности процессора, доступных в Glitch на данный момент. Не стесняйтесь попробовать другие веса (классификация изображений,обнаружение объекта) если вы используете это в другой, более мощной среде. Вы также получите лучшие результаты!

3. Подключите

Отлично, теперь, когда у нас есть готовый скелет бота и установлен Darknet, мы можем подключить его. Я не буду объяснять каждую строку кода, для полного прокомментированного кода вы можете перейти кГлюк проект,

Ниже приведен фрагмент кодаглавный обработчик(обратите внимание, что он использует вспомогательные функции). Он срабатывает каждый раз, когда новая картинка отправляется в бот.

@bot.message_handler(content_types=['photo'])
def handle(message): # extract the image name for further operations
image_name = save_image_from_message(message)

# execute object recognition
object_recognition_image(image_name) # send object recognition results
bot.send_photo(message.chat.id, open('.data/darknet/predictions.jpg','rb'), 'Identified objects')

# execute image classification
classification_list_result = classify_image(image_name)

# send classification results
output = 'The image classifies as:\n'
for result in classification_list_result:
output += result
output += '\n🚀 Gimme more pics! 🚀'

bot.reply_to(message, output)

# remove picture from server
cleanup_remove_image(image_name);

Полный исходный код доступен в:

телеграмма-изображения classfication-бот

Бот классификатора изображений Telegram 🎏 Glitch - это дружелюбное сообщество, в котором каждый может найти и создать лучшие приложения…

glitch.com

4. Протестируйте бота

Отлично, теперь, когда мы готовы, давайте проведем некоторое тестирование!

Telegram нашего ботаМНЕ БЫявляется:@wh_image_classificator_bot,не стесняйтесь проверить это. Возможности классификации и распознавания ограничены действующими техническими ограничениями, но результаты обнадеживают.

Классификация и распознавание объектов на картинке собаки
Классификация и распознавание объектов на картинке 4х4

Резюме

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

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

Ресурсы


ДругиеВыходные Hackсообщения:

Выходные Hack: Создание бота Unsplash для Telegram с Python

Создайте своего первого бота Telegram, используя Python и Glitch, который обслуживает изображения в высоком разрешении из Unsplash!

medium.com

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map