您的位置:首页 > 编程语言 > Go语言

Multi-digits Recognition Using ConVNet on Mobile categories:

2016-03-06 15:46 309 查看
这是Stanford,Mobile Computer Vision课程的一个final report

简介

使用DeepBeliefSDK和opencv等工具,使用ConVNet模型做了一个Android APP。功能是能够从一张图中识别0-9几个数字。因为在移动设备上,设备的运算速度和memory都受到了限制,所以作者设计了一个简单的卷积网络(两层卷积两层maxpooling),并且使用了batching来加速识别速度。大致方法就是提取每一个digit的patch,分别输入CNN进行识别。使用的训练集是MNIST。

流程

PreProcess: 将图片转换成灰度图,使用Canny进行边缘检测去定位图片中digits的位置,得到bounding boxes。接下来要将图片转换成二值图,首先将bounding boxes外的区域设置为黑色,然后在bounding boxes中,使用下面图中的方程求出threshold,绘出bounding boxes内部的二值图(注意pixels只取bounding boxes内的)。注意,这个app只适用于背景比较干净的场合(比如一张白纸上写几个数字)。



Segment:提取到digits的patch,将图像还原成28 * 28的大小,以满足CNN的输入尺寸要求。

Batching CNN:意思就是:CNN在test的时候,在CPU上,本来是输入一张图片,所以在FC层执行的是vector-matrix 乘法,那么若是先把多张图片经过卷积层得到各自vector,再将vector组合成matrix,然后在FC层执行matrix-matrix操作。因此,run-time得到提升。提升比例见下图:





总的流程图:



源码及文章

文章: 访问密码 ab86

源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息