UpSkill & Arteon
UpSkill UpSkill
Я тут дрона с камерой собираю, самодельного, который сам фотки пейзажей делает и сортирует, благодаря фильтру на основе машинного обучения. Не поможешь мне подправить систему обработки изображений, пока я данные для обучения перерабатываю?
Arteon Arteon
Звучит как интересная задача. Начни с того, чтобы убедиться, что твой датасет сбалансирован – одинаковое количество солнечных, облачных и туманных сцен, чтобы модель не отдавала предпочтение какому-то одному варианту. При дообучении держи learning rate небольшим, где-то 1e-4, и следи за validation loss, чтобы не было переобучения. Еще попробуй добавить небольшой шаг data augmentation: случайные изменения яркости и контрастности – это может имитировать небольшие изменения погоды. Если наткнешься на плато, небольшая правка сети – например, 1x1 convolution после последнего feature map – может помочь лучше улавливать мелкие детали. Держи размер батча умеренным, чтобы GPU память была стабильной, и не забудь нормализовать значения пикселей к тому же диапазону, который ты использовал при обучении. Пиши, как выглядят кривые потерь, и тогда будем думать, что менять.
UpSkill UpSkill
Отличный список, спасибо. Сейчас запущу свою панель мониторинга для пайплайна данных – каждый файл будет иметь хеш, метку погоды и временную печать. Напишу небольшой скрипт, который перемешает и разделит данные в соотношении 80/10/10 для обучения/валидации/тестирования, и проведу быструю проверку, чтобы в каждом разбиении было примерно 200 солнечных, 200 облачных и 200 туманных изображений. Буду использовать скорость обучения 1e-4 с косинусным убыванием и подключу TensorBoard для отслеживания потерь в процессе обучения и валидации в реальном времени. Для аугментации просто немного изменю яркость ±15% и контрастность ±10% за один проход – без сложных преобразований. Добавление свёрточной сети 1x1 после последнего свёрточного слоя в моём списке задач; это даст модели возможность пересмешивать информацию о каналах и улавливать тонкие грани. Размер батча оставлю 32, чтобы уложиться в ограничения памяти GPU, и сразу же нормализую значения до [0,1]. Выложу кривые потерь в приватный канал, и там будем подстраивать. Если модель затормозится, подниму скорость обучения обратно до 5e-4 и посмотрю, не выйдет ли она из плато. Если у тебя есть ещё какие-нибудь приёмы для очень быстрой сходимости – кидай их мне.
Arteon Arteon
Звучит неплохо. Вот ещё один небольшой приём, чтобы ускорить процесс: попробуй добавить небольшую "разминочную" фазу — запусти первые несколько эпох с learning rate 1e-5 на несколько шагов, а потом плавно увеличь до 1e-4. Это даст оптимизатору более мягкое начало и часто сокращает время до оптимального результата. И ещё, если у тебя много похожих сцен, добавь mini batch-norm с momentum 0.1 — это может стабилизировать градиенты. Следи за графиком обучения; если там будет резкое падение на 10-й эпохе, скорее всего, косинусная декада зашла в фазу с низким learning rate. Удачи, напиши, что получится.
UpSkill UpSkill
Отлично, добавлю разогрев на три эпохи с 1e-5, потом перейду на 1e-4. И еще подкину небольшой слой Batch Normalization (momentum 0.1) после последнего свёрточного слоя. Поиграю с планировщиком, чтобы косинусная декомпозиция не снижала LR слишком рано – если увижу сильное падение на десятой эпохе, смещу кривую декомпозиции. Сообщу, как только графики появятся, чтобы решили, нужен ли еще один 1x1 сверточный слой. Спасибо за подсказку, это не даст GPU выходить за пределы своих возможностей, но при этом позволит повысить точность.