Modèles de segmentation sémantique SOTA Facile à utiliser et personnalisables avec abondants ensembles de données à Pytorch

Beaucoup de choses ont été modifiées depuis 2022, de nos jours, il existe même des modèles de segmentation en monde ouvert (segment tout). Cependant, les modèles de segmentation traditionnels sont toujours en demande de précision élevée et de cas d'utilisation personnalisée. Ce référentiel sera mis à jour en fonction de la nouvelle version Pytorch, des modèles mis à jour et des documentations sur la façon d'utiliser avec un ensemble de données personnalisé, etc.
Date de sortie attendue -> mai 2024
Caractéristiques planifiées:
Caractéristiques actuelles à jeter:
Épine dorsale pris en charge:
Têtes / méthodes prises en charge:
Modèles autonomes pris en charge:
Modules pris en charge:
Reportez-vous aux modèles de repères et aux modèles pré-formés disponibles.
Et consultez les épine dorsales pour les épine dorsales pris en charge.
Remarques: La plupart des méthodes n'ont pas de modèles pré-formés. Il est très difficile de combiner différents modèles avec des poids pré-formés dans un référentiel et une ressource limitée pour me rétracter.
Analyse de scène:
Analyse humaine:
Analyse du visage:
Autres:
Reportez-vous aux ensembles de données pour plus de détails et la préparation des ensembles de données.
Vérifiez le cahier ici pour tester les effets d'augmentation.
Transformes au niveau des pixels:
Transformes au niveau spatial:
Ensuite, clonez le repo et installez le projet avec:
$ git clone https://github.com/sithu31296/semantic-segmentation
$ cd semantic-segmentation
$ pip install -e . Créez un fichier de configuration dans configs . Un exemple de configuration pour l'ensemble de données ADE20K peut être trouvé ici. Modifiez ensuite les champs que vous pensez si cela est nécessaire. Ce fichier de configuration est nécessaire pour tous les scripts de formation, d'évaluation et de prédiction.
S'entraîner avec un seul GPU:
$ python tools/train.py --cfg configs/CONFIG_FILE.yaml Pour s'entraîner avec plusieurs GPU, définissez le champ DDP dans le fichier config sur true et exécutez comme suit:
$ python -m torch.distributed.launch --nproc_per_node=2 --use_env tools/train.py --cfg configs/ < CONFIG_FILE_NAME > .yaml Assurez-vous de définir MODEL_PATH du fichier de configuration dans votre répertoire de modèle formé.
$ python tools/val.py --cfg configs/ < CONFIG_FILE_NAME > .yaml Pour évaluer avec plusieurs échelles et flip, modifiez le champ ENABLE dans MSF vers true et exécutez la même commande que ci-dessus.
Pour effectuer une inférence, modifiez les paramètres du fichier de configuration ci-dessous.
MODEL >> NAME et BACKBONE vers le modèle pré-entraîné souhaité.DATASET >> NAME en nom de jeu de données en fonction du modèle pré-entraîné.TEST >> MODEL_PATH à des poids pré-étendus du modèle de test.TEST >> FILE par rapport au dossier de fichier ou d'image que vous souhaitez tester.SAVE_DIR . # # example using ade20k pretrained models
$ python tools/infer.py --cfg configs/ade20k.yamlExemples de résultats des tests (SegFormer-B2):

