coco如何生成tiny的结果

 做小目标的目标检测的伙伴应该都熟悉,COCO官方把32*32以下的目标定义为小目标,而当我们自己想从中剥离出更小的目标该怎么做呢?(如TOD数据集中指出目标平均像素体积为12.8这样)

  当32*32像素的目标不适合我们所需要更改这个尺寸的时候我们需要修改哪些内容呢?往下看,直接找到cocoval.py的源码,直接ctrl+f搜索small,找到对应有三个位置,第三个small在setDetParams函数中,源码如下:

def setDetParams(self):
    self.imgIds = []
    self.catIds = []
    # np.arange causes trouble.  the data point on arange is slightly larger than the true value
    self.iouThrs = np.linspace(.5, 0.95, int(np.round((0.95 - .5) / .05)) + 1, endpoint=True)
    self.recThrs = np.linspace(.0, 1.00, int(np.round((1.00 - .0) / .01)) + 1, endpoint=True)
    self.maxDets = [1, 10, 100]
    self.areaRng = [[0 ** 2, 1e5 ** 2], [0 ** 2, 32 ** 2], [32 ** 2, 96 ** 2], [96 ** 2, 1e5 ** 2]]
    self.areaRngLbl = ['all', 'small', 'medium', 'large']
    self.useCats = 1
   以0-13个像素划分为tiny指标为例对代码进行修改,主要就修改areaRng和areaRngLbl两行:

def setDetParams(self):
    self.imgIds = []
    self.catIds = []
    # np.arange causes trouble.  the data point on arange is slightly larger than the true value
    self.iouThrs = np.linspace(.5, 0.95, int(np.round((0.95 - .5) / .05)) + 1, endpoint=True)
    self.recThrs = np.linspace(.0, 1.00, int(np.round((1.00 - .0) / .01)) + 1, endpoint=True)
    self.maxDets = [1, 10, 100]
    #修改下面这两行
    self.areaRng = [[0 ** 2, 1e5 ** 2], [0 ** 2,13],[13, 32 ** 2], [32 ** 2, 96 ** 2], [96 ** 2, 1e5 ** 2]]
    self.areaRngLbl = ['all', 'tiny','small', 'medium', 'large']
    self.useCats = 1
    从上面的代码修改可以看出,我们加了一个0-13的区域对应着“tiny”这个指标,这样用coco指标进行计算的时候就会自动算出APtiny指标了(同理可以这样获得所有自己想要的指标)。接下来讲讲另外两个要改动的位置。

   前两个“small”在_summarizaDets函数中,该函数的作用是获取各级的AP以及AR指标以便后期打印信息,这里的每一行就是对应最终打印的指标信息。

    def _summarizeDets():
        stats = np.zeros((12,))
        stats[0] = _summarize(1)
        stats[1] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
        stats[2] = _summarize(1, iouThr=.75, maxDets=self.params.maxDets[2])
        stats[3] = _summarize(1, areaRng='small', maxDets=self.params.maxDets[2])
        stats[4] = _summarize(1, areaRng='medium', maxDets=self.params.maxDets[2])
        stats[5] = _summarize(1, areaRng='large', maxDets=self.params.maxDets[2])
        stats[6] = _summarize(0, maxDets=self.params.maxDets[0])
        stats[7] = _summarize(0, maxDets=self.params.maxDets[1])
        stats[8] = _summarize(0, maxDets=self.params.maxDets[2])
        stats[9] = _summarize(0, areaRng='small', maxDets=self.params.maxDets[2])
        stats[10] = _summarize(0, areaRng='medium', maxDets=self.params.maxDets[2])
        stats[11] = _summarize(0, areaRng='large', maxDets=self.params.maxDets[2])
        return stats

这里就直接和你们说一下要怎么修改吧,把tiny增加在small上面的位置(需要加两条,一条是AP一条是AR),另外一定要注意stats=np.zeros((12,))也要记得修改,加了两条就修改12-》14.
修改完上述两个内容之后直接运行yolov5的val.py测试一下,结果如下:
在这里插入图片描述
可以看出成功的获得了APtiny的指标了。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.youkuaiyun.com/Fan1534/article/details/137581936

### 配置 YOLOv4-tiny 运行环境 为了使 YOLOv4-tiny 能够正常运行,需要完成一系列的准备工作。以下是关于如何配置其运行环境的具体说明。 #### 1. 文件准备 将 `coco.names`、`yolov4-tiny-custom.cfg` 和 `yolov4-tiny-custom_best.weights` 放置于指定路径下,通常为项目的资源目录中,例如 Unity 中可以放置于 `Assets\StreamingAssets\OpenCVForUnity\dnn` 下[^1]。这一步骤确保模型权重和配置文件能够在程序加载时被正确读取。 #### 2. 安装依赖库 YOLOv4-Tiny 的运行依赖多个 Python 库的支持。按照官方文档中的指导,可以通过以下命令安装必要的依赖项: ```bash pip install torch torchvision opencv-python matplotlib numpy tqdm ``` 这些工具包提供了深度学习框架支持以及图像处理功能[^2]。 #### 3. 模型转换 (可选) 如果计划在其他平台(如 OpenCV 或 ROS)上部署该模型,则可能需要将其从 Darknet 格式转换成 ONNX 或 TensorFlow Lite 等通用格式。具体操作如下: - 使用 PyTorch 版本导出 ONNX 模型: ```python import torch from models.experimental import attempt_load device = 'cuda' if torch.cuda.is_available() else 'cpu' model = attempt_load('yolov4-tiny.pt', map_location=device) dummy_input = torch.randn(1, 3, 416, 416).to(device) torch.onnx.export( model, dummy_input, "yolov4_tiny.onnx", verbose=False, input_names=['input'], output_names=['output'] ) print("ONNX export complete.") ``` 此脚本会生成一个名为 `yolov4_tiny.onnx` 的新文件用于后续跨平台调用。 #### 4. 测试与验证 完成上述步骤之后,在终端执行测试命令来确认一切是否就绪。对于 Darknet 原生实现方式来说,进入 darknet 工作区并编译源码后即可尝试推理图片实例: ```bash cd darknet/ make ./darknet detector test cfg/coco.data yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg ``` 这里展示了如何利用预训练好的 tiny 权重对一张狗的照片进行预测分析[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值