YOLOV到底做了什么?
YOLOV3的三目标检测算法。假设我们眼里看到是这样一幅图,这是一只猫,你们一眼就可以知道这只猫在什么位置。但是计算机要怎么确定这个猫的位置呢?计算机在图片上画出这个框需要四个参数,分别是中心点的 X 轴、外轴、坐标框的高和宽。有了这四个参数之后,计算机就能确定猫的位置了。
YOLOV3是怎么样确定这四个参数的呢?当一张图片被传入到 YOLOV3网络中时,首先被调整到 416 乘 416 的大小。为了防止失真,会在图像的边缘加上灰调之后,YOLOV3会将这幅图像分成 13 *13,26*26,52*522 的网格由于图像在多次卷积压缩后,小物体的特征容易消失,所以 52 * 52 的网格用于检测小物体。
13 * 13 的网格用于检测大物体。由于猫是一个比较大的物体,所以它有 13 * 13 的网格检测,每个网格点负责其右下角区域的检测。如果物体的中心点落在这个区域,这个物体的位置就由这个网格点来确定。总结而言,YOLOV3不过是把一张图片划分成不同的网络,每个网格点负责其右下角区域的预测。只要物体的中心点落在这个区域,这个物体就由这个网格点来确定。这就是 YOLOV3的原理了。
YOLOV用实战案例说明过程?
图像位置:x,y,w,h 网格:13*13;26*26;52*52,图像化分为网格 环境配置:Anaconda+Python3.7+CUDA7.4.1.5 ( 用 Cudnn10.0替换下面的包 )+按照pytorch 安装pytorch: conda create -n pytorch python=3.6; activate pytorch; pip install 包名(torch-1.2.0-cp36-c-36m-win_amd64.whl); pip install torchvision-0.4.0-cp36-cp36m-win_amd64.whl; import torch 主干特征提取网络-》提取特征 输入一个416*416*3-》进行下采样,宽高会不断的被压缩,通道数不断扩张; 我们获得一堆的特征层,用来表示输入进来图片的特征; 52,52,256; 26,26,512 ;13,13,1024 ,一共做了5次卷积后变成 13,13,75-》13,13,3(3个先验框),25(20+1-先验框是否有物体+4个参数属于一个先验框) 先把图片划分为不同大小的网格,每个网格中都会先用3个先验框来识别是否真实的包含物体,如果位置不合适,可以调整框的位置,从而提取特征,采用特征金字塔的模式进行特征提取。
先搞定核心的概念
1. layer
这一列顾名思义,是层名称。
数字是层编号,后面是层名称。
conv:卷积层。
res:shortcut层(跨层连接,借鉴 resnet 而来,所以用res表示)
yolo:YOLO层。
route:融合层,就是把层进行合并,然后输出到下一层。(后面再仔细讲)
upsample:上采样层。
2. filters
这是对于 conv 来说的,代表过滤器的通道数,和后面 output 的通道数是一致的。
(上述的过滤器和常说的卷积核是一样的东西,就是卷积运算的那个动函数)
这一列中对应非 conv 层的数字在后面讲解各层时再说明。
3. size
这一列和 filters 一样,也是只对于 conv 来说的,代表过滤器的大小和步长。
如:3 x 3 / 1,代表过滤器大小为 3*3,步长为 1。
4. input
这一层的输入,416 x 416 x 3,代表输入大小为 416 x 416,通道数为 3。
5. output
这一层的输出,416 x 416 x 32,代表输入大小为 416 x 416,通道数为 32。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)