Pour convertir en onnx et coreml, exécutez:
$ python tools/export.py --cfg configs/ < CONFIG_FILE_NAME > .yamlPour convertir en OpenVino et Tflite, voir Torch_Optimize.
# # ONNX Inference
$ python scripts/onnx_infer.py --model < ONNX_MODEL_PATH > --img-path < TEST_IMAGE_PATH >
# # OpenVINO Inference
$ python scripts/openvino_infer.py --model < OpenVINO_MODEL_PATH > --img-path < TEST_IMAGE_PATH >
# # TFLite Inference
$ python scripts/tflite_infer.py --model < TFLite_MODEL_PATH > --img-path < TEST_IMAGE_PATH > @article{xie2021segformer,
title={SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers},
author={Xie, Enze and Wang, Wenhai and Yu, Zhiding and Anandkumar, Anima and Alvarez, Jose M and Luo, Ping},
journal={arXiv preprint arXiv:2105.15203},
year={2021}
}
@misc{xiao2018unified,
title={Unified Perceptual Parsing for Scene Understanding},
author={Tete Xiao and Yingcheng Liu and Bolei Zhou and Yuning Jiang and Jian Sun},
year={2018},
eprint={1807.10221},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@article{hong2021deep,
title={Deep Dual-resolution Networks for Real-time and Accurate Semantic Segmentation of Road Scenes},
author={Hong, Yuanduo and Pan, Huihui and Sun, Weichao and Jia, Yisong},
journal={arXiv preprint arXiv:2101.06085},
year={2021}
}
@misc{zhang2021rest,
title={ResT: An Efficient Transformer for Visual Recognition},
author={Qinglong Zhang and Yubin Yang},
year={2021},
eprint={2105.13677},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{huang2021fapn,
title={FaPN: Feature-aligned Pyramid Network for Dense Image Prediction},
author={Shihua Huang and Zhichao Lu and Ran Cheng and Cheng He},
year={2021},
eprint={2108.07058},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{wang2021pvtv2,
title={PVTv2: Improved Baselines with Pyramid Vision Transformer},
author={Wenhai Wang and Enze Xie and Xiang Li and Deng-Ping Fan and Kaitao Song and Ding Liang and Tong Lu and Ping Luo and Ling Shao},
year={2021},
eprint={2106.13797},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@article{Liu2021PSA,
title={Polarized Self-Attention: Towards High-quality Pixel-wise Regression},
author={Huajun Liu and Fuqiang Liu and Xinyi Fan and Dong Huang},
journal={Arxiv Pre-Print arXiv:2107.00782 },
year={2021}
}
@misc{chao2019hardnet,
title={HarDNet: A Low Memory Traffic Network},
author={Ping Chao and Chao-Yang Kao and Yu-Shan Ruan and Chien-Hsiang Huang and Youn-Long Lin},
year={2019},
eprint={1909.00948},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@inproceedings{sfnet,
title={Semantic Flow for Fast and Accurate Scene Parsing},
author={Li, Xiangtai and You, Ansheng and Zhu, Zhen and Zhao, Houlong and Yang, Maoke and Yang, Kuiyuan and Tong, Yunhai},
booktitle={ECCV},
year={2020}
}
@article{Li2020SRNet,
title={Towards Efficient Scene Understanding via Squeeze Reasoning},
author={Xiangtai Li and Xia Li and Ansheng You and Li Zhang and Guang-Liang Cheng and Kuiyuan Yang and Y. Tong and Zhouchen Lin},
journal={ArXiv},
year={2020},
volume={abs/2011.03308}
}
@ARTICLE{Yucondnet21,
author={Yu, Changqian and Shao, Yuanjie and Gao, Changxin and Sang, Nong},
journal={IEEE Signal Processing Letters},
title={CondNet: Conditional Classifier for Scene Segmentation},
year={2021},
volume={28},
number={},
pages={758-762},
doi={10.1109/LSP.2021.3070472}
}
@misc{yan2022lawin,
title={Lawin Transformer: Improving Semantic Segmentation Transformer with Multi-Scale Representations via Large Window Attention},
author={Haotian Yan and Chuang Zhang and Ming Wu},
year={2022},
eprint={2201.01615},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{yu2021metaformer,
title={MetaFormer is Actually What You Need for Vision},
author={Weihao Yu and Mi Luo and Pan Zhou and Chenyang Si and Yichen Zhou and Xinchao Wang and Jiashi Feng and Shuicheng Yan},
year={2021},
eprint={2111.11418},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{wightman2021resnet,
title={ResNet strikes back: An improved training procedure in timm},
author={Ross Wightman and Hugo Touvron and Hervé Jégou},
year={2021},
eprint={2110.00476},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{liu2022convnet,
title={A ConvNet for the 2020s},
author={Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie},
year={2022},
eprint={2201.03545},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{li2022uniformer,
title={UniFormer: Unifying Convolution and Self-attention for Visual Recognition},
author={Kunchang Li and Yali Wang and Junhao Zhang and Peng Gao and Guanglu Song and Yu Liu and Hongsheng Li and Yu Qiao},
year={2022},
eprint={2201.09450},
archivePrefix={arXiv},
primaryClass={cs.CV}
}