Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

ML_3_LAB_CV

План работы команды из 5 человек по лабораторной работе ML_3

1. Цель работы

Нужно не просто "обучить детектор", а организовать серию управляемых экспериментов, чтобы:

  1. сравнить варианты нормализации изображения;
  2. проверить влияние аугментаций;
  3. уменьшить влияние дисбаланса классов;
  4. получить как можно более высокий mAP@50;
  5. подготовить понятную историю развития решения для итоговой презентации.

С учетом формулировки задания оптимальная стратегия для команды из 5 человек такая: не делить людей по моделям, а делить их по крупным областям ответственности, чтобы работа шла параллельно и не терялась воспроизводимость экспериментов.


2. Глобальные этапы работы

Этап A. Подготовка данных и инфраструктуры

На этом этапе команда приводит проект в рабочее состояние: определяет формат датасета, способ разбиения на train/val, единый шаблон запуска экспериментов, формат логирования метрик и таблицу результатов. Здесь же нужно проверить датасет на очевидные проблемы: дисбаланс классов, пустые изображения, возможные дубли боксов, качество аннотаций редких классов.

Итог этапа:

  • есть единая структура проекта;
  • есть baseline-конфиг;
  • есть таблица классов и их частот;
  • есть правило, как команда фиксирует результаты каждого запуска.

Этап B. Baseline-модель

Сначала нужен честный baseline без сложных улучшений. Он будет точкой отсчета для всех следующих экспериментов. Лучше взять одну стабильную детекторную архитектуру и не менять ее слишком рано, иначе будет трудно понять, что именно дало прирост.

Итог этапа:

  • есть первая обученная модель;
  • известны базовые mAP@50, loss-кривые и поведение по классам;
  • понятно, какие классы проседают сильнее всего.

Этап C. Эксперименты с нормализацией

По заданию требуется сравнить:

  1. no normalization;
  2. Local Contrast Normalization;
  3. Local Response Normalization.

Это должен быть отдельный блок экспериментов, где все остальные условия фиксированы: одна и та же модель, одинаковый split, одинаковое число эпох, одинаковые seed и гиперпараметры по возможности.

Итог этапа:

  • есть честное сравнение трех подходов;
  • есть вывод, влияет ли нормализация на скорость сходимости, стабильность обучения и итоговую метрику.

Этап D. Эксперименты с аугментациями

Нужно протестировать как минимум 3 аугментации из списка задания. Практически лучше идти от простого к сложному:

  1. Horizontal Flip;
  2. ColorJitter;
  3. Affine;
  4. MixUp;
  5. Mosaic.

Сначала проверяются по отдельности легкие аугментации, потом собираются пайплайны. Сложные техники вроде MixUp и Mosaic стоит включать только после появления сильного baseline, иначе команда потратит время на шумные эксперименты.

Итог этапа:

  • есть сравнение отдельных аугментаций;
  • есть 1-2 лучших пайплайна;
  • зафиксировано, что именно ускоряет/замедляет обучение и что улучшает редкие классы.

Этап E. Борьба с дисбалансом и редкими классами

Это один из ключевых этапов, потому что в задании отдельно подчеркнут сильный class imbalance. Здесь стоит проверить несколько подходов:

  • взвешивание классов в loss;
  • oversampling изображений с редкими классами;
  • balanced sampler / class-aware sampling;
  • усиленные аугментации именно для редких классов;
  • чистка/проверка разметки редких классов;
  • подбор confidence/NMS/score thresholds под редкие объекты.

Итог этапа:

  • есть отдельные эксперименты именно по rare classes;
  • есть понятное объяснение, каким способом удалось подтянуть слабые классы без внешних данных.

Этап F. Анализ ошибок и финальный тюнинг

После того как найдены лучшие нормализация, аугментации и стратегия работы с дисбалансом, команда переходит к ошибкам модели:

  • какие классы чаще путаются;
  • где больше false positives и false negatives;
  • какие размеры объектов детектируются плохо;
  • влияет ли время суток/освещение/ракурс;
  • не мешают ли дубли боксов и шумные аннотации.

Здесь же собирается финальная конфигурация и готовится итоговая сабмиссия.

Итог этапа:

  • есть финальный конфиг;
  • есть хотя бы одна отправка на leaderboard;
  • есть объяснение, как решение эволюционировало.

Этап G. Презентация и защита

Презентация должна показывать не только лучший результат, но и путь к нему:

  • гипотезы;
  • какие методы пробовали;
  • как они повлияли на результат;
  • кто за что отвечал;
  • как менялось решение по этапам.

