YOLOv2实现分析与改进思考

目标检测算法实现细节

 

代码:https://github.com/experiencor/keras-yolo2

1 网络结构的构建

输入维度:

    416*416(yolo v2为全卷积网络,可以接受任意尺寸的图像输入)

输出维度:

    13*13*(5+80/20

    栅格数*anchor box个数*(5+类别数)

    5中1个元素表示是目标的置信概率,4个元素为目标框的信息(x,y,w,h)

网络结构

    跑过的是yolov2-voc的模型,共23个卷积层,参照goolenet的设计结构,不过没有使用goolenet中的inception模块,而是简单的使用1*1卷积后面接3*3卷积的模式,简化网络

  • 卷积滤波器模板:主要用到3*3卷积(same模式)和1*1卷积(主要用于压缩通道),1*1卷积也可以用于构建瓶颈层,降低计算成本(比如将28*28*192->28*28*32变为中间插入1*1  卷积,28*28*16)

  • 池化模板:主要用到2*2的池化,用于缩小尺寸,共有5个池化层(1/2/5/8/13)

  • 每层进行Batch Norm,规范化网络,学习速度更快,而且有正则化效果,无需在进行dropout

  • 用leakyRelu的激活函数(相比relu解决了神经死亡问题,相比sigmoid和tanh函数,减轻了梯度消失问题)

优化方法

  • Adam梯度下降算法

训练样本

  • voc2007

  • 训练集和测试集均为2500多张图片,6300多个目标,类别20(人、动物、交通工具、室内物体)

anchor box的作用思考

  • 学习时有一定参考,可以更快收敛

  • 让一个栅格可以检测多个目标

2 loss函数的构建

loss

  • 四类loss,分别是object、noobject、class、coord。总体loss是四个部分的平方和

  • 权重不同,对有目标的权重为5,其余为1

  • yolov2不直接预测位置信息,而是预测位置相对于anchor box的变换关系

下图分别为yolo_v1和yolo_v2的loss函数

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值