Это реализация моделей семантической сегментации Pytorch на наборе данных анализа сцены MIT20K (http://sceneparsing.csail.mit.edu/).
ADE20K является крупнейшим набором данных с открытым исходным кодом для семантической сегментации и анализа сцены, выпущенной командой MIT Computer Vision. Перейдите по ссылке ниже, чтобы найти репозиторий для нашего набора данных и реализаций на Caffe и Torch7: https://github.com/csailvision/sceneparsing
Если вы просто хотите поиграть с нашей демонстрацией, попробуйте эту ссылку: http://scenesegmation.csail.mit.edu, вы можете загрузить свою собственную фотографию и анализировать ее!
Вы также можете использовать эту детскую книжку Colab здесь, чтобы возиться с кодом для сегментирования изображения.
Все предварительные модели можно найти по адресу: http://sceneparsing.csail.mit.edu/model/pytorch


Кодирование цветов семантических категорий можно найти здесь: https://docs.google.com/spreadsheets/d/1se8yetb2dets7oupe86fxgyd269pmycawe2mtkuj2w8/edit?usp=sharing
config/defaults.py .Этот модуль вычисляет среднее и стандартное расстояние во всех устройствах во время обучения. Мы эмпирически обнаруживаем, что разумный большой размер партии важен для сегментации. Мы благодарим Цзяйюан Мао за его любезный вклад, пожалуйста, обратитесь к синхронизированному батч-норм-питор для подробностей.
Реализация проста в использовании как:
Для задачи семантической сегментации хорошо сохранять соотношение сторон во время обучения. Таким образом, мы переосмысливаем модуль DataParallel и заставляем его поддерживать распределение данных по нескольким графическим процессорам в DICT Python, чтобы каждый графический процессор мог обрабатывать изображения разных размеров. В то же время, DataLoader также работает по -разному.
Теперь размер партии DataLoader всегда равняется количеству графических процессоров , каждый элемент будет отправлен в GPU. Он также совместим с многопроцессовой. Обратите внимание, что индекс файлов для многопроцессного DataLoader сохраняется в мастер-процессе, который противоречит нашей цели, что каждый работник сохраняет свой собственный список файлов. Таким образом, мы используем трюк, что, хотя мастер -процесс по -прежнему дает DataLoader индекс для функции __getitem__ , мы просто игнорируем такой запрос и отправляем случайный партийный дикт. Кроме того, у нескольких работников, разбитых DataLoader, есть одинаковое семя , вы обнаружите, что несколько работников дадут точно одинаковые данные, если мы напрямую используем вышеупомянутый трюк. Поэтому мы добавляем одну строку кода, которая устанавливает Seed Defaut для numpy.random , прежде чем активировать нескольких работников в DataLoader.
Мы разделили наши модели на энкодер и декодер, где кодеры обычно изменяются непосредственно из классификационных сетей, а декодеры состоят из окончательных свертков и повышения дискретизации. Мы предоставили несколько предварительно настроенных моделей в папке config .
Энкодер:
Декодер:
ВАЖНО: Основным ответом в нашем репозитории является индивидуальная (отличающаяся от таковой в Torchvision). Базовые модели будут автоматически загружены при необходимости.
| Архитектура | Многомасштабное тестирование | Значит iou | Точность пикселя (%) | Общий счет | Скорость вывода (FPS) |
|---|---|---|---|---|---|
| MobilEnetV2Dilated + C1_DeepSup | Нет | 34.84 | 75,75 | 54,07 | 17.2 |
| Да | 33,84 | 76.80 | 55,32 | 10.3 | |
| MobilEnetv2dilated + ppm_deepsup | Нет | 35,76 | 77.77 | 56.27 | 14.9 |
| Да | 36.28 | 78.26 | 57.27 | 6.7 | |
| Resnet18dilated + c1_deepsup | Нет | 33,82 | 76.05 | 54,94 | 13.9 |
| Да | 35,34 | 77.41 | 56.38 | 5.8 | |
| Resnet18dilated + ppm_deepsup | Нет | 38.00 | 78.64 | 58.32 | 11.7 |
| Да | 38.81 | 79,29 | 59,05 | 4.2 | |
| RESNET50DILED + PPM_DEEPSUP | Нет | 41.26 | 79,73 | 60.50 | 8.3 |
| Да | 42.14 | 80.13 | 61.14 | 2.6 | |
| RESNET101DILATED + PPM_DEEPSUP | Нет | 42.19 | 80.59 | 61.39 | 6.8 |
| Да | 42,53 | 80.91 | 61.72 | 2.0 | |
| Upernet50 | Нет | 40.44 | 79,80 | 60.12 | 8.4 |
| Да | 41.55 | 80.23 | 60.89 | 2.9 | |
| Upernet101 | Нет | 42.00 | 80.79 | 61.40 | 7,8 |
| Да | 42,66 | 81.01 | 61.84 | 2.3 | |
| HRNetV2 | Нет | 42.03 | 80.77 | 61.40 | 5.8 |
| Да | 43,20 | 81.47 | 62,34 | 1.9 |
Обучение сравнивается на сервере с 8 графическими процессорами NVIDIA Pascal Titan XP (память 12 ГБ), скорость вывода сравнивается с одним графическим процессором NVIDIA Pascal Titan XP без визуализации.
Код разработан в соответствии с следующими конфигурациями.
[--gpus GPUS] Соответственно)chmod +x demo_test.sh
./demo_test.shЭтот скрипт загружает обученную модель (RESNET50DILED + PPM_DEEPSUP) и тестовое изображение, запускает тестовый скрипт и сохраняет прогнозируемую сегментацию (.png) в рабочую каталог.
$PATH_IMG ), вы можете просто сделать следующее: python3 -u test.py --imgs $PATH_IMG --gpu $GPU --cfg $CFG
chmod +x download_ADE20K.sh
./download_ADE20K.sh$GPUS ) и файл конфигурации ( $CFG ) для использования. Во время обучения контрольные точки по умолчанию сохраняются в папке ckpt . python3 train.py --gpus $GPUS --cfg $CFG --gpus 0-7 или --gpus 0,2,4,6 .Например, вы можете начать с наших предоставленных конфигураций:
python3 train.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 train.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yamlpython3 train.py TRAIN.num_epoch 10 . VAL.visualize True в аргумент в вывод визуализации, как показано в тизере.Например:
python3 eval_multipro.py --gpus GPUS --cfg config/ade20k-mobilenetv2dilated-c1_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet50dilated-ppm_deepsup.yamlpython3 eval_multipro.py --gpus GPUS --cfg config/ade20k-resnet101-upernet.yaml Эта библиотека может быть установлена через pip , чтобы легко интегрироваться с другой кодовой базой
pip install git+https://github.com/CSAILVision/semantic-segmentation-pytorch.git@masterТеперь эту библиотеку можно легко потреблять программно. Например
from mit_semseg . config import cfg
from mit_semseg . dataset import TestDataset
from mit_semseg . models import ModelBuilder , SegmentationModule Если вы найдете полезные модели кода или предварительно обученных, пожалуйста, укажите следующие документы:
Семантическое понимание сцен с помощью набора данных ADE20K. B. Zhou, H. Zhao, X. Puig, T. Xiao, S. Fidler, A. Barriuso и A. Torralba. Международный журнал по компьютерному видению (IJCV), 2018. (Https://arxiv.org/pdf/1608.05442.pdf)
@article{zhou2018semantic,
title={Semantic understanding of scenes through the ade20k dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Xiao, Tete and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
journal={International Journal on Computer Vision},
year={2018}
}
Сцена, разбор через набор данных ADE20K. Б. Чжоу, Х. Чжао, X. Пуиг, С. Фидлер, А. Барруазо и А. Торральба. Компьютерное зрение и распознавание шаблонов (CVPR), 2017. (Http://people.csail.mit.edu/bzhou/publication/scene-parse-camera-ready.pdf)
@inproceedings{zhou2017scene,
title={Scene Parsing through ADE20K Dataset},
author={Zhou, Bolei and Zhao, Hang and Puig, Xavier and Fidler, Sanja and Barriuso, Adela and Torralba, Antonio},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2017}
}