# Эндрю Ын о состоянии Computer Vision: от ручного проектирования к Transfer Learning

Источник: https://www.youtube.com/watch?v=c3zw6KI6dLc
Канал: DeepLearning.AI
Опубликовано: 07.11.2017

---

В новом видеоуроке от образовательного проекта DeepLearning.AI профессор Эндрю Ын анализирует современное состояние компьютерного зрения (Computer Vision). Он объясняет, почему эта область всё ещё сильно полагается на сложное проектирование архитектур, в чем принципиальное различие между победой в соревнованиях и созданием реальных продуктов, а также дает советы по использованию предобученных моделей.

## 📊 Дилемма данных: почему компьютерное зрение стоит особняком
[[JUMP:00:25]]

По мнению Эндрю Ына, большинство задач машинного обучения можно расположить на определенном спектре: на одном его конце находятся области с относительно небольшим объемом данных, на другом — задачи, где данных в избытке [00:25]. Компьютерное зрение, несмотря на наличие огромных датасетов, находится в специфическом положении.

Лектор сравнивает CV с другими областями:

*   **Распознавание речи:** Сегодня здесь накоплено достаточно данных относительно сложности задачи [00:39].
*   **Классификация изображений:** Хотя существуют наборы данных, содержащие более миллиона изображений (например, ImageNet), исследователям всё равно часто кажется, что данных недостаточно [01:07]. Это связано с высокой сложностью задачи — алгоритму нужно проанализировать огромное количество пикселей, чтобы понять суть объекта.
*   **Детекция объектов:** Здесь ситуация с данными ещё сложнее. Если для классификации достаточно пометить картинку как «кошка», то для детекции нужно вручную разметить ограничивающие рамки (bounding boxes) [01:35]. Стоимость такой разметки выше, поэтому данных для этих задач исторически меньше [01:49].

Эндрю Ын выводит общую закономерность: чем больше у вас данных, тем меньше потребность в «ручном проектировании» (hand engineering) признаков и архитектур [02:03]. В условиях избытка информации нейросеть может выучить всё необходимое самостоятельно даже на простой архитектуре. Однако в условиях дефицита данных ручное проектирование становится единственным способом добиться высокой производительности [02:57].

## 🛠 Ручное проектирование: искусство или костыль?
[[JUMP:04:18]]

В сообществе иногда пренебрежительно относятся к сложным архитектурным решениям, называя их «хаками». Однако Эндрю Ын не разделяет эту позицию. По его словам, когда данных не хватает, ручное проектирование — это сложная и высококвалифицированная задача, требующая глубокой интуиции [04:18].

Исторически область компьютерного зрения развивалась на очень маленьких датасетах, что и сформировало культуру создания невероятно сложных и тонко настроенных нейросетевых архитектур [04:56]. Даже сегодня, когда объем данных значительно вырос, CV-алгоритмы остаются более сложными в плане выбора гиперпараметров по сравнению со многими другими дисциплинами [05:11].

В качестве инструментов для работы в условиях дефицита данных Эндрю Ын выделяет:

1.  Тщательное проектирование архитектуры сети.
2.  Перенос обучения (Transfer Learning) — метод, который критически важен для таких задач, как детекция объектов [06:06].

## 🏆 Бенчмарки против реальности: как побеждать в соревнованиях
[[JUMP:06:25]]

В академической среде компьютерного зрения существует культ побед на стандартизированных бенчмарках. По мнению Ына, это имеет свои плюсы — сообщество быстрее понимает, какие алгоритмы эффективны, — но порождает методы, которые почти не применимы в реальной эксплуатации (production) [06:57].

Для получения заветных лишних 1-2% точности на соревнованиях исследователи используют два основных приема, которые Эндрю Ын не рекомендует применять в бизнес-задачах:

### Ансамблирование (Ensembling)
Этот метод подразумевает обучение нескольких (от 3 до 15) одинаковых сетей с разной случайной инициализацией и усреднение их прогнозов [07:24].

*   **Плюс:** повышение точности на 1-2% [08:03].
*   **Минус:** время обработки каждого изображения увеличивается в 3-15 раз, что требует огромных вычислительных ресурсов [08:16].
*   **Вердикт:** Эндрю Ын считает, что ансамбли почти никогда не используются в продакшене из-за их медлительности и требований к памяти [08:29].

### Multi-crop на этапе тестирования
Это форма аугментации данных, применяемая не при обучении, а при проверке модели. Например, используется техника «10-crop»: из изображения вырезается центральная часть и четыре угла, затем то же самое делается для зеркально отраженного изображения [09:48]. Все 10 вариантов прогоняются через классификатор, а результаты усредняются.

*   **Минус:** десятикратное замедление работы системы [10:41].
*   **Сравнение:** в отличие от ансамблей, этот метод требует хранения только одной сети в памяти, но всё равно сильно нагружает процессор или GPU.

## 🚀 Практические советы по созданию систем
[[JUMP:11:07]]

Для тех, кто строит практические системы, Эндрю Ын дает ключевой совет: не пытайтесь изобрести велосипед. Архитектуры, которые хорошо работают в одной задаче компьютерного зрения, с большой вероятностью подойдут и для другой [11:07].

Рекомендованный алгоритм действий:

1.  Найдите существующую архитектуру, хорошо показавшую себя в литературе.
2.  Используйте open-source реализацию, если это возможно. В ней уже могут быть учтены тонкие детали вроде графиков снижения скорости обучения (learning rate decay) и другие гиперпараметры [11:33].
3.  Возьмите предобученную модель. Кто-то уже мог потратить недели времени и ресурсы нескольких GPU, чтобы обучить её на миллионе изображений. Тонкая настройка (fine-tuning) такой модели на ваших данных позволит запустить проект гораздо быстрее [11:46].

В завершение лекции автор отмечает, что самостоятельное обучение сетей с нуля оправдано только в том случае, если у вас есть избыточные вычислительные ресурсы или вы стремитесь создать принципиально новый алгоритм [12:00].