Skip to content

Ornithologist telegram bot, designed for fun with people on telegram, allows you to detect and classify 59 bird species of Russia by photo.

Notifications You must be signed in to change notification settings

sbaldin/cyberAnnaBot

Repository files navigation

Телеграм Бот "Cyber-Anna"("Это что за птица?")

Build Status

Орнитологический телеграмм бот, разрабатывался для фана в чате с друзьями, позволяет распознавать 59 классов птиц России по фото. Бот использует сверточную нейронную сеть darknet на базе библиотеки dl4j для классификации входной фотографии.

Для более точной классификации птиц на входном изображении выделяются объекты с помощью CNN TinyYOLO из стандартного набора dl4j.

Датасет из изображений птиц был собран на основе 100-bird-species (птицы эндемики для США были удалены из датасета, несколько птиц эндемиков для России добавлены).

Подготовка к запуску

Для функционирования бота необходимо получить token от BotFather, и прописать его в application-config.yaml:

bot:
  name: bot_name
  locale: RU
  token:  TELEGRAM_BOT_API_TOKEN

cnn:
  modelFileName: "model_russian_6x6_kernel_darknet_93.bin"
  cnnInputLayerSize:
    width: 224
    height: 244
    channels: 3

Запуск

При использовании gradle есть нюансы: из-за того что dl4j тянет за собой очень много зависимостей, использование shadow плагина и специфичных для него shadowJar и shadowRun задач занимает больше времени, а размер jar-файла составляет ~1gb.

./gradlew -DappConfig="/path/to/application-config.yaml" -Xmx256m -Dorg.bytedeco.javacpp.maxbytes=1100m -Dorg.bytedeco.javacpp.maxphysicalbytes=1200m run

Развертывание

TODO: Предполагается развертывание на raspberry pi4. Для развертывания на

Сборка внутри Docker

Возможна сборка внутри докер контейнера:

docker run -p 9010:9010 -u gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle-6.9 gradle buildDockerRelease --stacktrace --info  --no-daemon \
-Djava.rmi.server.hostname=0.0.0.0 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.rmi.port=9010 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false

Развитие

Добавить запуск внутри докера собранной jar
Добавить подпроект

About

Ornithologist telegram bot, designed for fun with people on telegram, allows you to detect and classify 59 bird species of Russia by photo.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published