码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 打假Yolov7的精度,不是所有的论文都是真实可信


    关注并星标

    从此不迷路

    计算机视觉研究院

    6516d25aa5265d2698f10f57acb56d00.gif

    8b54e23ebc16066258fba9e1417891ef.gif

    公众号ID|ComputerVisionGzq

    学习群|扫码在主页获取加入方式

    计算机视觉研究院专栏

    作者:Edison_G

    最近我们分享了Yolov6和Yolov7两个新框架,但是好多同学希望我们真正的对代码进行详细解读,今天“计算机视觉研究院”就先对Yolov7的性能做一次真实实验对比。

    之前“计算机视觉研究院”分享了yolo系列的最新两个版本:

    Yolov7:最新最快的实时检测框架,最详细分析解释(附源代码)

    d94efde1a9385a2700f6046cc54dbfd8.png

    e896b37405f1348d47307218d92f7f5a.png

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

    67cea3ebab3017e25e57eda116f65427.jpeg

    Rep-PAN 结构图

    818fdac1baccfc4e65610389420367db.png

    今天我们基于Yolov7的开源代码,实现了其论文中的一些实验。

    在MS COCO的数据集上结果如下:

    a2186ed35eb189bffe579d828ec2b5f7.png

    首先在coco验证集上,验证官方提供的yolov7.pt,其实用的是L版本(类似YOLOv5-L,YOLOX-L,PPYOLOE-L),结果如下:

    1. Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51206
    2. Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69730
    3. Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.55521
    4. Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35247
    5. Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.55937
    6. Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66693
    7. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38453
    8. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.63765
    9. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.68772
    10. Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.53766
    11. Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.73549
    12. 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尺寸

    e0bd91c19e7b7b4d9abf9e5aa7009264.png

    be80e3994e5c3351f92f212c5277a38d.jpeg

    通过上面的结果很明显可以看到mAP为50.8,掉了0.4。

    • eval的时候NMS是有trick的,multi_label表示一个框是否可以赋予两个类别,但是我们实际部署的时候就是一个框对应一个类别,所以再把multi_label设为False

    8d2ae36e861b73bec1378ecec7b393c5.png

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

    bacb7981925015783ff889d97be1b840.jpeg

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

    53527215572d4db55a6e8b5ff0e8403f.png

    max_nms=30000,max_det=300这种操作不仅eval过程变慢,生成json的时候更慢,而且如果是训练早期还没训的很好的时候去eval,肯定会很慢。

    1. 为什么边训边eval的时候感觉很快?
    2. 原因:边训边eval和单独拿权重去eval,从数据处理到评测工具都走的不是一套逻辑!

    再加改max_nms从30000到1000,mAP虽然没掉,但recall下降:

    ec9b340d4eeee8f05cdd5a4bce2a53f7.jpeg

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

    0dcfc67caa51143f4088cc112cda9f5b.jpeg

    按照上面的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

    outside_default.png

    但是实际对比yolov7和yolov6,结果确实会有一些质的提升。

    e2d7af287c2f2d488e863ae4fe07b8ad.png

    Yolov7

    dbca41aa44607a0eedb74d9210c02585.png

    Yolov6

    c3ee5061463b31d419c414a6412ec6fc.png

    先恭喜2022LPL夏季赛常规赛焦点战,RNG 2-1翻盘击败EDG,拿下LPL德比大战的胜利。

    © THE END 

    转载请联系本公众号获得授权

    3b37f8889a4a90bd11225a8d03596568.gif

    计算机视觉研究院学习群等你加入!

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

    e9b87ce17b69858e4a8cc93431904ed8.jpeg

    ABOUT

    计算机视觉研究院

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

    VX:2311123606

    9c93cc8d6ac91a7b3dc5a949e11138a0.png

    往期推荐 

    🔗

    • Yolov7:最新最快的实时检测框架,最详细分析解释(附源代码)

    • SSD7 | 对嵌入式友好的目标检测网络,产品落地

    • 人脸技术:不清楚人照片修复成高质量高清晰图像框架(附源代码下载)

    • “目标检测”+“视觉理解”实现对输入图像的理解及翻译(附源代码)

    • 目标检测 | 基于统计自适应线性回归的目标尺寸预测

    • 精度提升方法:自适应Tokens的高效视觉Transformer框架(已开源)

    • ONNX 浅析:如何加速深度学习算法工程化?

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

    • FastestDet:比yolov5更快!更强!全新设计的超实时Anchor-free目标检测算法(附源代码下载)

    • 目前精度最高效率最快存储最小的目标检测模型(附源码下载)

  • 相关阅读:
    [Java反序列化]—Shiro反序列化(一)
    真正“搞”懂HTTPS协议16之安全的实现
    Programming Differential Privacy第十四章Local Differential Privacy本地化差分隐私
    OpenCV学习笔记(6)_由例程学习高斯图像金字塔和拉普拉斯金字塔
    写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
    IT66021FN: Single-port HDMI 1.4 Receiver with 3D Support
    小程序中如何给会员一键拨号
    如何查找外文文献?
    Redis学习路径(构建体系)
    微信小程序 限制字数文本域框组件封装
  • 原文地址:https://blog.csdn.net/gzq0723/article/details/125954732
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号