在了解YOLOV3的原理以及撸完源码之后,为了提高自己对DarkNet53主干网络的认识以及自己的编码能力,我们可以开始尝试自己一步一步,从0到1搭建DarkNet网络,相信在学习完之后,一定会有一种打通任督二脉的快感!
第一步:庖丁解牛,肢解框架
DarkNet的整体结构如图1所示:
1.1 整体肢解
由上图可以看出。DarkNet的网络结构相对简单。即由初始的卷积层+残差结构。我们通合并同类项的方式,将一个下采样层+残差结构定义成Layer,模块相似的便于编程时将其定义为一个类。(比如除了整个网络结构可以定义成一个类,残差结构也可以定义为一个类。)此时整体就简化成如下结构:
这么一看,其实就是一个卷积层加上5个layers,so easy!
1.2 残差结构
残差网络结构的示意图如下:
其中的Convolutional层结构如下:
因为残差网络结构具有高度的重复性,所以在编写代码的时候可以将其写成一个类。