本文是对2016年网络程序设计课程项目的总结。
SA16225060 付何山 coding.net 课程项目地址
一、前言
重新点开上学年网络程序设计课程的项目,感慨良多。现在在实习期间在公司也做一些深度学习框架的修改与支持工作,虽然频繁接触框架的源码,对所谓的黑盒深度学习底层实现了解比以前深了,但却仍然只是工程性的填补,对深度学习上层的架构的理解依然停留在入门。重新接触这个项目,依然感觉很是吃力,毕竟是许多人一学期的结晶,想要通过在工作间隙的了解依然十分困难,下面仅就这个项目写写自己的理解,如有错误请多海涵。
二、项目介绍
课程目标
该课程旨在完成一个基于机器学习神经网络的一个医学辅助诊断系统。首先通过对病人血常规化验单进行图像识别来采集血常规数据,再利用通过大量真实数据训练出来的预测模型对病人的性别和年龄进行预测,通过对各项血常规数据的分析来实现对病人性别和年龄的预测。
课程自己的项目地址
配置安装方式
安装前置依赖
sudo apt-get install python2.7 python2.7-dev python3.2 python3.2-dev
sudo apt-get install build-essential libssl-dev libevent-dev libjpeg-dev libxml2-dev libxslt-dev
安装python模块
本例使用的是python 2.7
安装pip
sudo apt-get install python-pip
安装numpy
sudo apt-get install python-numpy
安装opencv
sudo apt-get install python-opencv
更新环境变量
vim /etc/bash.bashrc
在文件末尾添加两行代码
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages
export PYTHONPATH="${PYTHONPATH+${PYTHONPATH}:}/usr/local/lib/python2.7/site-packages"
安装OCR和预处理的相关依赖
sudo apt-get install tesseract-ocr
sudo pip install pytesseract
sudo apt-get install python-tk
sudo pip install pillow
安装Flask框架、mongodb’
sudo pip install Flask
sudo apt-get install mongodb
sudo service mongodb started
sudo pip install pymongo
WARNING:若import cv2报no module name cv2,需要从源码编译opencv安装。在我的项目中因为opencv版本问题,对opencv接口做了少量修改,可能造成无法移植的问题
安装tensorflow
pip install --upgrade
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-
0.12.0rc0-cp27-none-linux_x86_64.whl
运行demo
cd BloodTestReportOCR
python view.py
在浏览器打开http://localhost:8080,上传图像
部署到web服务器
三、项目分析
项目演示
用户在首页选择上传自己的血常规检验报告图片
点击提交后可以在页面上预览到校正裁剪后的报告单图片
点击生成按钮,系统识别出图片中的数据,填充在按钮下方的表格中,用户可以修改部分有误差的数据
点击预测按钮,系统给出性别和年龄的预测结果
模块总述
本项目分三大模块:web可视化模块、图像处理和OCR模块、学习预测模块。
web可视化模块
采用Flask搭建web应用;前端采用Bootstrap,jQuery, Vue.js 来实现
文件名:view.py
Web 端上传图片到服务器,存入mongodb并获取oid; 前端采用了vue.js, mvvm模式
图像处理和OCR模块
根据图像的特点做几何特征提取、识别和预处理等,比如滤波,傅里叶变换,边缘检测等
文件名:imageFilter.py
对获取到的上传的血常规化验单图片进行预处理,主要是为了减小噪声,以便识别,主要封装了两个方法:对图像透视裁剪和OCR,以便于模块间的交互,规定适当的接口
文件名:classifier.py
用于判定裁剪矫正后的报告和裁剪出检测项目的编号
文件名:imgproc.py
将识别的图像进行处理二值化等操作,提高识别率 包括对中文和数字的处理
文件名:digits
将该文件替换Tesseract-OCR\tessdata\configs中的digits
学习预测模块
对样本数据进行机器学习的神经网络训练,并预测性别和年龄
文件名:tf_predict.py
对页面上传过来的数据使用训练好的模型进行预测性别和年龄
文件名:sex_predict.py、age_predict.py
进行样本的训练,训练出性别和年龄的预测模型
文件名: