Разметил с помощью cvat 100 изображений для тренировки, 20 для валидации и 10 для теста. Собственно, это было самое сложное. Я ОЧЕНЬ не люблю нудную работу (Именно поэтому и стал автоматизатором 8) )Даже завидую людям которые работают\подрабатывают разметчиками. Хотя, так как это простой текстовый блок и не пришлось выделять по контуру - по времени вышло где-то час. Мангу специально взял не сложную, главное было понять общий подход.
Нейросеть сделал на основе YOLOv8. Как мне показалось, самая простая модель для сегментирования. Код простой до ужаса:
!pip install ultralytics
from ultralytics import YOLO
model = YOLO('yolov8s-seg.pt')
results = model.train(data = '/path/to/dataset/', epochs=400, batch=16)
И все! Модель обучалась где-то 20 минут и довольно уверенно находила блоки теста на страницах. Но, по факту, она бесполезна. Не сказать чтобы совсем, но применить ее в проекте будет сложно. В процессе просмотра обучающих видео я понял что данную идею лучше пока отложить.
Во-первых это чужая сеть 8) Я не против подхода: "Не нужно писать то что уже написано до тебя", но не в данном случае. Проект так-то и задумывался как основа для изучения нейросетей. И реализовывать это на сторонних продуктах этому противоречит
Во-вторых, архитектура неудачна. Слишком много удаляется и корректно восстановить фон будет сложнее. Лучше смотреть в сторону генеративно-состязательные сети для восстановления фона и easyocr для распознавания текста. Ну как вариант, если не получится обучить на большом размере добавить нейронку для отделения фреймов манги. В общем случае решение будет таким:
Разбиваем на фреймы -> ищем текст в фрейме -> скармливаем маску и фрейм нейросети для удаления текста и восстановления фона.
Пошел копать в сторону генеративно-состязательные сети (GAN) так как примеров я пока что-то не нашел
Вторая версия нейросети: