前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习用于图片的分类和检测总结

深度学习用于图片的分类和检测总结

作者头像
用户3578099
发布2019-08-16 17:29:22
9410
发布2019-08-16 17:29:22
举报
文章被收录于专栏:AI科技时讯AI科技时讯

1. CNN用于分类:具体的过程大家都知道,无非是卷积,下采样,激活函数,全连接等。CNN用于分类要求它的输入图片的大小是固定的(其实不单单是CNN,很多其它的方法也是这样的),这是它的一个不足之处之一。目前的大部分CNN都是用来做分类比较多。

2. CNN用于检测:主要的方法有两种,细分一下有三种:

第一种最为简单和暴力的,通过滑动窗口的方法,提取一个固定大小的图像patch输入到CNN网络中,得到该patch的一个类别,这样得到一个图片密集的类别得分图。显然,这种方法的一个弊端就是运算量太大,如果图片的分辨率比较的大,就根本无法进行下去,更何况,这还是在没有考虑图片多尺度检测的情况。

第二种方法,在第一种方法的基础之上,采用了动态规划的思想,避免了重复计算问题。对于CNN来说,直到第一个全连接层之前,它的输入图片大小是可以不固定的,但是有了全连接层之后,就要求输入大小保持一致,第二种方法是先把任意大小的图片进行输入CNN直到第一个全连接层,然后再在它的基础上进行固定大小的滑动窗口输入到全连接层中,由于第一个全连接层之前进行了大量的下采样操作,所以这时候的滑动窗口的数目就大大的减少了,而且前面的卷积操作就要计算一次,没有重复计算的问题。CNN里面有一个trick就是把训练好了的用于分类的网络,把它的全连接层参数转化为卷积层参数。这样改造后的CNN就成了全卷积CNN,它的输入是可以任意的,而它的输出是patch 的类别得分。这个在Caffe里面有一个例子说明怎么转换。网址在这里:http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb

第三种方法,跟前两种不同的是,它不是采用滑动窗口的方法,而是采用提取子窗口的方法,这种方法最典型的是今年的CVPR2014的R-CNN方法,它先采用一个方法来进行生成1000-2000左右的窗口区域(类似于目标显著性检测,但又不同,英文的说法叫Objectness,不好翻译),然后再把这些窗口归一化到相同的大小放到CNN里面去做分类。(当然RCNN的方法只是用训练好了的CNN进行提特征,它还需要进行对每一个类别进行训练SVM分类器)。显然这种方法的优点的是比前两种快,因为分类的窗口少,但是它也有不足就是,它要保证要检测的目标在这些1000-2000个提取的窗口中的概率要足够的高,也就是要有比较高的召回率。再者,它要保证这1000-2000个窗口的提取要足够的快,(在R-CNN中,由于它采用的方法生成窗口很慢,所以实际上整个检测是比较慢的。)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技时讯 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档