- 采用基于实例分割的方法,保证标注任务较简单的情况下,抛弃传统语义分割所引入的聚类算法(如DBSCAN),大大降低分割帧率,在单张2080上推理速度大于100FPS
- 实验对比了三种在速度和准确度取得较好平衡的骨干网络,Bisenet V2,Pidnet-S,STDCnet,最终发现STDCnet具有较好表现。
- 为了更好的评价苗带质量,提出基于苗带像素准确率指标,与基于苗带条数的指标
- 针对任务整体框架中苗带背景分割部分,加入联通分支,使得苗带像素更加连续,去除破碎的苗带块。
测试条件为:一张2080Ti 图片大小为256*256
| 主干模型 | FPS | TH | ||
|---|---|---|---|---|
| Bisenet V2 | 72.1 | 94.6% | 75.5% | 0.35 |
| Bisenet V2 | 68.8 | 94.2% | 82.4% | 0.25 |
| Bisenet V2 | 70.7 | 93.2% | 85.1% | 0.15 |
| Bisenet V2 | 70.6 | 92.6% | 87.0% | 0 |
| Pidnet-S | 82.4 | 90.9% | 73.9% | 0.35 |
| Pidnet-S | 82.1 | 92.5% | 86.3% | 0.25 |
| Pidnet-S | 75.6 | 91.6% | 89.5% | 0.15 |
| Pidnet-S | 75.0 | 90.5% | 90.1% | 0 |
| STDCnet | 122 | 95.28% | 85.95% | 0.35 |
| STDCnet | 118 | 94.18% | 89.6% | 0.25 |
| STDCnet | 122 | 93.8% | 91.0% | 0.15 |
| STDCnet | 119 | 93.5% | 91.8% | 0 |
对于每张给定的输入图片,我们假设模型输出有$c_1$条苗带,标注存在$c_2$条苗带,首先给出基于像素的准确率指标:
match函数被定义为两条苗带的匹配程度计算公式如下,假设存在两条苗带$l_1,l_2$,$l_1,l_2$分别表示一系列苗带点:
基于像素的准确率,只考虑了识别出来的苗带与标注苗带的匹配程度,没有关注苗带数目是否与标注的一致,因此增加一个基于苗带数目的准确率,这样可以更加细致的评价模型的优劣。(我们默认匹配度大于50%的为正确识别苗带)
python 3.8.19
torch 1.12.1
torchvision 0.13.1
cuda 11.7.0
conda create -n env_name python==3.8
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
pip install requirements.txt
其他少了那个安装那个
-
自建数据集
......
-
公用数据集(CRDLD) 链接:https://pan.baidu.com/s/1kjEddZVdblg4Gt96eZJLiw?pwd=v3by 提取码:v3by
下面文件结构中,加粗部分是必须要有的。
python ./CRDLD/generate_border.py ##生成border_image(pidnet需要) instance_image(实际没有使用) python ./CRDLD/create_connection.py ##生成connect_8_d1 connect_8_d3连通性标注文件夹 python ./CRDLD/generate_txt.py ##生成test.txt和train.txt
.
├── binary_image
├── connect_8_d1
├── connect_8_d3
├── create_connection.py
├── generate_border.py
├── generate_txt.py
├── instance_image
├── label_image
├── raw_image
├── test.txt
└── train.txt
链接:https://pan.baidu.com/s/1t-wlkSYnt-GsFUYade1KcQ?pwd=5lhx 提取码:5lhx 里面包含了三个模型的best和last轮权重文件
## first stage
python Endtoend_train.py --model stdcnet/pidnet/bisenet --stage 1
##首先保存一阶段权重文件到weigt文件夹
## second stage
python Endtoend_train.py --model stdcnet/pidnet/bisenet --stage 2
##最后保存最终权重到weight_256文件夹详细修改参见代码,图片帧率的输出从第二张图片开始,帧率计算时间为模型输出到苗带参数拟合的时间。
python Endtoend_evalue.py --model stdcnet/pidnet/bisenet