Отправьте статью сегодня! Журнал выйдет 26 июля, печатный экземпляр отправим 30 июля
Опубликовать статью

Молодой учёный

Разработка компактной сверточной нейронной сети для бинарной классификации изображений по времени суток

Научный руководитель
Информационные технологии
07.06.2025
14
Поделиться
Библиографическое описание
Тарасов, С. Ю. Разработка компактной сверточной нейронной сети для бинарной классификации изображений по времени суток / С. Ю. Тарасов. — Текст : непосредственный // Молодой ученый. — 2025. — № 23 (574). — С. 9-11. — URL: https://moluch.ru/archive/574/126450/.


Представлена методика построения двоичного классификатора для разделения изображений на «дневные» и «ночные» с применением компактной свёрточной нейронной сети. Рассмотрены этапы подготовки данных: изменение размерности, нормализация по статистикам ImageNet и базовые аугментации. Описана архитектура SimpleCNN, а также процесс обучения с использованием Adam, CrossEntropyLoss, StepLR. Показано, что даже при ограниченном объёме данных (20 %) модель достигает валидационной точности ≈ 97 %, а на полном наборе ≈ 99.4 %.

Ключевые слова: двоичная классификация, свёрточная нейронная сеть, аугментации, нормализация ImageNet, Early Stopping, SimpleCNN.

Современные системы компьютерного зрения активно используют двоичные классификаторы, позволяющие разделять изображения по ключевому признаку (сценарий «да/нет», «объект/фон» и пр.). Задача отделения «дневных» и «ночных» кадров лежит в основе систем интеллектуального видеонаблюдения, автомобильных регистраторов и мобильных приложений. Многие существующие методы опираются на анализ гистограмм яркости или простые пороговые алгоритмы, однако они плохо работают при изменяющемся освещении (рассвет, сумерки, фонари). С другой стороны, свёрточные нейронные сети (CNN) автоматически извлекают информативные признаки (текстуры, оттенки, локальные контрасты) и обеспечивают высокую точность даже в пограничных случаях.

В данной статье описан полный цикл создания двоичного классификатора «день/ночь» с нуля: от подготовки и аугментации датасета до проектирования компактной CNN-архитектуры, обучения и оценки качества. Воспользовавшись публичным датасетом Day-Night v2.0, мы провели серию экспериментов, сначала обучив SimpleCNN на 20 % данных, затем — на полном объёме, и сравнили результаты.

Обзор методов классификации и обоснование выбора SimpleCNN.

Задача разделения изображений на «дневные» и «ночные» широко встречается в системах видеонаблюдения, автомобильных регистраторах и мобильных приложениях. Классические подходы дают быструю оценку, но страдают при резких перепадах освещённости, бликах и тенях. Более продвинутые решения на основе HOG+SVM учитывают локальные градиенты, однако требуют ручной настройки параметров и плохо справляются с «пограничными» кадрами (рассвет/сумерки).

С появлением сверточных нейронных сетей (CNN) приоритет сместился в сторону глубокого обучения: архитектуры ResNet, VGG, MobileNet и EfficientNet показывают высокую точность за счёт автоматического извлечения признаков текстуры, контраста и цветовой температуры. ResNet [1] (Residual Networks) использует остаточные связи для борьбы с затуханием градиента и позволяет строить десятки–сотни слоёв, но содержит десятки миллионов параметров, требуя значительных вычислительных ресурсов. VGG представляет серию из 3×3 свёрток и FC-слоёв; модель VGG-16 имеет более 130 млн параметров, что делает её тяжёлой для обучения без мощных GPU. MobileNetV2/V3 и EfficientNet-Lite оптимизированы под мобильные устройства: depthwise separable convolutions уменьшают вычисления, однако точность на «пограничных» кадрах остаётся ниже, чем у более глубоких сетей.

Обоснование выбора собственной компактной CNN [2] (SimpleCNN):

