На этом шаге мы рассмотрим особенности выполнения этой операции.
Набор данных Dogs vs. Cats, который мы будем использовать, не поставляется в составе Keras. Он был создан в ходе состязаний по распознаванию образов в конце 2013 года, когда сверточные нейронные сети еще не заняли лидирующего положения, и доступен здесь.
Этот набор содержит изображения в формате JPEG со средним разрешением. На рисунке 1 показано несколько примеров.
Рис.1. Примеры изображений из набора Dogs vs. Cats. Размеры не были изменены: изображения имеют разные размеры, ракурсы съемки и т. д.
Неудивительно, что соревнование по классификации изображений кошек и собак на сайте Kaggle в 2013 году выиграли участники, использовавшие сверточные нейронные сети. Лучшие результаты достигали точности 95% . В нашем примере мы попытаемся приблизиться к этой точности (в следующих шагах), даже притом, что для обучения моделей будем использовать менее 10% данных, которые были доступны участникам состязаний.
Данный набор содержит 25 000 изображений кошек и собак (по 12 500 для каждого класса). После загрузки и распаковки архива мы создадим новый набор, разделенный на три поднабора: обучающий набор с 1000 образцов каждого класса, проверочный набор с 500 образцами каждого класса и контрольный набор с 1000 образцов каждого класса. "Зачем?" - спросите вы. Дело в том, что многие наборы изобразительных данных, с которыми вы столкнетесь в своей карьере, содержат всего несколько тысяч образцов, а не десятки тысяч. Наличие большего количества данных усложнило бы задачу, поэтому рекомендуется проводить обучение с использованием небольшого набора данных.
После разделения набора данных должна получиться следующая структура каталогов:
cats_vs_dogs_small/ ...train/ ......cat/ <-- Содержит 1000 изображений кошек ......dog/ <-- Содержит 1000 изображений собак ...validation/ ......cat/ <-- Содержит 500 изображений кошек ......dog/ <-- Содержит 500 изображений собак ...test/ ......cat/ <-- Содержит 1000 изображений кошек ......dog/ <-- Содержит 1000 изображений собак
Этот готовый набор можно взять здесь.
Рис.2. Созданная структура папок в Colab
Теперь у нас имеется 2000 обучающих, 1000 проверочных и 2000 контрольных изображений. Каждый поднабор содержит одинаковое количество образцов каждого класса: это сбалансированная задача бинарной классификации, соответственно, мерой успеха может служить точность классификации.
На следующем шаге мы рассмотрим конструирование сети.