RT-DETR使用教程: RT-DETR使用教程
RT-DETR改进汇总贴:RT-DETR更新汇总贴
《EfficientDet: Scalable and Efficient Object Detection》
一、 模块介绍
论文链接:https://arxiv.org/abs/1911.09070
代码链接:https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch
论文速览:
模型效率在计算机视觉中变得越来越重要。在本文中,我们系统地研究了对象检测的神经网络架构设计选择,并提出了几个关键优化以提高效率。首先,我们提出了一种加权双向特征金字塔网络 (BiFPN),它允许简单快速的多尺度特征融合;其次,我们提出了一种复合缩放方法,可以同时统一缩放所有主干、特征网络和盒/类预测网络的分辨率、深度和宽度。基于这些优化和更好的主干网络,我们开发了一个新的对象检测器系列,称为 EfficientDet,它在广泛的资源限制下始终实现比现有技术高得多的效率。特别是,在单模型和单尺度下,我们的 EfficientDet-D7 在 COCO 测试开发中实现了最先进的 55.1 AP,具有 77M 参数和 410B FLOPs1,与以前的探测器相比,体积缩小了 4 至 9 倍,使用的 FLOP 减少了 13 至 42 倍。
总结:文章提出一种BiFPN结构,可替代现有的PANet结构。
二、 加入到RT-DETR中
2.1 创建脚本文件
首先在ultralytics->nn路径下创建blocks.py脚本,用于存放模块代码。
2.2 复制代码
复制代码粘到刚刚创建的blocks.py脚本中,如下图所示:
class BiFPN(nn.Module):
def __init__(self, c1, c2):
super(BiFPN, self).__init__()
self.w = nn.Parameter(torch.ones(len(c1), dtype=torch.float32), requires_grad=True)
self.conv = Conv(sum(c1), c2, k=1, s=1, p=0)
self.epsilon = 0.0001
def forward(self, x):
w = self.w
weight = w / (torch.sum(w, dim=0) + self.epsilon)
return self.conv(torch.cat([weight[i] * x[i] for i in range(len(x))], dim=1))
2.3 更改task.py文件
打开ultralytics->nn->modules->task.py,在脚本空白处导入函数。
from ultralytics.nn.blocks import *
之后找到模型解析函数parse_model(约在tasks.py脚本中940行左右位置,可能因代码版本不同变动),在该函数的最后一个else分支上面增加相关解析代码。
elif m is BiFPN:
c1 = [ch[i] for i in f]
c2 = args[0]
args = [c1, *args]
2.4 更改yaml文件
打开更改ultralytics/cfg/models/rt-detr路径下的rtdetr-l.yaml文件,替换原有Concat模块,本文以自研DETR测试。
2.5 修改train.py文件
创建Train_RT脚本用于训练。
from ultralytics.models import RTDETR
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
if __name__ == '__main__':
model = RTDETR(model='ultralytics/cfg/models/rt-detr/rtdetr-l.yaml')
# model.load('yolov8n.pt')
model.train(data='./data.yaml', epochs=2, batch=1, device='0', imgsz=640, workers=2, cache=False,
amp=True, mosaic=False, project='runs/train', name='exp')
在train.py脚本中填入修改好的yaml路径,运行即可训。
三、相关改进思路(2024/11/23日群文件)
该模块可如图加入到HGBlock、RepNCSPELAN4、RepC3等模块中,代码见群文件,结构如图。自研模块与该模块融合代码及yaml文件见群文件。
⭐另外,融合上百种改进模块的YOLO项目仅119(含百种改进的v9),RTDETR119,含高性能自研模型,更易发论文,代码每周更新,欢迎点击下方小卡片加我了解。⭐
⭐⭐平均每个文章对应4-6个二创及自研融合模块⭐⭐