From: 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能
貌似不错的东西:移动端视觉识别模型:MobileNets
Holistically-nested Edge Detection
是屠卓文教授课题组在ICCV 2015 的工作。
该工作最大的亮点在于,一改之前边缘检测方法基于局部策略的方式,而是采用全局的图像到图像的处理方式。
即:不再针对一个个patch进行操作,而是对整幅图像进行操作,为高层级信息的获取提供了便利。
题材看上去很对口的样子,阅读笔记
- 在卷积神经网络适用的领域里,已经出现了一些很经典的图像分类网络,比如 VGG16/VGG19,Inception v1-v4 Net,ResNet 等,这些分类网络通常又都可以作为其他算法中的基础网络结构,尤其是 VGG 网络,被很多其他的算法借鉴,本文也会使用 VGG16 的基础网络结构
- 具体使用到的神经网络算法,只是本文的一个组成部分,除此之外,本文还介绍了如何裁剪 TensorFlow 静态库以便于在手机端运行,如何准备训练样本图片,以及训练神经网络时的各种技巧等等
传统的技术方案
调用 OpenCV 里面的两个函数,cv2.Canny() 和 cv2.findContours()。
结合现实继续优化,加强鲁棒性:
-
- 改进 canny 算法的效果,增加额外的步骤,得到效果更好的边缘检测图
- 针对 canny 步骤得到的边缘图,建立一套数学算法,从边缘图中寻找出一个合理的矩形区域
canny 算法的检测效果,依赖于几个阈值参数,这些阈值参数的选择,通常都是人为设置的经验值,在改进的过程中,引入额外的步骤后,通常又会引入一些新的阈值参数,同样,也是依赖于调试结果设置的经验值。整体来看,这些阈值参数的个数,不能特别的多,因为一旦太多了,就很难依赖经验值进行设置,另外,虽然有这些阈值参数,但是最终的参数只是一组或少数几组固定的组合,所以算法的鲁棒性又会打折扣,很容易遇到边缘检测效果不理想的场景
在边缘图上建立的数学模型很复杂,代码实现难度大,而且也会遇到算法无能为力的场景