测试集的建立对评价模型好坏非常重要,本文使用cityscapes数据集,对其分割标签进行转换得到目标检测标签,并建立yolov7测试集,对训练的模型进行测试。

标签格式转换主要参考https://blog.csdn.net/Shenpibaipao/article/details/111240711

本文前述bdd100k数据集的下载、格式转换、yolov7训练流程链接:https://blog.csdn.net/qq_37214693/article/details/126708738?spm=1001.2014.3001.5501

在使用上文链接的程序进行转换后,得到的classes如下:

classes里有许多我们不需要的类别,以及类似”cargroup“这样的类型,查看官网的注释可以知道”如果无法清楚地看到此类实例之间的边界,则将整个人群/组标记在一起并注释为group,例如 cargroup。“由于此处为了建立一个测试集,之前训练的模型不需要考虑这种情况,因而有group的类别我们要抛去。

Single instance annotations are available. However, if the boundary between such instances cannot be clearly seen, the whole crowd/group is labeled together and annotated as group, e.g. car group.

筛选后的类别如下图所示。

修改代码,将下列代码屏蔽,并定义label_map,重新运行程序便得到了我需要的类别标号及对应的每张图片的yolo格式标签。

        # if obj_label not in label_map.keys():  # 记录目标类型转为int值##     label_map[obj_label] = len(label_map.keys())  # 标签从0开始
label_map = {"person": 0, "rider": 1, "car": 2, "bus": 3, "truck": 4, "bicycle": 5, "motorcycle": 6,"traffic light": 10, "traffic sign": 11, "train": 12}

转换后得到的文件结构如下:

gtFinetesttrainval
labelstesttrainval
leftImg8bittesttrainval

在test、train、val文件夹下根据采集城市又分为多个不同城市的数据,根据我们的需要将所有图片放在一个文件夹,标签放在一个文件夹,两个文件夹一起放在训练文件夹下,修改yolo相关的参数即可进行训练或测试。

最终yolov7/data/cityscapes文件夹下的结构如图所示,images下是所有的图片,labels下是所有的标签。

根据data/coco.yaml进行修改,得到cityscapes.yaml。因为这里仅用来测试,故只需定义val即可。

运行下列命令进行测试

python test.py --data data/cityscapes.yaml --img 640 --batch 4 --conf 0.001 --iou 0.65 --device 0 --weights runs/train/bdd100k6/weights/best.p
t --name bdd100k6_val_20220907python test.py --data data/cityscapes.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7_bdd.pt --name bdd100k6_val_202209071515

测试结果如图所示,由于模型训练轮数还比较少,因此mAP较低,但训练集中交通灯分红黄绿和none四个类别,测试集中没有颜色属性,所以检测结果中tl_none的mAP较低,需要进一步处理,将所有交通灯都归到一起。train的mAP显然脱离正常范围,猜测是数据量过少的原因,在bdd100k中,train的标签只有179个,可以考虑去掉该class,并且由于自动驾驶环境下火车基本不用考虑,因此对模型的使用影响不大。

虽然模型精度还很低,但测试结果仍有值得分析的点,下面给出混淆矩阵、PR曲线和测试图例。

分析混淆矩阵可知,汽车、人类、骑手、公交车等类别的精确度都能明显看出训练是有效的,但由于模型训练还不到位,存在大量漏检,由于汽车的标签数量相对其它类别至少要出一个数量级,所以汽车的精度达到0.72是合理的,说明模型的预测有效,但仍需要多轮迭代。交通灯方面印证了上述猜测,交通灯的mAP低是因为测试集中交通灯无法区分颜色导致的,train全部漏检,说明模型对train的训练基本无效,这也是样本数量过小导致的。

PR曲线也可以看到,汽车的训练效果明显好于其他类别,整个模型还有待训练

下面给出三组test batch,可以看出,整体的预测效果还可以,大部分label都检测出来了,但仍然存在一定的漏检和许多错检,这一方是因为模型精度还不够,另一方面可以发现,部分label有误,这和cityscapes本身的标签是分割标签,转到检测标签会有一定的误差有关,还有就是不同数据集在进行标签的标定时标准不同,例如在test batch1中,第二个字图左侧,检测出了两个交通标志,但标签只有正面的一个。

test_batch0_labels

test_batch0_pred

test_batch1_labels

test_batch1_pred

test_batch2_labels

test_batch2_pred

