Ma mise en œuvre de BiseNetv1 et BiseNetv2.
Mious et FPS sur Cityscapes Val Set:
| aucun | SS | ssc | MSF | mscf | FPS (FP32 / FP16 / INT8) | lien |
|---|---|---|---|---|---|---|
| Bisenetv1 | 75.44 | 76.94 | 77.45 | 78.86 | 112/239/435 | télécharger |
| Bisenetv2 | 74.95 | 75.58 | 76,53 | 77.08 | 103/161/198 | télécharger |
Mieux sur Cocostuff Val2017 Set:
| aucun | SS | ssc | MSF | mscf | lien |
|---|---|---|---|---|---|
| Bisenetv1 | 31.49 | 31.42 | 32.46 | 32,55 | télécharger |
| Bisenetv2 | 30.49 | 30,55 | 31.81 | 31.73 | télécharger |
mious sur le jeu de valoir ADE20K:
| aucun | SS | ssc | MSF | mscf | lien |
|---|---|---|---|---|---|
| Bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | télécharger |
| Bisenetv2 | 32,53 | 32.43 | 33.23 | 31.72 | télécharger |
Conseils:
SS signifie évaluation à une seule échelle, SSC signifie l'évaluation des cultures à échelle unique, MSF signifie une évaluation multi-échelle avec une augmentation FLIP, et le MSCF signifie une évaluation des cultures à échelle multiples avec évaluation FLIP. Les échelles d'évaluation et la taille des cultures de l'évaluation à échelles multiples peuvent être trouvées dans les configurations.
Le FPS est testé de manière différente du papier. Pour plus d'informations, veuillez consulter ici.
Les auteurs de BiseNetv2 ont utilisé COCOSTUFF-10K, tandis que j'utilisais COCOSTUFF-123K (je ne sais pas comment dire, tout simplement des images de train 118k et 5k Val comme détection d'objet). Ainsi, les résultats peuvent être différents du papier.
Les auteurs n'ont pas signalé de résultats sur l'ADE20K, donc il n'y a pas de paramètres de formation officiels, ici je fournis simplement un résultat "Make It fonctionne". Peut-être que les résultats sur ADE20K peuvent être stimulés avec de meilleurs paramètres.
Le modèle a une grande variance, ce qui signifie que les résultats de la formation à plusieurs reprises varieraient dans une marge relativement importante. Par exemple, si vous entraînez BiseNetv2 sur les paysages urbains à plusieurs reprises, vous observerez que le résultat de l'évaluation SS de BiseNetv2 varie entre 73.1-75.1.
tensorrt
Vous pouvez aller à Tensorrt pour plus de détails.
ncnn
Vous pouvez aller à NCNN pour plus de détails.
openvino
Vous pouvez aller à OpenVino pour plus de détails.
les tis
Triton Inference Server (TIS) fournit une solution de service de service. Vous pouvez aller à Tis pour plus de détails.
Ma plate-forme est comme ceci:
Avec un poids pré-entraîné, vous pouvez exécuter l'inférence sur une seule image comme ceci:
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
Cela exécuterait l'inférence sur l'image et enregistrerait l'image de résultat sur ./res.jpg .
Ou vous pouvez exécuter l'inférence sur une vidéo comme celle-ci:
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
Cela générerait un fichier de segmentation en tant que res.mp4 . Si vous souhaitez lire à partir de la caméra, vous pouvez définir --input camera_id plutôt que input ./video.mp4 .
1.Cityscapes
Inscrivez-vous et téléchargez l'ensemble de données sur le site officiel. Décompressez-les ensuite dans le répertoire datasets/cityscapes :
$ mv /path/to/leftImg8bit_trainvaltest.zip datasets/cityscapes
$ mv /path/to/gtFine_trainvaltest.zip datasets/cityscapes
$ cd datasets/cityscapes
$ unzip leftImg8bit_trainvaltest.zip
$ unzip gtFine_trainvaltest.zip
2.Ocostuff
Téléchargez train2017.zip , val2017.zip et stuffthingmaps_trainval2017.zip Split à partir du site officiel. Alors faites comme suivant:
$ unzip train2017.zip
$ unzip val2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/images
$ mv val2017/ /path/to/BiSeNet/datasets/coco/images
$ unzip stuffthingmaps_trainval2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/labels
$ mv val2017/ /path/to/BiSeNet/datasets/coco/labels
$ cd /path/to/BiSeNet
$ python tools/gen_dataset_annos.py --dataset coco
3.ADE20K
Téléchargez ADEChallengeData2016.zip à partir de ce site Web et décompressez-le. Ensuite, nous pouvons déplacer les dossiers non compressés vers datasets/ade20k , et générer les fichiers TXT avec le script que j'ai préparé pour vous:
$ unzip ADEChallengeData2016.zip
$ mv ADEChallengeData2016/images /path/to/BiSeNet/datasets/ade20k/
$ mv ADEChallengeData2016/annotations /path/to/BiSeNet/datasets/ade20k/
$ python tools/gen_dataset_annos.py --dataset ade20k
4. ensemble de données personnalisé
Si vous souhaitez vous entraîner sur votre propre ensemble de données, vous devez d'abord générer des fichiers d'annotation avec le format comme celui-ci:
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
Chaque ligne est une paire d'échantillons d'entraînement et un chemin d'image de vérité au sol, qui sont séparés par une seule virgule , .
Je vous recommande de vérifier les informations de votre ensemble de données avec le script:
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
Cela imprimera certaines des informations de votre ensemble de données.
Ensuite, vous devez modifier le champ d' im_root et train/val_im_anns dans le fichier de configuration. J'ai préparé un fichier de configuration de démonstration pour vous nommé bisenet_customer.py . Vous pouvez commencer à partir de ce fichier de conig.
Les commandes de formation que j'ai utilisées pour former les modèles peuvent être trouvées ici.
Note:
bisenetv2 ait moins de flops, cela nécessite beaucoup plus d'itérations de formation. Le temps de formation de bisenetv1 est plus court.Vous pouvez également charger les poids des modèles entraînés et Finetune, comme ceci:
$ export CUDA_VISIBLE_DEVICES=0,1
$ torchrun --nproc_per_node=2 tools/train_amp.py --finetune-from ./res/model_final.pth --config ./configs/bisenetv2_city.py # or bisenetv1
Vous pouvez également évaluer un modèle formé comme celui-ci:
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
Ou vous pouvez utiliser plusieurs GPU:
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
old répertoire pour l'implémentation originale si vous en avez besoin, bien que je pense que vous n'en aurez pas besoin.