AI项目笔记
【代码】YOLO项目笔记。
目录
5.1 Downsample + BatchNorm + LeakyReLU模块
第1章 训练模型和推理框架
1.1 训练模型
AI算法开发借助训练框架完成。
1.2 推理框架
AI算法落地借助推理框架完成。
1.3 训练模型与推理框架的关系

1.4 推理框架在实际应用场景中的作用

1.5 主流的推理框架

第2章 yolov8的onnx输入输出详解
2.1 coco数据集
coco数据集有80个目标类别

2.2 目标检测
2.2.1 输入和输出参数物理意义
![]() |
![]() |
(1)输入的【1 * 3 * 640 * 640】。1表示一张图像(batch_size),3表示RGB三个通道,640*640表示图像的宽和高。
(2)输出的【1*84*8400】。1表示一张图像(batch_size)。
84表示:[ x, y, w, h, class_score_1, class_score_2, ..., class_score_80 ]。如果是检测5个类别就是4+ 5 = 9;
x:目标中心点的 x 坐标;
y:目标中心点的 y 坐标;
w:目标框的宽度;
h:目标框的高度;
class_score_xxx:80 个类别的分类概率;
YOLOv8(尤其是 v8 及之后版本)采用的是 Anchor-Free(无锚框)设计;
每个网格单元(grid cell)只负责预测一个边界框(Anchor Boxes)(而不是像 YOLOv3/v5 那样每个 grid 预设 3 个 anchor);
至此8400表为:(80*80 + 40*40 + 20*20)* 1;
特征图尺寸 对应 stride 网格数量(即预测框数) 80 × 80 8 80 × 80 = 6400 40 × 40 16 40 × 40 = 1600 20 × 20 32 20 × 20 = 400
数学上(代码处理中),需要处理8400行数据,每一行有84个物理量(变成了矩阵解析)。
2.2.2 自定义数据集
如果检测类别是5个类别,那么就会变成1*9*8400。
在实际开发中,尽量关注输入和输出即可,需要灵活掌握。
2.4 实例分割
2.5 旋转目标检测
2.6 关键点检测
第3章 yolov5的onnx输入输出详解
3.1 coco数据集
coco数据集有80个目标类别
3.2 输入输出参数的物理意义
|
|
(1)输入的【1 * 3 * 640 * 640】。1表示一张图像(batch_size),3表示RGB三个通道,640*640表示图像的宽和高。
(2)输出的【1*25200*85】。1表示一张图像(batch_size)。
84表示:[ x, y, w, h, objectness,class_score_1, class_score_2, ..., class_score_80 ]。如果是检测5个类别就是4+ 5 = 9;
x:目标中心点的 x 坐标;
y:目标中心点的 y 坐标;
objectness得分:表示该边界框内含有物体的概率,范围从0到1。
w:目标框的宽度;
h:目标框的高度;
class_score_xxx:80 个类别的分类概率;
YOLOv5采用的是 Anchor-Based设计;
每个网格单元(grid cell)负责预测3个边界框(Anchor Boxes);
至此25200表为:(80*80 + 40*40 + 20*20)* 3;
特征图尺寸 对应 stride 网格数量(即预测框数) 80 × 80 8 80 × 80 = 6400 40 × 40 16 40 × 40 = 1600 20 × 20 32 20 × 20 = 400
数学上(代码处理中),需要处理25200行数据,每一行有85个物理量(变成了矩阵解析)。
3.3 自定义数据集
如果检测类别是7个类别,那么就会变成1*25200*( 4 + 1 + 7)。
在实际开发中,尽量关注输入和输出即可,需要灵活掌握。
第4章 yolov5的RKNN输入输出详解
第5章 yolov8的RKNN输入输出详解

5.1 Downsample + BatchNorm + LeakyReLU模块
def DBL(c1, c2, k=1, s=1, p=None, act=True):
"""
构建一个标准卷积块:Conv2d + BatchNorm2d + (可选)LeakyReLU
参数:
c1: 输入通道数
c2: 输出通道数
k: 卷积核大小 (kernel size)
s: 步长 (stride)
p: 填充 (padding),若为 None 则自动计算为 (k-1)//2
act: 是否添加 LeakyReLU 激活函数
"""
if p is None:
p = (k - 1) // 2 # 自动 padding,保持尺寸不变(same padding)
layers = [
nn.Conv2d(c1, c2, kernel_size=k, stride=s, padding=p, bias=False),
nn.BatchNorm2d(c2)
]
if act:
layers.append(nn.LeakyReLU(0.1, inplace=True))
return nn.Sequential(*layers)
第xxx章 参考文献
自定义推理框架
更多推荐







所有评论(0)