Прежде всего: я думаю, что не существует простого правила для оценки размера выборки, но, по крайней мере, это зависит от:
1.Качество ваших изображений
Я скачал изображения и думаю, что вам нужно предварительно обработать их, прежде чем вы сможете использовать их, чтобы уменьшить «сложность проблемы».В некоторых проектах, в которых я работал с биологическими данными, удаление фона (изображение - фильтр нижних частот) было ключом к получению лучших результатов.Но вы должны обязательно удалить / обрезать область за пределами области вашего интереса (например, ленту и линейку).Я бы попытался получить как можно более чистый набор данных (включая ручные настройки cv2 / gimp / и т. Д.), Чтобы сфокусировать сеть для решения «правильной проблемы». После этого вы можете применить некоторые случайные искажения ксделайте так, чтобы он также работал с нечеткими / плохими / реалистичными изображениями.
2.Как вы работаете с вашими данными
Есть несколько хитростей, которые позволяют вам «расширить» ваш набор данных.Иногда очень полезно позволить генератору метод обрезать случайные маленькие патчи из ваших входных данных.Это позволяет вам работать с большим количеством пакетов (на небольших графических процессорах) и дает вашей сети больше «разнообразия» (просто подумайте о задаче conv2d: если вы не используете случайную обрезку, ваши фильтры будут скользить по одним и тем же областям снова и снова(на том же изображении)).По той же причине: примените случайное искажение, переверните и поверните изображения .
3.Сетевая архитектура
В вашем случае я бы предпочел архитектуру U-Net с последним выводом conv2d из 3 (ваших классов) функциональных карт, окончательной активацией softmax иКатегориальная_кросентропия позволяет вам играть с глубиной, потому что иногда вам нужны сложные архитектуры для решения проблемы (около 100%), но в вашем случае вы просто хотите увидеть первый рабочий результат.Таким образом, меньше слоев и простая архитектура также могут помочь вам добиться успеха.Может быть, есть некоторые обученные веса сети для U-Net, которые отвечают вашим требованиям (например, поиск по kaggle).Потому что также полезно (для сокращения необходимых вам данных) использовать « Transfer Learning » -> использовать первые уровни сети (веса), которые уже обучены.Используя семантическую сегментацию, первые фильтры станут чем-то вроде обнаружения края для большинства заданных проблем / изображений.
4.Ваша ментальная модель «точных результатов»
Это самая сложная часть .. потому что она развивается во время вашего проекта.Например.в тот же момент, когда ваши сети начинают хорошо работать с предварительно обработанными входными изображениями, вы начнете думать об изменениях архитектуры / данных, чтобы они работали и с нечеткими изображениями.Вот почему вы должны начать с выполнимой проблемы, но всегда улучшайте свой набор данных (включая редкие виды корней) и настраивайте сетевую архитектуру шаг за шагом .