我对Bisenetv1和Bisenetv2的实施。
Mious and fps on CityScapes Val设置:
| 没有任何 | SS | SSC | MSF | MSCF | FPS(FP32/FP16/INT8) | 关联 |
|---|---|---|---|---|---|---|
| Bisenetv1 | 75.44 | 76.94 | 77.45 | 78.86 | 112/239/435 | 下载 |
| Bisenetv2 | 74.95 | 75.58 | 76.53 | 77.08 | 103/161/198 | 下载 |
在Cocostuff Val2017套装上奇怪:
| 没有任何 | SS | SSC | MSF | MSCF | 关联 |
|---|---|---|---|---|---|
| Bisenetv1 | 31.49 | 31.42 | 32.46 | 32.55 | 下载 |
| Bisenetv2 | 30.49 | 30.55 | 31.81 | 31.73 | 下载 |
在ADE20K Val套装上很奇怪:
| 没有任何 | SS | SSC | MSF | MSCF | 关联 |
|---|---|---|---|---|---|
| Bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | 下载 |
| Bisenetv2 | 32.53 | 32.43 | 33.23 | 31.72 | 下载 |
尖端:
SS是指单量表评估, SSC表示单量表的作物评估, MSF表示具有翻转增强的多尺度评估,而MSCF表示具有翻转评估的多尺度作物评估。多尺度评估的评估量表和作物规模可以在配置中找到。
FPS以与纸张不同的方式进行了测试。有关更多信息,请参阅此处。
Bisenetv2的作者使用了Cocostuff-10k,而我使用了Cocostuff-123k(不知道该怎么说,相同的118K火车和5K Val图像作为对象检测)。因此,结果可能与纸张不同。
作者没有在ADE20K上报告结果,因此没有官方的培训设置,在这里我只是提供了“使它起作用”的结果。也许可以通过更好的设置来提高ADE20K的结果。
该模型具有很大的差异,这意味着训练的结果多次会在相对较大的利润率内变化。例如,如果您多次在CityScapes上训练BisenetV2,您会观察到SS对Bisenetv2的评估结果在73.1-75.1之间变化。
张力
您可以去Tensorrt以获取详细信息。
NCNN
您可以转到NCNN以获取详细信息。
Openvino
您可以去OpenVino以获取详细信息。
tis
Triton推理服务器(TIS)提供了部署的服务解决方案。您可以转到TIS以获取详细信息。
我的平台就是这样:
有了预处理的重量,您可以对这样的单个图像进行推断:
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
这将在图像上进行推断,并将结果图像保存到./res.jpg 。
或者,您可以对这样的视频进行推断:
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
这将以res.mp4的形式生成细分文件。如果要从相机阅读,则可以设置--input camera_id而不是input ./video.mp4 。
1.CityScapes
注册并从官方网站下载数据集。然后将它们解压缩到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
下载train2017.zip , val2017.zip and stuffthingmaps_trainval2017.zip从官方网站分开。然后按照以下操作:
$ 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.DADE20K
从此网站下载ADEChallengeData2016.zip并解压缩。然后,我们可以将未压缩的文件夹移至datasets/ade20k ,并使用我为您准备的脚本生成TXT文件:
$ 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.custom数据集
如果您想在自己的数据集上训练,则应首先以这样的格式生成注释文件:
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
每行都是一对训练样本和地面真实图像路径,它们被单个逗号分隔,
我建议您使用脚本检查数据集的信息:
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
这将打印您数据集的一些信息。
然后,您需要在配置文件中更改im_root和train/val_im_anns的字段。我为您准备了一个名为bisenet_customer.py的演示配置文件。您可以从这个conig文件开始。
我用来训练模型的培训命令可以在此处找到。
笔记:
bisenetv2的失败量较少,但它需要更多的培训迭代。 bisenetv1的训练时间较短。您还可以从中加载训练有素的模型权重和芬太加,这样:
$ 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
您还可以评估训练有素的模型:
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
或者您可以使用多GPU:
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
old目录进行原始实施,尽管我相信您不需要它。