Pull to refresh
25
-0.3
Альбина @Rubcov

User

Send message

Интересно, что бы ответил на это сам Lilian Weng, но если опираться на опыт нашей команды, то все зависит от постановки бизнес-задачи. Если важнее понимать, что человек без каски, так как это нарушает ТБ, то максимизируем предсказание этого класса. Как я понял из вопроса,  мы говорим о задаче детекции. Нам ничего не мешает предсказывать и каску, и голову. Каждый из классов имеет достаточно признаков, чтобы модель не путалась.

В идеале нужно серьезно подойти к аннотации данных. Чтобы нейронка не путалась, нужно однозначно определять объект. Один класс — один объект.

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

Что делать в случае распознавания очень близких к друг другу объектов. Если мы говорим о двух видов касок, которые различаются немного и то только спереди, то ничего сделать нельзя: нейронка будет время от времени путать. Тут можно пытаться сделать распознавание по другим критериям: например, люди в определенной спецодежде носят тот или иной вид касок. Эту информацию мы тоже можем учитывать. Еще можно агрегировать данные по времени. Например, у нас есть детекция видео: в этом случае  мы можем собирать предсказания за 10 кадров и определять класс голосованием или каким-нибудь более умным способом.  

Еще есть мемы где нейронка путает собаку породы корги и буханку хлеба. В этом случаи они действительно похожи. В этом случае можно добавить больше изображений корги или добавить в негативные семплы фото буханок хлеба) 

Есть ли фильтрация данных, чтобы понимать, что такие картинки лучше не добавлять? 

Можно использовать методы deep metric learning. Там как раз пытаются решать задачу разделения векторов очень похожих классов.

По ссылке ниже можно ознакомиться:

https://www.youtube.com/watch?v=e2iEriMkg8k&t=398s

для данных примеров:

["окно", "человек"] ["перила", "человек"] ["рука", "телефон"]

Можно учить сегментацию, а не детекцию, но и детекция должна справиться отлично. 

Универсальный ответ: больше чистых данных, в идеале с продакшена, и использовать их в конкретной узкой задаче.

А вот что говорит мой коллега, у которого нет аккаунта:

Вообще, можно просто NMS настроить так, чтобы он при пересечении таких классов не пытался фильтровать один из них, но применял алгоритм раздельно. Это если с точки зрения исключительно постобработки подойти.

А так, мне кажется, это просто вопрос того, как разметка выглядит. Если допустить, что для класса голова и для класса каска абсолютно одинаковые bbox'ы, то с точки зрения модели эти классы в целом идентичны, конечно, как ни называй.  Но обычно все же те же разные ракурсы и прочее позволяют отделить именно bbox'ы головы/руки от каски/телефона. Даже если один бокс частично пересекается или находится в другом, то они все же не идентичны.  Никто же не видит проблемы, когда обучают модель, чтобы, например, детектить машину и людей в ней отдельно. Не говоря уже о том, что все же не всякая голова в датасете обычно в каске, и не во всякой руке держат телефон etc. 

Ну и про сегментацию поинт хороший, да

Information

Rating
Does not participate
Registered
Activity

Specialization

Project Manager, HR Director
Senior
People management
Building a team
Organization of business processes
Planning
Startup management
Project planning
Negotiation
Team recruitment
Specialists recruitment
Recruitment