- Вопрос или проблема
- Ответ или решение
- 1. Создание полностью новой модели машинного обучения
- 2. Изменение или добавление слоев к существующей модели
- 3. Обучение новой модели на основе необработанных изображений и меток вырезанных людей
- Рекомендация по выбору подхода
- Рекомендованные библиотеки для работы
- Запросы на точность
Вопрос или проблема
Я экспериментировал с рядом различных моделей машинного обучения, используемых для оценки позы. Большинство из них выдают тепловую карту и смещения для обнаруженных человек(ов) на изображении. Мне действительно нравится производительность и точность модели многопозной оценки здесь.
Что бы мне хотелось сделать дальше, так это создать модель, аналогичную этой, за исключением того, что она должна маркировать каждую позу обнаруженного человека(ов). Существует несколько различных реализаций caffe/pytorch/tensorflow, из которых можно выбрать. Я подумал о том, как к этому подойти, и у меня есть несколько различных идей:
- Создать совершенно новую модель машинного обучения и использовать помеченный выход модели оценки позы для её обучения.
- Изменить или добавить слои к модели машинного обучения, чтобы изменить выходные данные. (Не уверен, как это делается)
- Отказаться от модели оценки позы и обучить новую модель для прямой оценки с использованием сырых изображений/меток обрезанных людей. Это будет зависеть от другого метода обнаружения каждого человека.
Я хочу выбрать путь наименьшего сопротивления, но мне также важно время, необходимое для сбора/обработки данных, и, что наиболее важно, точность/производительность модели. Есть ли опытные специалисты по машинному обучению/данным, которые могут ответить на следующие вопросы?
- Какую стратегию мне выбрать? преимущества/недостатки
- Какая библиотека машинного обучения предлагает функции для этого.
- Мое предположение заключается в том, что вариант 1 или 2 будет более точным, чем вариант 3. Я прав?
Я работал над аналогичной задачей обнаружения объектов, поэтому моё предложение – это Перенос Обучения.
i) Оптимальный способ – использовать перенос обучения. Он позволяет нам строить точные модели с экономией времени. С переносом обучения, вместо того чтобы начинать процесс обучения с нуля, вы начинаете с шаблонов, которые были изучены при решении другой проблемы. Таким образом, вы используете предыдущие знания и избегаете начала с нуля.
Предобученная модель – это модель, которая была обучена на большом эталонном наборе данных для решения проблемы, аналогичной той, которую мы хотим решить. Соответственно, из-за вычислительных затрат на обучение таких моделей, распространенной практикой является импортирование и использование моделей из опубликованной литературы (например, VGG, Inception, MobileNet).
Несколько предобученных моделей, используемых в процессе переноса обучения, основаны на крупных свёрточных нейронных сетях (CNN).
Когда вы переиспользуете предобученную модель для своих нужд, вы начинаете с удаления оригинального классификатора, затем добавляете новый классификатор, который соответствует вашим целям, и, наконец, вам нужно тонко настроить вашу модель согласно одной из трёх стратегий:
1. Обучите модель.
2. Обучите некоторые слои и оставьте замороженными.
3. Заморозьте свёрточную базу.
Подходы к процессу переноса обучения:
1) Выберите предобученную модель.
2) Классифицируйте вашу задачу в соответствии с матрицей размера-симметрии.
3) Тонкая настройка вашей модели.
ii) Tensorflow предлагает модель зрения, названную PoseNet.
PoseNet – это модель зрения, которая может использоваться для оценки позы человека на изображении или видео, оценивая, где находятся основные суставы тела. Отсюда вы можете заморозить модель и тонко настроить её, или же использовать другую предобученную модель изображения (например, mobilenet, resnet).
iii) Оценка напрямую из сырых изображений сначала требует от вас идентифицировать или обнаружить людей, поэтому это зависит от другой модели.
Ответ или решение
Расширение функциональности модели машинного обучения для оценки поз: Подходы и Рекомендации
Вопрос, связанный с расширением функциональности модели многопозиционной оценки поз, является актуальным в области компьютерного зрения и машинного обучения. Рассмотрим три предложенных подхода и оценим их преимущества и недостатки.
1. Создание полностью новой модели машинного обучения
Преимущества:
- Вы сможете адаптировать модель под свои конкретные нужды, включая уникальные архитектуры и метрики потерь.
- Гибкость в выборе архитектуры и применения различных техник, таких как регуляризация.
Недостатки:
- Необходимость в большом объёме обучающих данных, что требует значительных временных и трудозатрат.
- Более длительный процесс разработки и тестирования в сравнении с другими подходами.
2. Изменение или добавление слоев к существующей модели
Преимущества:
- Сохранение обученных параметров модели позволит достичь высоких показателей точности.
- Вы можете сосредоточиться на доработке выходных данных без затрат времени на обучение всей модели с нуля.
Недостатки:
- Необходимость глубоких знаний о внутреннем устройстве модели и ее слоев.
- Риск переобучения отдельных компонентов модели, если количество данных для дообучения недостаточно велико.
3. Обучение новой модели на основе необработанных изображений и меток вырезанных людей
Преимущества:
- Возможность построения более целевой модели, исключительно ориентированной на задачу определения поз.
Недостатки:
- Этот подход требует предварительной детекции людей, что усложняет процесс в сравнении с другими методами.
- Кроме того, параметры могут быть менее точными, так как прямая оценка поз не базируется на предварительном обучении.
Рекомендация по выбору подхода
Наилучший путь в вашей ситуации – использовать Transfer Learning (перенос обучения). Этот метод позволяет эффективно использовать уже обученные модели на больших наборов данных для достижения высоких результатов, что особенно полезно, если у вас ограниченное количество данных для вашей специализации.
-
Выбор предварительно обученной модели: Начните с модели, обученной на общих наборов данных (например, COCO или MPII). В вашем случае можно использовать такие архитектуры, как OpenPose, PoseNet или другие модели, доступные в TensorFlow и PyTorch.
-
Настройка модели: Уберите оригинальный классификатор и добавьте новый, адаптированный для вашей задачи. Это позволит вам сохранить базовое обучение и улучшить его под ваш конкретный случай.
-
Финетюнинг (Fine-tuning): После добавления нового классификатора, вам нужно будет выполнить тонкую настройку модели. Это можно сделать различными способами:
- Обучить всю модель (если данных достаточно).
- Обучить только последние слои, оставив остальные замороженными.
- Заморозить всю свёрточную базу и обучать только новый классификатор.
Рекомендованные библиотеки для работы
- TensorFlow и его модель PoseNet, которая идеально подходит для задач оценки поз. Вы можете переобучить эту модель для вашей специфической задачи.
- PyTorch также предлагает множество предварительно обученных моделей и предоставляет гибкость в изменении архитектуры.
Запросы на точность
Ваше предположение о том, что методы на основе переноса обучения (варианты 1 и 2) будут более точными, чем создание модели с нуля (вариант 3), в целом верно. Перенос обучения позволяет использовать уже существующие знания, что значительно экономит время и повышает качество результатов.
В итоге, с учетом ваших интересов, рекомендаций по базовым методам и предпочтения по временным затратам, подход с использованием Transfer Learning является оптимальным решением для улучшения вашей модели многопозиционной оценки поз.