Семантическая сегментация объектов дорожного движения

 MMSegmentation представляет из себя инструментарий с открытым исходным кодом для работы с семантической сегментацией, основан на Pytorch. Данный проект позволяет получить доступ к множествам моделей для сегментации, как уже тренированными на датасетах, так и открытыми для запуска. В нём для каждого датасета прописывается отдельный класс модели, которая будет тренироваться на нём. 

При первых попытках посмотреть результаты готовых моделей были видны явные недостатки на изображениях с датасетов Kitti и Mapillary. На изображениях с Kitti часто пешеходы определялись неверно, область, обозначающая пешехода, охватывала сильно большую площадь. При использовании Mapillary появлялись очевидные проблемы в местах с сильным затемнением или тенью. Для тестирования использовалась модель Deeplabv3+, тренированная на датасете CityScapes. 

 

Изображения с датасета Kitti


Изображения с датасета Mapillary 

Так же были протестированы модели PSPNet, но результаты так же были неудовлетворительными. 

Была предпринята попытка тренировать модель на подготовленных датасетах с нуля. Но данный инструментарий оказался не удобным для этого. Каждый класс для работы с датасетом прописывается по шаблону, который не подходит для работы с датасетами Kitti и Mapillary. Так же нужно описывать новую модель для каждого датасета, а так как мы тренируем на изображениях из сразу трёх датасетов, то мы не имеем возможности предоставить правильную обработку для изображений и для масок.  

При тестировании возможности использовать модель, описанную в MMSegmentation, в нашем пайплайне также возникли проблемы. Одной из них является то, что в классе из MMSegmentation для выполнения функции forward требуется два аргумента: изображения и img_metas -- список параметров изображения.  


Пример объявления класса модели   

Для улучшения сегментации было решено тренировать одну из нейронных сетей, представленных в MMSegmentation, с нуля. Для этого была выбрана модель DeepLabv3+. Данная модель является улучшением модели DeepLabv3, которая использует spatial pyramid pooling module, с помощью структуры энкодер-декодер и Atrous Conv 

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

 

Способы работы spatial pyramid poolingэнкодер-декодер и Atrous Conv 

Модуль энкодера кодирует многоуровневую контекстную информацию посредством применения Atrous Conv в нескольких масштабах, в то время как простой, но эффективный декодер уточняет результаты сегментации вдоль границ объекта. 



Пример использования модели на изображении.