使用cityscapes数据集建立yolov7测试集相关推荐

  1. SOTA排行榜大变天!MIT研究十个CV测试集,平均错误率超3.4%

      视学算法报道   来源:arxiv 编辑:LRS 转载自:新智元 [新智元导读]如果测试集不靠谱,那测出来的模型性能会靠谱吗?MIT研究了10个流行的CV的数据集,平均测试集的错误率超过3.4%, ...

  2. SOTA 排行榜大变天!MIT 研究十个 CV 测试集,平均错误率超 3.4%

    转自 | 新智元 来源 | arxiv 编辑 | LRS 如果测试集不靠谱,那测出来的模型性能会靠谱吗?MIT研究了10个流行的CV的数据集,平均测试集的错误率超过3.4%,最多的竟然错误超10%. ...

  3. 为什么神经网络模型在测试集上的准确率高于训练集上的准确率?

    为什么神经网络模型在测试集上的准确率高于训练集上的准确率? 种花家的奋斗兔 2020-03-21 17:28:37  5847  已收藏 11 分类专栏: Deep Learning 文章标签: dr ...

  4. 拒绝DNN过拟合,谷歌准确预测训练集与测试集泛化差异,还开源了数据集 | ICLR 2019...

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 深度神经网络(DNN)如今已经无处不在,从下围棋到打星际,DNN已经渗透到图像识别.图像分割.机器翻译等各种领域,并且总是表现惊艳. 然而 ...

  5. 机器学习数据集划分-训练集,验证集,测试集

    训练集 作用:估计模型 学习样本数据集,通过匹配一些参数来建立一个分类器.建立一种分类的方式,主要是用来训练模型的. 验证集 作用:确定网络结构或者控制模型复杂程度的参数,超参数 对学习出来的模型,调 ...

  6. 训练集山准确率高测试集上准确率很低_拒绝DNN过拟合,谷歌准确预测训练集与测试集泛化差异,还开源了数据集 | ICLR 2019...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 深度神经网络(DNN)如今已经无处不在,从下围棋到打星际,DNN已经渗透到图像识别.图像分割.机器翻译等各种领域,并且总是表现惊艳. 然而, ...

  7. 数据集划分——训练集、测试集、验证集按照7:1:2

    数据集划分--训练集.测试集.验证集按照7:1:2 前面我对乳腺超声图像数据库进行数据增强,得到: 然后对数据集进行划分,按照训练集.测试集.验证集7:1:2的比例. 代码: import os im ...

  8. 机器学习——线性回归与决策树实验(附效果以及完整代码)(数据集、测试集开源)

    机器学习实验 实验名称:实验一.线性回归与决策树 一.实验目的 (1)掌握线性回归算法和决策树算法 ID3 的原理: (2)学会线性回归算法和决策树算法 ID3 的实现和使用方法. 二.实验内容 本次 ...

  9. 将数据集分为训练集和测试集(python脚本)

    文章目录 程序: 下面简单介绍一下程序流程 1.引入库 os库 shutil random 2.mk_file函数 3.主函数 程序: 我们在训练卷积神经网络之前,要搭建好数据集,分成训练集和测试集两 ...

最新文章

  1. 第十届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
  2. [转] apache配置rewrite及.htaccess文件
  3. Git在版本2.13中继续改进了安全性和UI
  4. Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)上
  5. 如何从初级程序员变成高级程序员?赶紧看一看
  6. 4 angular 重构 项目_再遇angular(angular4项目实战指南)
  7. [转载]Qt之模型/视图(实时更新数据)
  8. 联邦快递认了:转运华为货件到美国,但称是“失误”!
  9. 层次分析法模型(数学建模学习)
  10. wps文档忘记保存关闭了怎么恢复
  11. 推荐一个免费的JSP空间
  12. 小飞鱼通达二开 致远OA配置(写数据到通达OA第三方系统)接口(图文)
  13. C#使用S7.net连接西门子S1200PLC,C#直接连接西门子PLC
  14. 如何理解假设检验中的假设设计?
  15. linux 图形界面无法弹出,xmanager无法弹出图形化界面。
  16. MySQL创建数据库、创建数据表
  17. 买了淘宝TeamViewer盗版账号才知道安全没保障,大家别再上当了
  18. html5游戏一键端,【稀有游戏】伊卡洛斯ol手工端+VM一键端+伊卡洛斯客户端
  19. 成立5年多 占领市场份额70% 思岚科技凭什么跻身行业第一
  20. 微信公众号模板消息换行符号

热门文章

  1. jquery分页插件-sPage.js使用方法
  2. Java基础教程(全代码解析)
  3. 红色大气年终工作总结PPT模板
  4. 网络7层协议详解——Network layer protocol
  5. fluent meshing 和mesh模块案例分析对比
  6. Linux---scp、cp命令
  7. 立象条码打印机PPLB类单双标签打印
  8. 485通讯的校验和_三菱FX系列PLC与三菱变频器通讯应用实例(RS485)
  9. C++ 和 EasyX绘制心形代码
  10. 上证指数和上证领先指数