— Лёгковесность и скорость обучения. SimpleCNN состоит из трёх последовательных блоков (Conv2d→ReLU→MaxPool2d) и двух FC-слоёв. Общий объём параметров — сотни тысяч (в отличие от миллионов у ResNet), что позволяет проводить обучение на CPU или одном GPU за несколько минут.

— Простота кода и воспроизводимость. Реализация на PyTorch занимает около 15 строк: настройка числа фильтров (16→32→64), размер ядра (3×3), а затем FC-слои (64000→128→2). Это упрощает эксперименты с гиперпараметрами: learning rate, оптимизатор (Adam), batch size.

— Достаточное качество для «день/ночь». Эксперименты показали, что при 20 % данных SimpleCNN достигает валидационной точности ≈ 97 %, а при полном наборе — ≈ 99.4 %. На задаче, где классы хорошо разделяются по признаку яркости и локального контраста, дополнительная глубина даёт лишь незначительный выигрыш за счёт больших затрат.

— Возможность анализа влияния объёма данных. Быстрое обучение позволяет провести серию экспериментов: `load_partial_data(0.2)` использует 20 % изображений, `load_full_data()` — 100 %. Это помогает оценить риски переобучения и необходимость добавления «пограничных» кадров.

Таким образом, SimpleCNN обеспечивает оптимальный баланс между скоростью, простотой настройки и качеством классификации «день/ночь», делая его предпочтительным выбором в условиях ограниченных ресурсов и требований к быстрой итерации экспериментов.мы видеонаблюдения и безопасность.

Выбор данных и предварительная обработка

Для обучения двоичного классификатора «день/ночь» был использован датасет Day-Night v2.0 [3], представленный на платформе Roboflow. Исходная коллекция насчитывает около 11 000 изображений, разделённых на папки train (~ 82 %, ≈ 9300 снимков), valid (~ 12 %, ≈ 1200) и test (~ 6 %, ≈ 650). В каждой из директорий после удаления класса «twilight» (сумерки) остались две подпапки — «day» и «night», содержащие примерно равное число примеров, что позволяет избежать дисбаланса классов и не требовать особых весовых корректировок в функции потерь. Структура каталогов позволяет загружать данные напрямую через стандартный инструмент ImageFolder, где «day» и «night» автоматически становятся метками 0 и 1.

Предварительная обработка включает следующие шаги. Сначала все изображения приводятся к размеру 224×224 пикселей, затем применяется преобразование в тензор (ToTensor), нормализующее пиксели в диапазон [0, 1], и стандартная нормализация по статистикам ImageNet [4] (mean= [0.485, 0.456, 0.406], std= [0.229, 0.224, 0.225]) для согласования с предобученными моделями и устойчивости к широкому спектру визуальных сцен. Для тренировочного набора дополнительно внедрены базовые аугментации: случайное горизонтальное отражение (RandomHorizontalFlip) и поворот в диапазоне ± 15 °, а также цветовые искажения (ColorJitter) с изменением яркости, контраста и насыщенности до 20 %. Эти меры позволяют моделировать вариативность условий съёмки, от облачности и наклона камеры до искусственного освещения ночных сцен, без искажения ключевого признака освещённости.

Разбиение данных реализовано через две функции: одна загружает весь набор (load_full_data), другая — только 20 % тренировочных примеров для анализа влияния объёма (load_partial_data). При полной загрузке batch_size установлен на 14, num_workers = 8 и shuffle=True для обучения, что обеспечивает скорость около 5.5 итераций в секунду и эффективное использование GPU. Валидационные и тестовые загрузчики работают без перемешивания с теми же batch_size и num_workers. Для частичной загрузки batch_size увеличивается до 32, num_workers снижается до 4, а подборка формируется случайным отбором индексов, что помогает исследовать динамику обучения на ограниченном объёме. Один и тот же набор аугментаций и нормализации применяется в обоих режимах, что гарантирует корректное сравнение результатов и выявление рисков переобучения при разной плотности обучающей выборки.

