(一)YOLO目标识别模型
——Darknet53网络结构
参考
本文链接: https://blog.csdn.net/leiduifan6944/article/details/104857968
前言
YOLO算法的出现,将回归思想引入目标识别处理过程,最终直接输出物体的位置、置信度和类别信息。YOLOv3在结构中模块与模块的衔接采用张量拼接,不同于残差层的add操作。
YOLO的主要骨架采用53个卷积层的Darknet53网络结构。
使用残差(Residual)神经网络的必要性:网络越深,梯度消失的现象就越来越明显,网络的训练效果也不会很好。残差神经网络就是为了在加深网络的情况下又解决梯度消失的问题。残差结构可以不通过卷积,直接从前面一个特征层映射到后面的特征层(跳跃连接),有助于训练,也有助于特征的提取,容易优化。
原文链接:https://blog.csdn.net/weixin_39615182/article/details/109752498
一、YOLO的主要骨架
如图所示为YOLO的主要骨架,即Darknet53网络结构
二、介绍
1.创建卷积块
创建卷积类,一次性完成卷积+归一化+激活。
class Conv(nn.Module):
def __init__(self, c_in, c_out, k, s, p, bias=True):
"""
自定义一个卷积块,一次性完成卷积+归一化+激活,这在类似于像DarkNet53这样的深层网络编码上可以节省很多代码
:param c_in: in_channels
:param c_out: out_channels
:param k: kernel_size
:param s: stride
:param p: padding
:param bias: …
"""
super(Conv, self).__init__()
self.conv = nn.Sequential(
nn.Conv2d(c_in, c_out, k, s, p),
nn.BatchNorm2d(c_out),
nn.LeakyReLU(0.1),
)
def forward(self, entry):
return self.conv(entry