MDig:Multi-digits Recognition Using ConVNet on Mobile

这是Stanford,Mobile Computer Vision课程的一个final report

简介

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

流程

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

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

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

总的流程图:

源码及文章

文章: 访问密码 ab86

源码

本文系作者原创,转载请先联系作者: 18254275587@163.com