当前位置:网站首页>打假Yolov7的精度,不是所有的论文都是真实可信
打假Yolov7的精度,不是所有的论文都是真实可信
2022-07-24 14:39:00 【计算机视觉研究院】
关注并星标
从此不迷路
计算机视觉研究院

公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
计算机视觉研究院专栏
作者:Edison_G
最近我们分享了Yolov6和Yolov7两个新框架,但是好多同学希望我们真正的对代码进行详细解读,今天“计算机视觉研究院”就先对Yolov7的性能做一次真实实验对比。
之前“计算机视觉研究院”分享了yolo系列的最新两个版本:
Yolov7:最新最快的实时检测框架,最详细分析解释(附源代码)


劲爆!YOLOv6又快又准的目标检测框架开源啦(附源代码下载)

Rep-PAN 结构图

今天我们基于Yolov7的开源代码,实现了其论文中的一些实验。
在MS COCO的数据集上结果如下:

首先在coco验证集上,验证官方提供的yolov7.pt,其实用的是L版本(类似YOLOv5-L,YOLOX-L,PPYOLOE-L),结果如下:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51206
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69730
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.55521
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35247
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.55937
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66693
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38453
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.63765
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.68772
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.53766
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.73549
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.83868注:以下改动需要bs=1去验证:
python3.7 test.py --data data/coco.yaml --img 640 --batch 1 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val改数据预处理letterbox的auto=True,因为实际预测都是固定尺寸,也只能到640尺寸


通过上面的结果很明显可以看到mAP为50.8,掉了0.4。
eval的时候NMS是有trick的,multi_label表示一个框是否可以赋予两个类别,但是我们实际部署的时候就是一个框对应一个类别,所以再把multi_label设为False

测试结果好像又掉了0.2....

这种YOLO系列测速都是没有比对nms的耗时的,所以为了精度可以对nms大作文章。进nms前的max_nm设置到了30000,实际部署的时候,进入nms的Tensor如果很大会很耗时,一般都不会设置到这么大,1000足够了,改max_nms=1000。同时还有max_det=300表示每张图最多几个框,真的有必要300这么多吗? cocoapi评测工具虽然是max_det=100,但是改300真的也会涨点。

max_nms=30000,max_det=300这种操作不仅eval过程变慢,生成json的时候更慢,而且如果是训练早期还没训的很好的时候去eval,肯定会很慢。
为什么边训边eval的时候感觉很快?
原因:边训边eval和单独拿权重去eval,从数据处理到评测工具都走的不是一套逻辑!再加改max_nms从30000到1000,mAP虽然没掉,但recall下降:

再加改max_det从300到100,mAP又掉了0.1:

按照上面的3点操作后,X版本mAP只有52.1了,掉了0.8个点。
python3.7 test.py --data data/coco.yaml --img 640 --batch 1 --conf 0.001 --iou 0.65 --device 3 --weights yolov7x.pt --name yolov7_640_val
但是实际对比yolov7和yolov6,结果确实会有一些质的提升。

Yolov7

Yolov6

先恭喜2022LPL夏季赛常规赛焦点战,RNG 2-1翻盘击败EDG,拿下LPL德比大战的胜利。
THE END
转载请联系本公众号获得授权

计算机视觉研究院学习群等你加入!
我们开创“计算机视觉协会”知识星球两年有余,也得到很多同学的认可,最近我们又开启了知识星球的运营。我们定时会推送实践型内容与大家分享,在星球里的同学可以随时提问,随时提需求,我们都会及时给予回复及给出对应的答复。

ABOUT
计算机视觉研究院
计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!
VX:2311123606

往期推荐
边栏推荐
猜你喜欢

Detailed explanation of address bus, data bus and control bus

REST风格

茅台冰淇淋“逆势”走红,跨界之意却并不在“卖雪糕”

C language -- program environment and preprocessing

Simple understanding and implementation of unity delegate

After five years of contact with nearly 100 bosses, as a headhunter, I found that the secret of promotion was only four words
![[oauth2] III. interpretation of oauth2 configuration](/img/31/90c79dbc91ee15c353ec46544c8efa.png)
[oauth2] III. interpretation of oauth2 configuration

Source code analysis of ArrayList
![[NLP] next stop, embossed AI](/img/fc/4997309d0d53c5b6eb441ac39e6929.jpg)
[NLP] next stop, embossed AI

Decrypt "sea Lotus" organization (domain control detection and defense)
随机推荐
The difference and relation among list, set and map
【NLP】下一站,Embodied AI
SQL subquery
Clear all spaces in the string
Unity 委托 (Delegate) 的简单理解以及实现
正则表达和绕过案例
TS learning record (I) sudo forgets the password (oolong) try changing the 'lib' compiler option to include 'DOM'
IntelliSense of Visual Studio: 'no members available'
解决 uni-starter 使用本地函数可以登录微信 但是使用云函数登录失败
达梦实时主备集群搭建
C language -- program environment and preprocessing
Rasa 3.x 学习系列-Rasa [3.2.4] - 2022-07-21 新版本发布
Isprs2018/ cloud detection: cloud/shadow detection based on spectral indexes for multi/hyp multi / hyperspectral optical remote sensing imager cloud / shadow detection
使用 Fiddler Hook 报错:502 Fiddler - Connection Failed
深入浅出边缘云 | 2. 架构
Machine learning practice notes
Dameng real-time active and standby cluster construction
Data analysis and mining 2
spark:指定日期输出相应日期的日志(入门级-简单实现)
Overview of dobesie wavelet (DB wavelet function) in wavelet transform
