1 写在前面
- 夹带私货,可能有用呢:YOLOv7-tiny,通过pycocotools包得到预测大中小尺寸目标的指标值
仅供参考!写这个代码的目的是能够打印出iou=0.50的AP、AR的小中大3个尺寸的值,原始代码是不会打印出来的!
最好是一次性使用!因为这个是在动pycocotools这个包的源代码了,所以最好是用完之后就当场改回去,以免影响其他模型使用pycocotools包!!!
2 代码效果
原始效果:
代码修改之后的效果:
3 代码修改
本地电脑上:修改F:\SoftWarelnstall\Anaconda3\envs\torch1.10\Lib\site- packages\pycocotools\cocoeval.py
这个文件,别找错了虚拟环境了哟,我这里修改的是自己配置好的torch1.10
虚拟环境里面的文件
AutoDL云服务器上:在./miniconda3/envs/py38/lib/python3.8/site-packages\pycocotools\cocoeval.py
修改,在云服务器上我的虚拟环境名是py38
- 打印小数点后五位数:在
cocoeval.py
中定位到iStr =
然后将后面的{:0.3f}
里的3
改为想要的小数点位数,例如我想要5位数就改为5
- 打印更多数据:在
cocoeval.py
中定位到def _summarizeDets():
,然后进行如下修改👇
# ------------------------------------------------------lwd edit-------------------------------------------------- #
print('-' * 30)
stats[12] = _summarize(1, iouThr=.5, areaRng='small', maxDets=self.params.maxDets[2])
stats[13] = _summarize(1, iouThr=.5, areaRng='medium', maxDets=self.params.maxDets[2])
stats[14] = _summarize(1, iouThr=.5, areaRng='large', maxDets=self.params.maxDets[2])
print('-' * 30)
stats[15] = _summarize(0, iouThr=.5, areaRng='small', maxDets=self.params.maxDets[2])
stats[16] = _summarize(0, iouThr=.5, areaRng='medium', maxDets=self.params.maxDets[2])
stats[17] = _summarize(0, iouThr=.5, areaRng='large', maxDets=self.params.maxDets[2])
# ------------------------------------------------------lwd edit-------------------------------------------------- #
上面的_summarize()
函数里面可以传入4个参数,默认参数值是ap=1, iouThr=None, areaRng='all', maxDets=100
:
ap
:为1
就表示是计算Average Precision
,0
是Average Recall
iouThr
:iou值,默认值是None
,然后就是计算0.5:0.95
,通常还可以设置为.5
、.75
areaRng
:计算范围,默认是all
,还可以是small
、medium
、large
maxDets
:最大的检测目标数,默认是100
,通常还可以填写0
、10
通过设置上面的参数,就可以得到自己想要的值了
用完了之后记得还原哟!