YoloV8 和YoloV5类似,主要是对Yolov5上的一些改进与创新
整体网络架构
整体网络架构如图:
对比YoloV5:
先看整体架构,和V5 类似,也是使用了Backbone, neck, head 的方式,最终输出三个特征层。
Backbone
Backbone 中使用了改进的CSPDarNet,与V5的CSP DarkNet 相比,有以下不同:
-
在YOLOv8中,self.stem的ksize(卷积核大小)是3,而在YOLOv5中是6。
-
YOLOv8使用了C2fLayer,而YOLOv5使用了CSPLayer。
-
YOLOv8中的num_blocks(块的数量)是[3,6,6,3],而YOLOv5中是[3,6,9,3]。
-
M/L/X版本的最后一阶段的通道数有所不同。
拿第一个阶段的C2fLayer 和CSPLayer 对比:
这里我看的是PaddleYolo 复现Yolov8的代码,因为习惯用PaddlePaddle
c2f: 输入是128,然后走一个1*1 的BaseConv(卷积+池化+激活)输出还是128,,然后使用split 分成两个64,最后那个继续往下走3次bottlenecks(两个3*3De BaseConv,输出大小不变),并将每次经过bottlenecks 的结果存下来