Шаг 211.
Глубокое обучение на Python. ... . Обучение сверточной нейронной сети с нуля на небольшом наборе данных. Загрузка данных

    На этом шаге мы рассмотрим особенности выполнения этой операции.

    Набор данных 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 изображений собак

    Этот готовый набор можно взять здесь.


Нам пришлось переконвертировать файлы из JPEG в PNG, потому что некоторые из этих файлов не воспринимались как JPEG-файлы. Затем вручную в Colab создали структуру папок (рис. 2) и скопировали туда переконвертированные графические файлы.


Рис.2. Созданная структура папок в Colab


    Теперь у нас имеется 2000 обучающих, 1000 проверочных и 2000 контрольных изображений. Каждый поднабор содержит одинаковое количество образцов каждого класса: это сбалансированная задача бинарной классификации, соответственно, мерой успеха может служить точность классификации.

    На следующем шаге мы рассмотрим конструирование сети.




Предыдущий шаг Содержание Следующий шаг