前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习: 选择合适的检测算法

深度学习: 选择合适的检测算法

作者头像
JNingWei
发布2018-09-27 11:45:24
5580
发布2018-09-27 11:45:24
举报
文章被收录于专栏:JNing的专栏JNing的专栏

算法的选择

如今落地的CV业务所用方法不一。但其中有两种算法简单高效,较为常用:

算法

优点

缺点

改进方案

RetinaNet

很简单、精度较高、速度快

fp较多

增加后处理

FPN + Faster R-CNN

较简单、精度很高、fp少

速度有待提高

简化basemodel

甚至连无人驾驶这种对实时性要求极高的应用场景,也多采用FPN+Faster R-CNN作为其基本算法。

还有的会用 Light-head R-CNNDeformable R-FCN 等。

其他算法,诸如YOLO系、SSD等等,都因为检测精度太差,而空有那么高的速度,采用较少。 SNIP一类的,普通显卡甚至都带不起来,更别提落地了。

Basemodel的选择

ResNet之前

在ResNet (2015.12) 出来之前,basemodel经历了从AlexNet一家独大,到VGG和GoogleNet平分天下的时期。

ResNet之后

ResNet出来后,由于其简单和强大,成为了basemodel的绝对标杆。

如今从业者一般遵循以下流程:

  1. 先用ResNet-50来验证算法的有效性;
  2. 直接导入pre-train好的模型,在自己的数据集上fine-tune一、二十个epoch即可;
  3. 当该算法在ResNet-50上切实有效后,如果要追求算法速度 (例如落地到移动端),则将basemodel替换为 Xception (较常用的是Xception-145) 、ShuffleNet、MobileNet等等;如果要追求精度 (例如发论文、打比赛刷榜),则将basemodel替换为 ResNet-101 / ResNeXt-101 / DenseNet / DPN 等等。

算法的训练

Basemodel部分,一般直接导入现成训练好的。之后在自己的数据集上fine-tune整个网络。

Training

市面上的涨点方法汗牛充栋,主要有Large/small kernel(大/小卷积核)、Loss function(目标函数)、Stronger basemodel(更强的basemodel)、Scale handling(尺度设计)、RoIAlign(对齐RoIPooling)、Deformable convolution(形变卷积)、Atrous convolution(空洞卷积)、Cascade(级联)、OHEM(在线困难样本挖掘)、BN(规范化)、Regulation(正则化)、Large mini-batch、Emsemble learning(集成学习)、Multi-scale training and testing等等。

But,绝大部分trick,都不如根据test情况,针对性地 加数据 来得实在。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法的选择
  • Basemodel的选择
    • ResNet之前
      • ResNet之后
      • 算法的训练
      • Training
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档