YOLOv8模型结构构件及问题汇总【持久更新】
我们的目标是星辰大海
yolov8多个模型结构说明
https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models/v8
分为多个模型组合,即融合了不同的模型结构,有轻量化或者分割领域等不同适配领域的特点。
ECCV 2024 Accepted Paper List - Paper Copilothttps://papercopilot.com/paper-list/eccv-paper-list/eccv-2024-paper-list/顶会论文作为参考
如果需求为检测小目标
以下是几个思路:
一、
考虑使用图像拼接(在推理前将图像分割成更小的块),以有效提高模型检测的分辨率
二、
修改模型的 YAML 文件以使用更高分辨率的输入尺寸,或者调整深度和宽度因子以实现更精细的特征学习。
三、
数据增强
轻量模型优化:如果你的项目目标是提升模型的实时性并在嵌入式设备上运行,可以选择 SimAM 或 ECA 这样的轻量级注意力机制。
大规模场景建模:对于涉及复杂背景的目标检测任务,MHSA 或 CBAM 可以有效增强模型对全局特征的捕捉能力。
多目标检测:当你的项目涉及复杂的多目标检测场景(如自动驾驶中的多物体检测),可以尝试使用 ShuffleAttention 或 TripletAttention,它们在捕捉多方向和通道交互特征方面表现出色。
计算效率优化:如果你关注模型的计算效率,可以选择 EMA 来在保持高性能的同时减少计算开销。
参考来源于:https://blog.csdn.net/qq_39045712/article/details/142456611
结论
删除大目标的检测头(效果没有添加上好,但是确实轻量化,针对小目标还得用提精准度的结构)
抽烟检测模型尝试
探索Ultralytics YOLOv8 -Ultralytics YOLO 文档了解Ultralytics YOLOv8,它是实时物体检测领域的一大进步,通过一系列预训练模型优化了性能,适用于各种任务。https://docs.ultralytics.com/zh/models/yolov8/
模型改进参考
https://zhuanlan.zhihu.com/p/650309601https://zhuanlan.zhihu.com/p/650309601
模型结构基础知识
基础知识一
一、首先我们要知道自己添加模块的代码
class EMA(nn.Module): # 定义一个继承自 nn.Module 的 EMA 类def __init__(self, channels, c2=None, factor=32): # 构造函数,初始化对象super(EMA, self).__init__() # 调用父类的构造函数self.groups = factor # 定义组的数量为 factor,默认值为 32assert channels // self.groups > 0 # 确保通道数可以被组数整除self.softmax = nn.Softmax(-1) # 定义 softmax 层,用于最后一个维度self.agp = nn.AdaptiveAvgPool2d((1, 1)) # 定义自适应平均池化层,输出大小为 1x1self.pool_h = nn.AdaptiveAvgPool2d((None, 1)) # 定义自适应平均池化层,只在宽度上池化self.pool_w = nn.AdaptiveAvgPool2d((1, None)) # 定义自适应平均池化层,只在高度上池化self.gn = nn.GroupNorm(channel