Этот проект — Telegram-бот, который умеет определять пол человека по загруженной фотографии. Бот использует несколько моделей машинного обучения (cnn_from_scratch, vgg16_features, vgg16_features_augmentation, fine_tuning) и позволяет пользователю выбрать модель для предсказания. Результат включает пол (мужчина или женщина), уверенность в предсказании и точность выбранной модели на тестовых данных. Проект развернут в контейнере Docker, запущенном на микрокомпьютере Orange PI 3 LTS. Бот доступен в телеграмме: @FaceGenderBot
Загрузка фото через Telegram (сжатые фото или несжатые изображения в виде документов). Выбор модели предсказания через инлайн-клавиатуру. Вывод результата с указанием пола, уверенности и точности модели.
- cnn_from_scratch Сверточная нейронная сеть, обученная с нуля, использует аугментацию. Точность на тестовых данных 77%.
- vgg16_features Основана на предобученной сети VGG16. Точность на тестовых данных 82%.
- vgg16_features_augmentation Основана на предобученной сети VGG16, добавлена аугментация. Точность на тестовых данных 84%.
- fine_tuning Основана на предобученной сети VGG16 с аугментацией, использует метод тонкой настройки (fine-tuning). Точность на тестовых данных 86%. Все модели использовали датасет из 3000 обучающих фотографий.
-
Клонируйте репозиторий:: git clone git@github.com:madzone-code/FaceGenderBot.git cd FaceGenderBot
-
Создайте виртуальное окружение: python -m venv venv source venv/bin/activate # Linux/Mac . venv\Scripts\activate # Windows
-
Установите зависимости: pip install -r requirements.txt
-
Получите токен у @BotFather в Telegram.
-
Настройте переменные окружения: Создайте файл .env в корневой директории проекта и добавьте ваш Telegram-токен: TELEGRAM_TOKEN=your_bot_token_here
-
Скачайте модели: https://disk.yandex.ru/d/X2_ymPgzQ4r32A Распакуйте содержимое архива в каталог '/models/'. Ожидаемые файлы: cnn_from_scratch.keras vgg16_features.keras vgg16_features_augmentation.keras fine_tuning.keras
Запустите бота: python telegram_bot.py
Взаимодействие с ботом: Отправьте команду /start в Telegram, чтобы начать. Загрузите фото (как изображение или документ). Выберите модель из предложенных кнопок. Получите результат предсказания.
FaceGenderBot/
├── data/ # Хранение сырых фото и подготовленных датасетов (опционально)
│ ├── big_dataset/ # Подготовленные фотографии
│ ├── micro_dataset/ # Подготовленные фотографии
│ └── small_dataset/ # Подготовленные фотографии
│ └── UTKFace/ # Сырые фотографии UTKFace
├── models/ # Модели нейронных сетей (опционально)
│ ├── cnn_from_scratch.keras # Готовая модель
│ ├── fine_tuning.keras # Готовая модель
│ └── vgg16_features.keras # Готовая модель
│ └── vgg16_features_augmentation.keras # Готовая модель
├── photos/ # Временное хранение фото от бота (опционально)
├── .env # Файл с переменными окружения (опционально)
├── .gitignore # Перечень неотслеживаемых файлов
├── create_models.py # Файл для создания моделей по подготовленным данным (фото)
├── LICENSE # Файл лицензии
├── requirements.txt # Список зависимостей
├── predict.py # Модуль с логикой предсказания
├── prepare_input.py # Подготовка датасетов из фото
├── telegram_bot.py # Основной файл с кодом бота
└── README.md # Этот файл
Пользователь отправляет фото. Бот отвечает: "Фото загружено. Выберите модель для предсказания" с кнопками (cnn_from_scratch, fine_tuning, vgg16_features, vgg16_features_augmentation). После выбора модели бот возвращает:
Метод cnn_from_scratch. Пол: Женщина, уверенность: 87.50%. Точность модели на тестовых данных: 77%.
Этот проект распространяется под лицензией MIT.
Если у вас есть вопросы или предложения, свяжитесь с автором по почте madzone@list.ru или в телеграме: @kostrov_maksim