Meine Implementierung von Bisenetv1 und Bissenetv2.
Mious und FPS auf Cityscapes Val Set:
| keiner | ss | SSC | MSF | MSCF | FPS (FP32/FP16/INT8) | Link |
|---|---|---|---|---|---|---|
| Bisenetv1 | 75,44 | 76,94 | 77,45 | 78,86 | 112/239/435 | herunterladen |
| Bisenetv2 | 74,95 | 75,58 | 76,53 | 77.08 | 103/161/198 | herunterladen |
Mious auf Cocostuff Val2017 Set:
| keiner | ss | SSC | MSF | MSCF | Link |
|---|---|---|---|---|---|
| Bisenetv1 | 31.49 | 31.42 | 32.46 | 32,55 | herunterladen |
| Bisenetv2 | 30.49 | 30.55 | 31.81 | 31.73 | herunterladen |
Mious auf ADE20K VAL -Set:
| keiner | ss | SSC | MSF | MSCF | Link |
|---|---|---|---|---|---|
| Bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | herunterladen |
| Bisenetv2 | 32.53 | 32.43 | 33.23 | 31.72 | herunterladen |
Tipps:
SS -Mittelwerte für ein Skala, SSC -Mittelwerte für ein Maßstab, MSF -Mittelwerte für eine multiskalige Bewertung mit Flip-Augment, und MSCF- Mittelwerte für mehrskalige Pflanzenbewertung mit Flip-Evaluierung. Die Bewertungsskalen und die Pflanzengröße der Multi-Skalen-Bewertung finden Sie in Konfigurationen.
Das FPS wird auf unterschiedliche Weise als vom Papier getestet. Weitere Informationen finden Sie hier.
Die Autoren von Bisenetv2 verwendeten Cocostuff-10K, während ich Cocostuff-123K verwendete (wissen nicht, wie man sagt, genau gleich 118K-Zug und 5k-Valfitierbilder als Objekterkennung). Somit sind die Ergebnisse möglicherweise von Papier unterschiedlich.
Die Autoren haben keine Ergebnisse auf ADE20K gemeldet, daher gibt es keine offiziellen Schulungseinstellungen. Hier biete ich einfach ein Ergebnis "It It Work". Vielleicht können die Ergebnisse auf ADE20K mit besseren Einstellungen gesteigert werden.
Das Modell hat eine große Abweichung, was bedeutet, dass die Ergebnisse des Trainings seit langem innerhalb eines relativ großen Randes variieren würden. Wenn Sie beispielsweise mehrmals Bissenetv2 auf Cityscapes trainieren, werden Sie feststellen, dass das Ergebnis der SS- Bewertung von Bisenetv2 zwischen 73,1-75.1 variiert.
Tensorrt
Sie können zu Tensorrt gehen, um Details zu erhalten.
ncnn
Sie können zu NCNN für Details gehen.
OpenVino
Weitere Informationen finden Sie nach OpenVino.
tis
Triton Inference Server (TIS) bietet eine Servicelösung für die Bereitstellung. Sie können für Details zu TIS gehen.
Meine Plattform ist so:
Mit einem vorbereiteten Gewicht können Sie auf ein einzelnes Bild wie dieses Schluss führen:
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
Dies würde die Schlussfolgerung auf das Bild ausführen und das Ergebnisbild auf ./res.jpg speichern.
Oder Sie können in einem Video wie folgt Schlussfolgerung ausführen:
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
Dies würde eine Segmentierungsdatei als res.mp4 generieren. Wenn Sie von der Kamera lesen möchten, können Sie --input camera_id anstatt input ./video.mp4 .
1.Cityscapes
Registrieren Sie sich und laden Sie den Datensatz von der offiziellen Website herunter. Dekomprimieren Sie sie dann in das Verzeichnis 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.Cocostuff
Download train2017.zip , val2017.zip und stuffthingmaps_trainval2017.zip geteilt von der offiziellen Website. Dann tun Sie wie folgt:
$ 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
Laden Sie ADEChallengeData2016.zip von dieser Website herunter und entpacken Sie sie. Anschließend können wir die unkomprimierten Ordner in datasets/ade20k verschieben und die TXT -Dateien mit dem Skript generieren, das ich für Sie vorbereitet habe:
$ 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. KOSTOM -Datensatz
Wenn Sie in Ihrem eigenen Datensatz trainieren möchten, sollten Sie zuerst Annotationsdateien mit dem Format wie folgt generieren:
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
Jede Zeile ist ein Paar Trainingsproben und Bodenwahrheitsbild, die durch ein einzelnes Komma getrennt werden ,
Ich empfehle Ihnen, die Informationen Ihres Datensatzes mit dem Skript zu überprüfen:
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
Dadurch werden einige Informationen Ihres Datensatzes gedruckt.
Anschließend müssen Sie das Feld von im_root und train/val_im_anns in der Konfigurationsdatei ändern. Ich habe eine Demo -Konfigurationsdatei für Sie bisenet_customer.py erstellt. Sie können in dieser Conigendatei beginnen.
Schulungsbefehle, mit denen ich die Modelle trainiert habe, finden Sie hier.
Notiz:
bisenetv2 weniger Flops hat, erfordert es viel mehr Trainings -Iterationen. Die Trainingszeit von bisenetv1 ist kürzer.Sie können auch die geschulten Modellgewichte und Finetune daraus laden, wie folgt:
$ 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
Sie können auch ein geschultes Modell wie folgt bewerten:
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
Oder Sie können Multi -GPUs verwenden:
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
old Verzeichnis gehen, um die ursprüngliche Implementierung zu erhalten, wenn Sie benötigen, obwohl ich glaube, Sie werden es nicht brauchen.