神经网络程序设计课学习心得

本课程的目标是通过学习神经网络和深度学习等机器学习算法来搭建一个完整的血常规检测报告单的年龄和性别预测系统。项目的最后效果就是,用户上传一张血常规报告单的图片,后台首先进行OCR识别出图片中的项目,将其存入MongoDB,然后会根据机器学习算法生成的模型对用户数据进行预测。
摘要由CSDN通过智能技术生成

USTC-NP2016课程学习

课程目标

  本课程的目标是通过学习神经网络和深度学习等机器学习算法来搭建一个完整的血常规检测报告单的年龄和性别预测系统。项目的最后效果就是,用户上传一张血常规报告单的图片,后台首先进行OCR识别出图片中的项目,将其存入MongoDB,然后会根据机器学习算法生成的模型对用户数据进行预测。


项目地址及安装

  1. 我自己fork分支地址,有详细的安装说明;
  2. 课程地址,有详细的实验要求;
  3. 主项目地址,里面包含了其他平台机器学习算法和很多其他同学的贡献;

项目演示

  演示过程如下:

  1. 系统首页
    index

  2. 选择一个血常规图片,提交上传报告后
    submit

  3. 点击生成报告,会得到一个OCR的识别报告单
    report

  4. 确认数据无误后,点击预测
    predict


项目模块分析

  本项目分两大部分,前端展示和后台OCR及预测;三大模块,web模块,图像OCR模块,学习预测模块。我主要实现了web模块和学习预测模块,图像处理模块主要是这位同学的贡献。我的pr主要有两个:
1. 搭建了wep app, 完成了图片上传并存入Mongodb;
2. 封装了图像OCR模块成ImageFilter,规定适当的接口,使其便于模块交互,并完成了图片识别的前后台;这一部分主要是根据已完成的部分搭积木;
3. 在自己的分支上完成了自己实现的神经网络的整合,使其成为一个完整可用的系统;

web模块

  之前没用过web框架,发现Python的web框架有很多,包括著名的全能型Web框架Django;知乎后台的异步框架Tornado;还有小巧积木型的Flask;最后决定采用Flask来搭建,因为这是一个简单的web系统,而且Flask非常易于上手;前端采用Bootstrap,Jquery, Vue.js;这一部分虽然简单,但是也学习了不少东西,包括前端和后台的,这里记录了学习过程中部分笔记,这对产品和系统驱动的我很有帮助,因为只有完整弄出一个可用的系统成就感才高。这一部分就不做详细介绍了,最后web部分主要是json传输数据,模仿并实现了简单的REST架构;下面是我自己做的整个系统的架构图:
predict

图像OCR模块

  这一部分也是有挑战性的一部分,不过本人并没有贡献什么代码,对图像处理领域比较小白。这一部分内容主要参考这位同学,不过也记录一下自己学习到的图像处理的理解;
  图像处理应该是计算机学科一个大分支了,加上最近人工智能炒的厉害,可以说视觉是机器非常重要的一环了。图像处理也包含两种思路,第一种就是传统的思路,即根据图像本身的特点以及几何学做特征提取,识别和预处理等,比如滤波,傅里叶变换,边缘检测,形态学等等;第二种思路就是机器学习的思路了,利用大数据集进行有监督或者无监督的学习识别;需要注意的是两种思路并不独立互斥,前者一定是后者的基础,也是图像的本质,不管是否使用机器学习算法,肯定都包含前面一部分内容,否则是不可能学习出好的效果的。
  目前我们的OCR主要是第一种思路,即根据图像的几何学特征,首先对图像进行裁剪和分割,然后分别对每一个部分抽取文字特征;
  我们的血常规报告图片大概是这样的表格:
血常规
  要想抽取出里面的每一个项目,首先是透视变换,就是把带角度拍的图片,变换到正面的坐标系之下,然后对其进行裁剪,思路就是首先锁定三条粗黑线,然后根据这三条粗线裁剪出统一大小的报告区域,而这个统一大小是固定的,只要报告一致,就可以采用固定的大小剪出每一个项目,虽然很不通用,但是至少实现了裁剪了。而后我们会对裁剪出的22项目进行ocr,这一部分主要使用了图像心态学,二值化和膨胀等手段,使得每一个小区域内的文字间隔开一点,然后就更容易抽取出文字了,文字抽取部分就是采用了tesseract;为了提高文字识别率,我们还训练了自己的字库,使其只识别规定范围内的医学术语词典,这样就可以缩小搜索空间,从而增大识别率。

学习预测模块

神经网络介绍

  该部分不做说明,网上资源很多,附上自己的presentation;里面有详细的公式推导和从头用C语言实现的一个神经网络程序,几个文件加起来大概800行代码,包括矩阵运算和一些函数回调,深刻体会到手动申请和释放内存的麻烦,带有GC的语言会方便很多,后续有时间还会继续改进和折腾;

训练数据集

  数据集格式如下,训练集有1858个,测试集有200个:

id,sex,age,WBC,RBC,HGB,HCT,MCV,MCH,MCHC,RDW,PLT,MPV,PCT,PDW,LYM,LYM%,MONO,MONO%,NEU,NEU%,EOS,EOS%,BAS,BAS%,ALY,ALY%,LIC,LIC%
1,男,6,5.2,7.6,0.176,12.2,2.79,53.6,0.7,13.5,1.41,27.8,0.05,4.93,0.1,0.08,1.6,0.11,2.2,0.06,1.2,138,0.409,83,28,337,11.8,233
2,男,8,11.2,7.7,0.235,12.2,2.47,22.1,1.1,9.8,7.47,66.7,0.08,4.62,0.7,0.08,0.7,0.09,0.8,0.23,2.1,127,0.376,81,27.5,338,11.6,306
3,女,9,15,6.8,0.292,9.5,5.15,34.4,1.29,8.6,8.11,54.2,0.27,4.41,1.8,0.15,1,0.17,1.1,0.36,2.4,121,0.348,79,27.5,348,8.5,431
4,男,9,8.9,7.2,0.225,9.2,2.84,31.8,1.09,12.2,4.88,54.7,0.06,4.12,0.7,0.05,0.6,0.06,0.7,0.18,2.1,121,0.355,86,29.3,340,10,314
5,男,10,3.7,7.3,0.271,11,1.47,39.5,0.34,9.1,1.78,47.8,0.11,5.06,3,0.02,0.6,0.03,0.7,0.02,0.6,139,0.417,82,<
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值