Обсуждение выигрышной модели для набора данных американского языка жестов Kaggle
Основные моменты: Мы вошли в тройку лучших команд-победителей с точностью 1 на соревновании Лукаса Бивальда, которое проходило в Сан-Диего. Конкурс спонсировался компанией Weights and Biases. Результаты на https://app.wandb.ai/mlclass/asl-july25/
Борьба с моделями
- Модели трансферного обучения хороши, но их сложно интегрировать с графическими процессорами во время соревнований в прямом эфире. Ниже то, к чему мы готовились перед турниром
- У нас были проблемы с моделями обучения Deep Transfer, которые требовали изменить размер изображения в градациях серого на 3 канала и использовать трансферное обучение, которое не сработало и заняло время.
- Мы пытались увеличить изображение, но это также не рекомендуется.
- Наконец-то попробовали приведенную ниже модель, и увеличение данных позволило нам достичь наилучшей производительности с точностью до 1,0.
Обзор моделей трансферного обучения Paper space
- Размеры входных данных чрезвычайно важны, но должен быть баланс между выбором входных параметров и тем, сколько времени занимает извлечение признаков. Неглубокая NN быстро обучается во всех случаях, но извлечение признаков — дорогостоящий процесс.
- Две модели resnetInceptionv2 и Deep Transfer Learning являются наиболее эффективными моделями, обе они не используют увеличение данных.
- Настройка гиперпараметров
- Изменение скорости обучения
- Изменение размера ввода, дорогостоящая операция
- Уровень отчисления
- Смена оптимизатора
- Изменение количества эпох
- Использование глубокого трансферного обучения с NN [мой товарищ по команде Вэйхэ Ван является экспертом в этом]
- Подход Frozen Layers ??
Давайте углубимся в модель и архитектуру модели
Извлечение данных
Использование увеличения изображения
Модель после нормализации и горячего кодирования
Одно горячее кодирование меток и нормализация являются стандартными шагами
_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_1 (Conv2D) (None, 28, 28, 32) 320 _________________________________________________________________ conv2d_2 (Conv2D) (None, 28, 28, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 14, 14, 64) 0 _________________________________________________________________ dropout_1 (Dropout) (None, 14, 14, 64) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 14, 14, 128) 73856 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 7, 7, 128) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 7, 7, 128) 147584 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 3, 3, 128) 0 _________________________________________________________________ dropout_2 (Dropout) (None, 3, 3, 128) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 1152) 0 _________________________________________________________________ dense_1 (Dense) (None, 1500) 1729500 _________________________________________________________________ dropout_3 (Dropout) (None, 1500) 0 _________________________________________________________________ dense_2 (Dense) (None, 25) 37525 ================================================================= Total params: 2,007,281 Trainable params: 2,007,281 Non-trainable params: 0 _________________________________________________________________