이미지 분류에 텔레그램 봇 사용

모델 훈련:



편안한 프레임워크인 PyTorch/Tensorflow를 선택하십시오. 그런 다음 이미지 분류기를 훈련시키거나/또는/훈련된 모델을 사용하십시오.



학습 예시: tensorflow | pytorch

I'm using tflite model as it serves best for edge and low computing devices.



모델 변환:



pytorch에서 tflite로 변환하려면 omerferhatt에서 이 코드를 사용할 수 있습니다.

토치에서 ONNX로 변환한 다음 TF2 >>> tflite로 변환합니다.

토치->ONNX->TF2->TFLite

이 모델에 대한 추론 코드를 '.py' 파일에 넣고 모델 파일 및 labels.txt(tensorflow용)와 함께 배치합니다.

텔레그램 봇:



쉬운 단계:

1) bot father과 연결

2) 봇 생성 및 토큰 받기

봇을 구축하기 위해 python-telegram-bot 라이브러리를 사용했습니다. 간단한 echo-bot 템플릿 예제를 사용하고 필요에 따라 변경했습니다.

import logging
import os

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
from model import get_predictions  # calling model func

# Enable logging
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)

logger = logging.getLogger(__name__)


# Define a few command handlers. These usually take the two arguments update and
# context. Error handlers also receive the raised TelegramError object in error.
def start(update: Update, context: CallbackContext) -> None:
    """Send a message when the command /start is issued."""
    update.message.reply_text('Hi send an image to classify!')


def help_command(update: Update, context: CallbackContext) -> None:
    """Send a message when the command /help is issued."""
    update.message.reply_text('Help!')


def photo(update: Update, context: CallbackContext) -> int:
    user = update.message.from_user
    photo_file = update.message.photo[-1].get_file()
    photo_file.download('user_photo.jpg')
    logger.info("Photo of %s: %s", user.first_name, 'user_photo.jpg')
    update.message.reply_text(
        'Okay now wait a few seconds!!!'
    )
    update.message.reply_text(get_prediction('user_photo.jpg'))


def main():
    """Start the bot."""
    # Create the Updater and pass it your bot's token.
    TOKEN = " " # place your token here
    updater = Updater(TOKEN, use_context=True)
    PORT = int(os.environ.get('PORT', '8443'))

    # Get the dispatcher to register handlers
    dispatcher = updater.dispatcher

    # on different commands - answer in Telegram
    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("help", help_command))

    # on noncommand i.e message - echo the message on Telegram
    dispatcher.add_handler(MessageHandler(Filters.photo & ~Filters.command, photo))

    updater.start_webhook(listen="0.0.0.0",
                      port=PORT,
                      url_path=TOKEN)
    updater.bot.set_webhook("https://yourapp.herokuapp.com/" + TOKEN)
    updater.idle()

if __name__ == '__main__':
    main()



위의 코드update.message.reply_text(get_prediction('user_photo.jpg'))에서 모델을 호출하여 결과 예측을 사용자에게 전달하고 있으므로 추론 모델 코드에 따라 대체할 수 있습니다.

최종 터치



내 봇을 배포하기 위해 Heroku 플랫폼을 선택합니다. 더 많은 호스팅 아이디어를 보려면 여기link를 방문하세요.



계속 진행하기 전에 요구 사항 파일과 Procfile을 만들어야 합니다.

tflite 추론의 경우 전체 tensorflow 라이브러리가 필요하지 않으며 tflite 인터프리터를 설치하기만 하면 됩니다. 전체 정보는 여기guide를 참조하십시오.

필요에 따라 다음 줄을 Procfile에 넣으십시오.

web: python bot.py


이제 내 폴더 구조는 다음과 같습니다.

└── img_classify_bot
    ├── model.py
    └── bot.py
    └── model.tflite
    └── labels.txt
    └── bot.py
    └── requirements.txt
    └── Procfile



마지막으로 heroku-cli를 사용하여 봇을 배포합니다.(봇 토큰은 민감한 정보이므로 공개하지 마십시오)

.


분류기 봇




좋은 웹페이지 즐겨찾기