3. Разделение команды из 5 человек

Лучше назначить не просто "каждому по куску кода", а сделать 5 устойчивых зон ответственности.

Участник Основная зона Что делает Главный результат
Человек 1 Data Lead анализ датасета, подготовка split, проверка аннотаций, статистика классов, поиск проблем в данных чистый и понятный датасет, отчеты по дисбалансу
Человек 2 Baseline & Training Lead поднимает базовый пайплайн обучения, следит за конфигами, логами, воспроизводимостью стабильный baseline и единый шаблон запуска
Человек 3 Normalization Lead реализует и тестирует 3 варианта нормализации, оформляет сравнение таблица и выводы по normalization
Человек 4 Augmentation Lead реализует пайплайн аугментаций, тестирует отдельные и комбинированные схемы лучшие augmentation-конфиги
Человек 5 Imbalance & Evaluation Lead работает с редкими классами, анализирует ошибки, собирает финальную конфигурацию и сабмиссию прирост по rare classes, финальная сборка, leaderboard submission

Такое деление хорошее потому, что у каждого есть собственный блок, но все блоки естественно стыкуются между собой.


4. Как именно взаимодействуют эти 5 ролей

Человек 1. Data Lead

Это "входная точка" проекта. Его задача не обучать модель первым, а обеспечить, чтобы все остальные работали с корректными данными. Он:

  • изучает структуру датасета;
  • строит распределение классов;
  • отмечает редкие классы;
  • проверяет, есть ли пустые изображения;
  • по возможности выявляет дублирующиеся боксы;
  • готовит train/val split;
  • делает короткий документ: "что важно знать о датасете".

Без этого этапа можно легко получить ложные выводы из экспериментов.

Человек 2. Baseline & Training Lead

Это технический "каркас" всей работы. Он:

  • выбирает стартовую архитектуру детектора;
  • настраивает обучение;
  • делает baseline без сложных улучшений;
  • стандартизирует названия запусков;
  • собирает метрики в одну таблицу;
  • следит, чтобы все эксперименты были сопоставимы.

Именно этот участник должен отвечать за воспроизводимость: одинаковые seeds, единый split, единый способ валидации.

Человек 3. Normalization Lead

Этот участник берет один узкий, но обязательный блок задания и делает его аккуратно. Он:

  • внедряет 3 режима нормализации;
  • проверяет, не ломают ли они формат входа модели;
  • запускает эксперименты на baseline-настройках;
  • фиксирует влияние на скорость сходимости и итоговый mAP@50;
  • делает краткий вывод: что реально имеет смысл оставлять.

Его сильная сторона в том, что он не распыляется на весь проект, а закрывает обязательный пункт задания качественно.

Человек 4. Augmentation Lead

Этот участник работает с аугментациями как с отдельной исследовательской веткой. Он:

  • реализует минимум 3 требуемые аугментации;
  • сначала тестирует базовые варианты по отдельности;
  • потом собирает 1-2 комбинированных пайплайна;
  • сравнивает влияние не только на метрику, но и на стабильность обучения;
  • документирует, какие аугментации оказались полезны, а какие вредили.

Особенно важно, чтобы он не смешивал все аугментации сразу, иначе нельзя будет сделать внятные выводы для отчета.

Человек 5. Imbalance & Evaluation Lead

Это участник, который отвечает за "добивание" качества. Он:

  • тестирует способы помощи редким классам;
  • смотрит per-class метрики;
  • анализирует ошибки лучшей модели;
  • подбирает финальную конфигурацию;
  • отвечает за submission и финальную таблицу результатов.

Именно он должен подготовить ответ на самый ценный вопрос задания: как получить приемлемое качество на редких классах без внешних данных.


5. Рекомендуемый порядок работы по времени

Ниже не календарный план, а логика спринтов. Ее легко адаптировать под ваш дедлайн.

Спринт 1. Запуск проекта

В начале все 5 человек синхронизируются и договариваются о технической базе: какая модель, где хранятся конфиги, как называются эксперименты, кто куда пишет результаты.

В этот же период:

  • Человек 1 делает аудит данных;
  • Человек 2 поднимает baseline;
  • остальные помогают с воспроизводимостью и подготовкой окружения.

Главная цель спринта: получить первую рабочую модель и понять стартовую метрику.

Спринт 2. Обязательные эксперименты

