В предыдущей части мы подготовили данные, а также рассмотрели средства реализации и архитектуру нейросети (
ссылка). Начнем следующий этап разработки с препроцессинга данных.
Модернизация
Библиотека Keras предоставляется широкий набор инструментов для препроцессинга данных, особенно для изображений. Метод ImageDataGenerator (Рис.7) позволяет расширять набор данных искусственными преобразованиями.
Рис.7. – Генератор данных.
Первое число rotation_range – случайное число, для ротации изображений внутри генератора. Width_shift_range — показывает насколько можно уменьшить значения пикселей по ширине. Height_shift_range – коэффициент на который будет умножаться каждый пиксель для сжатия по высоте. Shear_range – интенсивность сдвига, угол сдвига в направлении против часовой стрелки в градусах. Zoom_range – диапазон для случайного масштабирования. Horizontal_flip – случайное отображение картинки по горизонтали. Vertical_flip – случайное отображение изображения по вертикали. Fill_mode – точки за пределами входных данных заполняются в соответствии с заданным режимом. Data_format – формат данных изображения. Таким образом, нейросеть будет обладать лучшим обобщением, ведь исходный датасет в основном обладает чистыми пикселями, цифры находятся по центру. На реальных фотографиях возможны другие ситуации, когда жест находится в углу или смазан. Процесс обучения переписывается с учетом новых данных.
На Рис.8 график Test, начал убывать, поэтому обучение было остановлено. Если бы для остановки не использовалась метрика val_acc, алгоритм бы продолжил свою работу, в результате получив переобученную нейронную сеть.