Проектирование, реализация и обучение модели

Для классификации «день/ночь» была создана компактная свёрточная сеть SimpleCNN, содержащая три блока Conv→ReLU→MaxPool (16, 32, 64 каналов) и два полносвязных слоя (64000→128→2). Всего в модели несколько сотен тысяч параметров. В качестве функции потерь использовался CrossEntropyLoss, оптимизатор — Adam (lr=1e-4), а StepLR (step_size=5, γ=0.5) понижает learning rate каждые пять эпох для стабилизации сходимости

Процесс обучения состоит из последовательных проходов по эпохам: на каждой эпохе модель обновляет свои параметры на основе расчёта ошибки на тренировочном наборе и затем оценивает точность на валидации. При улучшении валидационной метрики сохраняются текущие веса, а если точность не растёт три эпохи подряд — обучение останавливается досрочно.

Для анализа объема данных проведены два эксперимента. При 20 % выборки (batch_size=32, num_workers=4) сеть за 10 эпох достигла val_acc ≈ 0.9718 и train_acc ≈ 0.9730, что свидетельствует об устойчивости на ограниченном наборе. На полном датасете (batch_size=14, num_workers=8) скорость обучения выросла до ≈ 5.5 итераций/сек, и за 10 эпох модель показала val_acc ≈ 0.9937, train_acc ≈ 0.9948.

На тесте при 20 % данных точность ≈ 0.972, при 100 % — ≈ 0.993. Precision, recall и F1 на полном наборе превысили 0.99, а ошибки связаны с «пограничными» кадрами (рассвет/сумерки). Для улучшения предлагается transfer learning, расширение датасета «twilight»-кадрами и более разнообразные аугментации.

З аключение

В данной работе показано, что компактная архитектура SimpleCNN способна эффективно решать задачу бинарной классификации «день/ночь» при минимальных вычислительных затратах. Проведённые эксперименты подтвердили, что даже на 20 % данных модель демонстрирует устойчивую валидационную точность ≈ 97 %, а на полном наборе достигает ≈ 99,4 %. Быстрая сходимость и небольшое число параметров позволяют оперативно проводить эксперименты и избегать длительного обучения, характерного для тяжёлых предобученных сетей.

Полученные результаты свидетельствуют об адекватности выбранного подхода и указывают на перспективы дальнейшего развития: применение transfer learning, включение «пограничных» кадров (рассвет/сумерки) и расширенные аугментации. В целом, SimpleCNN и описанная методика могут служить надёжной основой для задач, где важны скорость обучения и высокая точность при классификации по времени суток.

Литература:

  1. He, K. Deep Residual Learning for Image Recognition / K. He, X. Zhang, S. Ren, J. Sun // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2016. — С. 770–778. — Текст: непосредственный.
  2. Гудфеллоу, Я. Глубокое обучение / Я. Гудфеллоу, И. Бенджио, А. Курвилль. — 2-е изд. — Москва: ДМК, 2018. — 652 c. — Текст: непосредственный.
  3. Day-night v2.0. — Текст: электронный // Robollow: [сайт]. — URL: https://universe.roboflow.com/emma-feoktistova/day-night-2.0/dataset/1/download (дата обращения: 04.06.2025).
  4. Deng, J. ImageNet: A large-scale hierarchical image database / J. Deng, W. Dong, R. Socher // 2009 IEEE Conference on Computer Vision and Pattern Recognition. — 2009. — С. 248–255. — Текст: непосредственный.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
двоичная классификация
свёрточная нейронная сеть
аугментации
нормализация ImageNet
Early Stopping
SimpleCNN
Молодой учёный №23 (574) июнь 2025 г.
Скачать часть журнала с этой статьей(стр. 9-11):
Часть 1 (стр. 1-67)
Расположение в файле:
стр. 1стр. 9-11стр. 67

Молодой учёный