Репозиторий содержит набор скриптов для помощи в предварительной обработке тренировочных данных для машинного обучения. Репозиторий не содержит самих данных.
Репозиторий содержит субмодули.
Клонирование:
git clone --recurse-submodules https://github.com/Seeneva/ml-scripts.git
Или инициализация субмодулей:
git submodule init
Репозиторий содержит ./setup.py
и ./requirements.txt
со списком Python зависимостей.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -r requirements.txt
Эта ML модель используется для нахождения объектов на страницах комикса.
ID класса | Имя | Описание |
---|---|---|
0 | speech_baloon | Текстовый балун |
1 | panel | Панель на странице комикса |
- Поместите все ваши данные (изображения страниц комиксов) в
./yolo/dataset
директорию. Эта директория не должна содержать поддиректорий. - Аннотируйте каждую страницу комикса в этой директории, используя формат YOLO и поддерживаемые классы. Для этого можно воспользоваться например labelImg.
- Запустите
./yolo_width_split.py
скрипт чтобы разделить изображение 'двустороннего разворота' на отдельные изображения поменьше. Оригинальные изображения будут перемещены в./yolo/data_wide_backup
директорию. - (Необязательно) Запустите
./yolo_stats.py
скрипт, чтобы подсчитать информацию о вашем наборе данных. - Запустите
./yolo_train_data.py
скрипт, чтобы сгенерировать необходимые файлы для тренировки YOLO модели. Все файлы будут помещены в./yolo
директорию. - Создайте и поместите YOLO
yolo-obj.cfg
файл в./yolo
директорию. - Тренируйте модель, используя YOLOv4-tiny darknet.
- (Необязательно) Преобразуйте модель в формат TensorFlow Lite:
git clone -b config https://github.com/Seeneva/tensorflow-yolov4-tflite.git converter
python ./converter/save_model.py --weights ${YOUR_YOLO_BACKUP_PATH}/yolo-obj_final.weights --output ${YOUR_TF_BACKUP_PATH}/tf --score_thres 0.7 --input_size 480x736 --model yolov4 --tiny --framework tflite
python ./converter/convert_tflite.py --weights ${YOUR_TF_BACKUP_PATH}/tf --output ${YOUR_TF_BACKUP_PATH}/tf/seeneva.tflite --input_size 480x736 --quantize_mode float16
Модель OCR используется для распознавания текста внутри текстовых балунов на страницах комикса.
Вам нужно установить Tesseract и убедиться, что ваше окружение готово к запуску make
команд.
- Запустите
./yolo_extract_objects.py --class_id 0
, чтобы обрезать все текстовые балуны из вашего YOLO набора данных (страниц комиксов) и поместить их изображения в./yolo/objects/0
директорию. - Теперь вам нужно обрезать каждую текстовую строку на полученных балунах и сохранить эти строки как отдельные *.png файлы в
./tesseract/${LANG_NAME}_seeneva-ground-truth
директорию. - Создайте *.gt.txt файл для каждого *.png файла в
./tesseract/${LANG_NAME}_seeneva-ground-truth
. Для автоматизации можно использовать./tesseract_cteate_txt.py
скрипт.
- Перепишите текстовое содержимое каждого *.png файла в соответствующий *.gt.txt файл. Как правило все буквы должны быть заглавными. Так, для картинки 1.png (пример выше) вы должны записать
PROGRAMMED
в файл 1.gt.txt. - Запустите
./tesseract_check_data.py
, чтобы проверить, что с данными всё в порядке. - Запустите
./tesseract_train.sh
для начала тренировки. - (Необязательно) Преобразуйте модель в формат fast (int):
combine_tessdata -c ./tesstrain/data/${LANG_NAME}_seeneva.traineddata
Copyright © 2021 Sergei Solodovnikov under the Apache License 2.0.
Замечание. Лицензии зависимостей могут отличаться. Для большей информации посмотрите 3RD-PARTY-LICENSES.