Дальше работа распараллеливается:

  • Человек 3 гоняет normalization-эксперименты;
  • Человек 4 гоняет augmentation-эксперименты;
  • Человек 5 начинает первые тесты методов против дисбаланса;
  • Человек 2 держит общий тренировочный пайплайн стабильным;
  • Человек 1 помогает интерпретировать результаты через статистику классов и качество разметки.

Главная цель спринта: не просто улучшить метрику, а понять, какой фактор реально влияет на качество.

Спринт 3. Комбинация лучших идей

Когда появляются первые победители среди normalization, augmentation и imbalance-методов, команда перестает гонять все подряд и собирает лучшие идеи в 2-3 сильные конфигурации.

На этом этапе важно:

  • не запускать хаотичные комбинации;
  • фиксировать только осмысленные гипотезы;
  • сохранять историю эволюции решения.

Главная цель спринта: собрать кандидатов на финальную модель.

Спринт 4. Ошибки, тюнинг, сабмиссия

На финальном этапе команда анализирует ошибки лучшей модели и делает точечные правки. После этого отправляет финальный результат и параллельно готовит презентацию.

Главная цель спринта: финальная метрика и убедительный рассказ о проделанной работе.


6. Что должно быть у команды в итоге

К концу работы у вас должны быть не только веса модели, но и пакет артефактов:

  1. baseline-результат;
  2. сравнение трех normalization-подходов;
  3. сравнение минимум трех аугментаций;
  4. отдельный блок про class imbalance;
  5. финальная лучшая конфигурация;
  6. хотя бы одна submission;
  7. таблица "эксперимент -> гипотеза -> результат -> вывод";
  8. материалы для презентации.

7. Какую отчетность вести по ходу работы

Чтобы потом не восстанавливать все по памяти, советую вести одну общую таблицу экспериментов. Для каждого запуска фиксировать:

  • ID эксперимента;
  • гипотезу;
  • модель и конфиг;
  • тип нормализации;
  • аугментации;
  • способ борьбы с дисбалансом;
  • число эпох;
  • mAP@50;
  • per-class quality;
  • краткий вывод.

Если это делать с самого начала, финальная презентация собирается намного легче.


8. Практичный вариант распределения задач по людям

Если нужно максимально прикладное распределение, можно закрепить работу так:

Человек 1 Отвечает за данные, статистику, визуализации датасета и проверку аннотаций.

Человек 2 Отвечает за код обучения, baseline, логи, конфиги, сохранение чекпоинтов.

Человек 3 Отвечает за эксперименты с нормализацией и промежуточный отчет по ним.

Человек 4 Отвечает за аугментации и сравнение augmentation-пайплайнов.

Человек 5 Отвечает за rare classes, анализ ошибок, финальную сборку лучшего решения и submission.


9. Что сказать на защите про вклад каждого

Чтобы на презентации роли выглядели убедительно, можно формулировать так:

  • участник 1 обеспечил анализ и подготовку данных;
  • участник 2 построил воспроизводимый baseline и инфраструктуру экспериментов;
  • участник 3 исследовал влияние normalization;
  • участник 4 исследовал влияние augmentations;
  • участник 5 улучшал качество на редких классах, анализировал ошибки и собирал финальную модель.

Такая формулировка выглядит профессионально и показывает, что работа была действительно командной.


10. Главный организационный совет

Самая частая ошибка в таких лабораторных: команда слишком рано начинает "перебирать все подряд". Лучше работать по схеме:

  1. честный baseline;
  2. изолированные эксперименты;
  3. сравнение;
  4. комбинация лучших идей;
  5. финальный тюнинг.

Тогда у вас будет и хороший шанс поднять метрику, и сильная история для защиты.


11. Вопросы, которые стоит уточнить заранее

Если захотите сделать план еще точнее, полезно заранее ответить на 3 вопроса:

  1. какая у вас будет базовая модель: YOLO, Faster R-CNN, SSD или другая;
  2. какой у команды реальный дедлайн по дням;
  3. какие у вас вычислительные ресурсы: один GPU, несколько GPU или только Colab.

Если эти вводные появятся, план можно быстро превратить уже в календарный график по дням и в список конкретных экспериментов.


12. Альтернативный вариант: работа в мини-группах

Да, разбиться на мини-группы можно, и для этой лабораторной это даже очень практичный формат. Для команды из 5 человек оптимальная схема обычно не 3 + 2, а 2 + 2 + 1, где пятый участник не "остается один", а выполняет роль интегратора и координатора финального качества.

