Mi implementación de BISENETV1 y BISENETV2.
Mious y FPS en los paisajes urbanos Val set:
| ninguno | ss | SSC | MSF | MSCF | FPS (FP32/FP16/INT8) | enlace |
|---|---|---|---|---|---|---|
| bisenetv1 | 75.44 | 76.94 | 77.45 | 78.86 | 112/239/435 | descargar |
| bisenetv2 | 74.95 | 75.58 | 76.53 | 77.08 | 103/161/198 | descargar |
Mious en Cocostuff Val2017 Set:
| ninguno | ss | SSC | MSF | MSCF | enlace |
|---|---|---|---|---|---|
| bisenetv1 | 31.49 | 31.42 | 32.46 | 32.55 | descargar |
| bisenetv2 | 30.49 | 30.55 | 31.81 | 31.73 | descargar |
Mious en ADE20K Val set:
| ninguno | ss | SSC | MSF | MSCF | enlace |
|---|---|---|---|---|---|
| bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | descargar |
| bisenetv2 | 32.53 | 32.43 | 33.23 | 31.72 | descargar |
Consejos:
SS significa evaluación de una escala única, SSC significa evaluación de cultivos de escala única, MSF significa evaluación a múltiples escala con aumento de flip y MSCF significa evaluación de cultivos a múltiples escala con evaluación de flip. Las escalas de evaluación y el tamaño del cultivo de la evaluación de múltiples escalas se pueden encontrar en las configuraciones.
El FPS se prueba de manera diferente del papel. Para obtener más información, consulte aquí.
Los autores de BISENETV2 usaron COCOSTUFF-10K, mientras que usé COCOSTUFF-123K (no sé cómo decir, solo las mismas imágenes de 118k y 5k Val como detección de objetos). Por lo tanto, los resultados pueden ser diferentes del papel.
Los autores no informaron resultados en ADE20K, por lo tanto, no hay configuraciones de capacitación oficiales, aquí simplemente proporciono un resultado de "Hacer que funcione". Tal vez los resultados en ADE20K se pueden aumentar con una mejor configuración.
El modelo tiene una gran variación, lo que significa que los resultados del entrenamiento durante muchas veces variarían dentro de un margen relativamente grande. Por ejemplo, si entrena BISENETV2 en paisajes urbanos durante muchas veces, observará que el resultado de la evaluación SS de Bisenetv2 varía entre 73.1-75.1.
tensor
Puedes ir a Tensorrt para más detalles.
ncnn
Puedes ir a NCNN para más detalles.
abierto
Puedes ir a OpenVino para más detalles.
tis
Triton Inference Server (TIS) proporciona una solución de servicio de implementación. Puedes ir a TIS para más detalles.
Mi plataforma es así:
Con un peso previado, puede ejecutar inferencia en una sola imagen como esta:
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
Esto ejecutaría inferencia en la imagen y guardaría la imagen del resultado en ./res.jpg .
O puede ejecutar inferencia en un video como este:
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
Esto generaría un archivo de segmentación como res.mp4 . Si desea leer desde la cámara, puede configurar --input camera_id en lugar de input ./video.mp4 .
1.citescapes
Regístrese y descargue el conjunto de datos del sitio web oficial. Luego descomprima los del directorio 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
Descargar train2017.zip , val2017.zip y stuffthingmaps_trainval2017.zip dividido del sitio web oficial. Luego haz lo siguiente:
$ 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.EdE20K
Descargue ADEChallengeData2016.zip de este sitio web y descompone. Luego podemos mover las carpetas sin comprimir a datasets/ade20k , y generar los archivos TXT con el script que preparé para usted:
$ 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.Set de datos consciente
Si desea entrenar en su propio conjunto de datos, debe generar archivos de anotación primero con el formato como este:
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
Cada línea es un par de muestras de entrenamiento y ruta de imagen de la verdad de tierra, que están separadas por una sola coma , .
Recomiendo que verifique la información de su conjunto de datos con el script:
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
Esto imprimirá parte de la información de su conjunto de datos.
Luego debe cambiar el campo de im_root y train/val_im_anns en el archivo de configuración. Preparé un archivo de configuración de demostración para usted llamado bisenet_customer.py . Puede comenzar desde este archivo CONIG.
Los comandos de entrenamiento que usé para entrenar a los modelos se pueden encontrar aquí.
Nota:
bisenetv2 tiene menos fracasos, requiere muchas más iteraciones de entrenamiento. El tiempo de entrenamiento de bisenetv1 es más corto.También puede cargar los pesos del modelo entrenado y Finetune de él, así:
$ 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
También puede evaluar un modelo capacitado como este:
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
O puede usar Multi GPU:
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
old para su implementación original si lo necesita, aunque creo que no lo necesitará.