Transfer learning: чужая сеть для своей задачи
Самый практичный приём современного CV: не учить сеть с нуля, а взять уже обученную и приспособить под себя.
Transfer learning (перенос обучения) — использование сети, обученной на большой задаче, как основы для новой задачи с малым объёмом данных.
Проблема: данных и ресурсов мало
Обучить мощную CNN с нуля — это миллионы размеченных картинок, дни на дорогих GPU и опыт. У типичного проекта (распознать 5 видов своей продукции) нет ни миллиона картинок, ни такого бюджета. Учить с нуля на 500 фото — гарантированное переобучение.
Идея: признаки переносимы
Вспомните иерархию признаков из раздела про CNN: ранние слои выучивают универсальные вещи — края, текстуры, простые формы. Эти признаки полезны почти для любой картинки, не только для тех классов, на которых сеть обучалась. Значит, сеть, обученную на ImageNet (1000 классов, миллионы фото), можно взять как готовый «экстрактор признаков» и приспособить под свою задачу.
Два режима
| Режим | Что делаем | Когда |
| Feature extraction | замораживаем все слои-экстракторы, обучаем только новый классификатор сверху | очень мало данных |
| Fine-tuning | дообучаем и часть верхних слоёв экстрактора с маленьким шагом | данных побольше |
На практике: берут ResNet, обученную на ImageNet, отрезают её последний слой-классификатор (на 1000 классов) и ставят свой — на нужное число классов. Тело сети либо замораживают, либо аккуратно дообучают.
# Псевдокод идеи (PyTorch-стиль, для чтения)
model = resnet50(pretrained=True) # сеть с ImageNet
for param in model.parameters():
param.requires_grad = False # заморозили экстрактор
model.fc = Linear(2048, num_classes) # свой классификатор сверху
# обучаем только model.fc на своих данных
Почему это так выгодно
- Мало данных: хватает сотен примеров вместо миллионов.
- Быстро: обучается минуты-часы, а не дни.
- Качественно: готовые признаки сильнее, чем выученные с нуля на крошечном датасете.
Transfer learning — стандарт индустрии. Почти никто не учит CV-модели с нуля: берут предобученную из библиотеки (torchvision, timm) и дообучают. Та же идея позже расцвела в мире LLM, где «дообучение фундаментальной модели» стало основным рабочим приёмом.
Итог
- Transfer learning: берём сеть, обученную на большой задаче, под свою.
- Работает, потому что ранние признаки (края, текстуры) универсальны.
- Feature extraction (заморозка) — при очень малых данных; fine-tuning — когда данных больше.
- Это стандарт: с нуля CV-модели почти не учат.