Почему формат мини-групп здесь удобен

Лабораторная объемная и состоит не из одной задачи, а из нескольких исследовательских блоков:

  • данные и baseline;
  • normalization;
  • augmentations;
  • class imbalance;
  • error analysis;
  • submission и презентация.

Если делать все строго индивидуально, есть риск, что участники будут слишком зависимы друг от друга. Мини-группы лучше подходят там, где нужен постоянный обмен: один человек пишет код, второй параллельно проверяет метрики, логи и корректность гипотез.

Рекомендуемая схема 2 + 2 + 1

Мини-группа 1. Data + Baseline

Состав: 2 человека.

Зона ответственности:

  • анализ датасета;
  • разбиение train/val;
  • проверка качества разметки;
  • baseline-модель;
  • единый формат запуска и логирования экспериментов.

Внутри мини-группы роли можно разделить так:

  • первый участник больше отвечает за данные и статистику;
  • второй больше отвечает за код обучения и baseline.

Их общий результат: стабильная стартовая точка, на которую потом опираются все остальные.

Мини-группа 2. Methods Group

Состав: 2 человека.

Зона ответственности:

  • normalization-эксперименты;
  • augmentation-эксперименты;
  • сравнение конфигов;
  • сборка лучших сочетаний методов.

Внутри мини-группы роли можно разделить так:

  • первый участник ведет normalization;
  • второй ведет augmentations;
  • затем они вместе собирают лучшие комбинации.

Их общий результат: доказанный прирост или осмысленный вывод, какие методы реально помогают.

Участник 5. Integration + Rare Classes + Final Submission

Состав: 1 человек, но не в изоляции, а как связующее звено между двумя мини-группами.

Зона ответственности:

  • методы борьбы с дисбалансом;
  • контроль per-class метрик;
  • анализ ошибок лучших моделей;
  • подготовка финальной конфигурации;
  • leaderboard submission;
  • сбор результатов для презентации.

Это хороший формат, потому что редкие классы и финальная оценка требуют смотреть на результаты обеих мини-групп сразу.


13. Как организовать работу мини-групп по этапам

Этап 1. Общий старт всей командой

Сначала все 5 человек работают синхронно и договариваются о базовых правилах:

  • какую модель берете за основу;
  • как называются эксперименты;
  • где храните логи и таблицу результатов;
  • какие метрики фиксируете;
  • какой split считается официальным.

На этом этапе нельзя расходиться слишком рано, иначе потом результаты окажутся несопоставимыми.

Этап 2. Расход по мини-группам

После появления baseline работа делится:

  • мини-группа 1 продолжает улучшать качество данных и следить за стабильностью обучения;
  • мини-группа 2 тестирует normalization и augmentations;
  • участник 5 параллельно начинает блок по rare classes и следит за per-class quality.

Этап 3. Обратная сборка

Когда мини-группа 2 находит лучшие методы, они не сразу идут в финал. Сначала:

  • мини-группа 1 проверяет, что лучшие методы корректно встраиваются в основной пайплайн;
  • участник 5 оценивает, помогают ли они именно редким классам, а не только общей метрике.

Только после этого команда собирает финальные конфиги.

Этап 4. Финальный цикл

На последнем этапе все снова частично объединяются:

  • одна мини-группа помогает с последними обучениями;
  • вторая готовит визуализации и выводы;
  • участник 5 собирает финальный результат, submission и основу презентации.

14. Плюсы и риски такого деления

Плюсы

  • у людей меньше ощущения, что каждый работает в одиночку;
  • проще обсуждать гипотезы внутри пары;
  • код и результаты проверяются не одним человеком, а сразу двумя;
  • меньше риск, что целый блок "провиснет", если один участник занят.

Риски

  • мини-группы могут начать жить "каждая в своем мире";
  • результаты могут стать несравнимыми, если группы меняют слишком много параметров сразу;
  • пятый участник может оказаться перегружен, если на него свалить и аналитику, и оформление, и submission.

Чтобы этого избежать, нужно раз в 1-2 дня делать короткую синхронизацию всей командой и вести общую таблицу экспериментов.


15. Самый удачный практический вариант

Если говорить совсем прикладно, я бы рекомендовал именно такую схему:

Мини-группа A Подготовка данных, baseline, стабильность пайплайна.

Мини-группа B Normalization и augmentations.

Интегратор Rare classes, error analysis, итоговая сборка лучшей модели, submission и каркас презентации.

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors