Modelos de segmentação semântica SOTA fácil de usar e personalizáveis com conjuntos de dados abundantes em Pytorch

Muita coisa foi alterada desde 2022, hoje em dia existem até modelos de segmentação do mundo aberto (segmento de qualquer coisa). No entanto, os modelos de segmentação tradicionais ainda estão em demanda por alta precisão e casos de uso personalizado. Este repositório será atualizado de acordo com a nova versão Pytorch, modelos atualizados e documentações sobre como usar com um conjunto de dados personalizado, etc.
Data de lançamento esperada -> maio de 2024
Recursos planejados:
Recursos atuais a serem descartados:
Backbones suportados:
Cabeças/métodos suportados:
Modelos independentes suportados:
Módulos suportados:
Consulte Modelos para benchmarks e modelos pré-treinados disponíveis.
E verifique os backbones para obter os backbones suportados.
Notas: A maioria dos métodos não possui modelos pré-treinados. É muito difícil combinar modelos diferentes com pesos pré-treinados em um repositório e recursos limitados para me re-me re-me re-me.
Cena análise:
Parsing humano:
Face Anurando:
Outros:
Consulte os conjuntos de dados para obter mais detalhes e preparação do conjunto de dados.
Verifique o caderno aqui para testar os efeitos de aumento.
Transformações no nível do pixel:
Transformações de nível espacial:
Em seguida, clone o repositório e instale o projeto com:
$ git clone https://github.com/sithu31296/semantic-segmentation
$ cd semantic-segmentation
$ pip install -e . Crie um arquivo de configuração nas configs . A configuração de amostra para o conjunto de dados Ade20K pode ser encontrada aqui. Em seguida, edite os campos que você pensa se for necessário. Esse arquivo de configuração é necessário para todos os scripts de treinamento, avaliação e previsão.
Para treinar com uma única GPU:
$ python tools/train.py --cfg configs/CONFIG_FILE.yaml Para treinar com várias GPUs, defina o campo DDP no arquivo de configuração como true e execute o seguinte:
$ python -m torch.distributed.launch --nproc_per_node=2 --use_env tools/train.py --cfg configs/ < CONFIG_FILE_NAME > .yaml Certifique -se de definir MODEL_PATH do arquivo de configuração para o seu diretório de modelo treinado.
$ python tools/val.py --cfg configs/ < CONFIG_FILE_NAME > .yaml Para avaliar com várias escalas e flip, a alteração ENABLE o campo em MSF para true e execute o mesmo comando acima.
Para fazer uma inferência, edite os parâmetros do arquivo de configuração abaixo.
MODEL de mudança >> NAME e BACKBONE para o modelo pré -terenciado desejado.DATASET >> NAME para o nome do conjunto de dados, dependendo do modelo pré -treinado.TEST >> MODEL_PATH como pesos pré -teriados do modelo de teste.TEST >> FILE para o caminho do arquivo ou da imagem que você deseja testar.SAVE_DIR . # # example using ade20k pretrained models
$ python tools/infer.py --cfg configs/ade20k.yamlExemplo de resultados dos testes (segformer-b2):

Para converter para Onnx e Coreml, execute:
$ python tools/export.py --cfg configs/ < CONFIG_FILE_NAME > .yamlPara converter em OpenVino e Tflite, consulte 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}
}