[目标检测] 如何获取数据集对应的anchor size

背景:由于yolov5需要根据size生成候选anchor,因此用yolov5训练某个特定的数据集时,如果没有设置对应的anchor size。那么可能出现很多乱框的现象。

可以通过.pt文件就能读取到anchor size的参数。输入是.pt文件,输出是

python 复制代码
const int anchor0[6] = {3, 5, 6, 5, 5, 11};
const int anchor1[6] = {10, 9, 10, 17, 21, 11};
const int anchor2[6] = {20, 25, 39, 21, 47, 47};
python 复制代码
import torch
from models.experimental import attempt_load

model = attempt_load('/root/yolov5-master/runs/train/exp8/weights/best.pt')
m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1]

# Convert to CPU for easier manipulation
for i, grid in enumerate(m.anchor_grid):
    grid = grid.cpu()  # Move to CPU if on GPU
    anchor_sets = []

    # Traverse the second dimension (3 anchor sets)
    for j in range(3):  # Since the second dimension is of size 3
        # Extract the first two 'anchors' from each set (assuming we only want the first two for each set)
        anchor_pair = grid[0, j, 0, 0].tolist()  # [0, 0] for spatial dimensions, assuming we want the first anchor
        anchor_sets.append([round(x) for x in anchor_pair])

    # Flatten and format for C-style declaration
    flat_anchors = [item for pair in anchor_sets for item in pair]
    print(f"const int anchor{i}[6] = {{{', '.join(map(str, flat_anchors))}}};")
相关推荐
正在走向自律14 分钟前
当AI Agent遇上CRM:客户关系管理的智能化变革(29/30)
人工智能·crm系统·ai agent·ai智能体
滴滴哒哒答答1 小时前
《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统
人工智能·机器人·自动驾驶
从零开始学习人工智能1 小时前
傅里叶变换在语音识别中的关键作用
人工智能·语音识别
Landy_Jay2 小时前
深度学习:大模型Decoding+MindSpore NLP分布式推理详解
人工智能·深度学习
一点一木2 小时前
从零开始:使用 Brain.js 创建你的第一个神经网络(一)
前端·javascript·人工智能
cooldream20092 小时前
数据可视化:让数据讲故事的艺术
人工智能·知识图谱
Ajaxm3 小时前
3dgs代码+原理
计算机视觉·3d
paixiaoxin3 小时前
解读CVPR2024-3DGS论文分享|DNGaussian: Optimizing Sparse-View 3D Gaussian Radiance Fields with .....
人工智能·深度学习·算法·机器学习·3d·cvpr·3dgs
咸鱼葵3 小时前
SIBR详细介绍:基于图像的渲染系统及3DGS实例展示【3DGS实验复现】
人工智能·计算机视觉·3d
无意21213 小时前
【自动驾驶BEV感知之Transformer】
人工智能·自动驾驶·transformer