请问怎样用CNN对不同位置,角度,大小的 圆,三角形与矩形进行检测与分类
谷歌机器学习大牛、TensorFlow 团队成员 Peter Warden 曾写过一篇名为《How do CNNs Deal with Position Differences?》(CNN 是如何处理不同位置的?)的博客,讨论了当模型要识别的对象出现在图像中不同位置时,CNN 是如何处理和识别的。集智现将本篇博文分享过来,或许 Peter 的解答不够完善,但应该能为你提供一些启发。
前不久,有位正在学习用 CNN 做图像分类工作的工程师问了我一个很有意思的问题:CNN 模型是怎么识别一张图中不同位置的物体的?由于回答这个问题实际上要解释很多东西,所以我(作者 Peter Warden ——译者注)决定把我自己的思路写出来,帮助其他同样有这个困惑的人。
下面这两张示例图可以表示出我这位朋友提到的问题:
如果你想识别出所有包含太阳图案的图像,怎么能确保不管这个图案在图像中任何地方,模型都能识别出来?这是个很有趣的问题,因为在你理解它之前实际上需要经过 3 个启蒙阶段:
你还没接触计算机编程,这个问题看上去很简单,对于人类的眼睛和大脑来说,处理图案位置差异是没有问题的。你想用传统编程解决同样的问题,你估计会崩溃的,因为你很快就会明白处理输入差异会有多困难。作为一个经过认证的深度学习大师,你此时可能就会手捻胡须,微微一笑,用神经网络就能解决掉这些琐碎的问题。
问我这个问题的朋友就处在第三个阶段,他自己也大致了解为何 CNN 能有如此好的图像处理效果。我对我自己提出的见解倒不觉得非常有新意,但过去几年在图像模型领域的工作经历给了我很多体会,再结合学术圈里“代代相传”的一些说法,我想把我知道的东西分享给大家。
理解这个问题的起点就是你要知道神经网络并非天然对位置差异问题免疫。我最开始发现这个问题在用图像数据集 ImageNet 训练神经网络的时候。ImageNet 数据集的历史可谓悠久,由谷歌云首席 AI 科学家李飞飞当年组织人力创建而成。
李飞飞
当时图像搜集人员最初利用谷歌图片搜索通过搜索类名称从公共网络中采集示例图片,然后再人工从中剔除错误图像。我有一个哥们 Tom White,一直热衷于在这项剔除错误图像的工作中找乐子,发现了不少很滑稽的错误,比如好多女模特的照片居然出现在垃圾车的类别下面...
我说这些想表达的意思是,训练集中的所有图像都是由人类拍摄并发布到网站上的,而且在网络搜索中排序都很靠前。这意味着它们比随机截图要专业的多,特别是图像中的物体通常布局良好,靠近中间位置,以平视角拍摄,而且占据了画面的大部分。
相比之下,我们拿手机摄像头对准一个物体,让分类模型去处理图像,往往得到的照片有很奇怪的角度,可能是俯视拍摄的,可能物体只有一部分在镜头中。所以,使用 ImageNet 训练出的模型在识别手机拍摄的照片时,其表现要比论文里发表的准确率差的很远,因为模型的训练数据和用户实际展示的数据大不相同。如果你在手机上下载了 TensorFlow Classify 应用的话,还能看到类似的问题。图像分类模型在手机上效果不佳还不是最糟的,因为至少用户在拍摄图像时至少还会取景,最糟的问题发生在机器人及类似设备上。因为这些设备的摄像头定位完全是随意的,使用 ImageNet 训练的模型常常被搞得晕头转向,表现非常差劲。我通常建议这些应用的开发者们,使用和目标设备类似的设备拍摄的照片作为训练集,因为常常会出现很多差异因素,比如鱼眼镜头。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 在上海陆家嘴附近工作,请问去哪边租房会比较好
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
