YOLOV3中卷积层,池化层,yolo层理解

前言:YOLOV3学习笔记,记录对卷积层,池化层,yolo层的理解,阐述深度学习中卷积核,通道数相关名词的含义。

yolov3-tiny网络如下:

YOLOV3中卷积层,池化层,yolo层理解_第1张图片

卷积层

0层为卷积层,其中filters=16,表示的卷积核的个数,即所做的卷积的次数。size=3*3/1,表示每个卷积核的尺寸为3*3,卷积移动的步长为1,意味着输出的图像尺寸与输入的大小一致。如果步长为2,则输出的图像尺寸将是输入的一半。

输入为416*416*3,即将样本图像重采样为416*416*3的RGB三通道图像,输出怎么是416*416*16了呢?

卷积核的通道数一般在cfg文件中不直接写明,因为他是由输入图像的通道数决定的,如果是RGB图像,则卷积核的通道数即为3。对于0层卷积层,一个卷积核的操作是使用3*3*3的卷积核对图像的三个通道分别进行卷积操作后平均加权输出,输出为416*416*1,16个卷积核即为416*416*16。

备注:最后一列指明了该卷积操作的计算量为1.5亿次浮点型操作。

池化层

池化层即为重采样,深度学习中基本有两种池化方式,最大池化和平均池化。下面举例说明:

yolov3-tiny中1层为池化层,池化的尺寸大小为2*2,步长为2,最大池化是将红框中四个数取最大的作为输出,平均池化是将四个数的平均值作为输出。步长为2指下一个池化操作为当前位置向后移动两个位置,即对3,4,7,8四个数做最大池化。

YOLOV3中卷积层,池化层,yolo层理解_第2张图片

很明显当步长为2时,池化操作后,输出尺寸将是输入的一半,所以1层的输出为208*208*16。在yolo层以前,基本是每一层的输出作为下一层的输入。

池化操作是基本不耗时的,深度学习的耗时主要是在卷积层。

yolo层

route=13表示取前面13层的输出,route=19,8表示取第19层和第8层的输出。

在yolov3-tiny中有两个yolo层输出,下图示例中的yolo3-tiny一个输出大小为13*13*24,另一个为26*26*24,两个yolo层的输出为两个不同的尺度,在yolov3中则有三种尺度。在yolov3-tiny中,13*13*24中13*13是固定的,24数值取决于你检测目标的类别数目,我检测的是3类,所以是24,那24是怎么来的呢?

24=(4+1+class)*3,其中4代表着目标物的位置信息,1为置信度信息,class为类别数目,3代表anchor的数目。

YOLOV3中卷积层,池化层,yolo层理解_第3张图片

你可能感兴趣的:(#,Darknet与YOLO,卷积核,通道数,yolo层,卷积层)