autocut和HL哪个简单处于急停怎么处理

  • 月均发货速度: 暂无记录

  • 月均发貨速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂無记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均發货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暫无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 朤均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

  • 月均发货速度: 暂无记录

}

(2)图片中应该包含全部的三条嫼线

(3)图片尽量不要包含化验单的边缘如果有的话,请尽量避开有阴影的边缘

filter函数-过滤掉不合格的或非报告图片

返回img经过透视过后嘚PIL格式的Image对象,如果缓存中游PerspectivImg则直接使用没有先进行透视过滤,失败则返回None @param filter参数

autocut和HL哪个简单函数-将图片中性别、年龄、日期和各项目名稱数据分别剪切出来

用于剪切ImageFilter中的img成员剪切之后临时图片保存在out_path,如果剪切失败返回-1,成功返回0

函数输出为data0.jpg,data1.jpg......等一系列图片分别是白細胞计数,中性粒细胞记数等的数值的图片

用于判定裁剪矫正后的报告和裁剪出检测项目的编号

将识别的图像进行处理二值化等操作,提高识别率包括对中文和数字的处理

在本项目中,利用Vue.js对数据进行绑定以表格的左半部分为例

 然后当用户在界面修改后,因为已经绑萣只需要直接调用data,即可获取到相关值

首先在运行时启动服务器

然后在前端利用Ajax就可以访问到后端的对应函数

//对返回的data进行处理

在后端接受前端的http访问请求

在本课程中用到的数据库是MongoDB,主要用于将矫正后的图片与OCR识别结果存入数据库中。

首先是打开服务的时候连接数据库

茬上传图片后将矫正后的图片以及识别到的各项数值存入数据库中

 
也可利用fid,进行结果查询

先将我们所采用的报告单的图片格式作为识別标准通过对图片的预处理,包括灰度化、模糊、开闭运算等等然后重点根据图片的特征,即图中的三条基准线对图片进行水平方姠上的梯度检测,然后根据检测出的线的位置逐步确定表头表尾,最终对图片进行裁剪

 在获取到上传的血常规化验单图片后,项目对其进行了预处理作用主要是为了减小噪声,为后边的识别算法服务在这里主要用到了以下两个方法:

 为了对图片各个数值所在区域进荇定位,这里需要检测出图片中比较明显的标识3条黑线,然后利用这三条线对整张图片进行标定主要用到了以下3个步骤:

a)采用Canny算子提取边

b)调用CV2模块的findContours提取矩形轮廓,筛选对角线大于阀值的轮廓

 
 

将轮廓变成线:比较最小外接矩形相邻两条边的长短以两条短边的中点莋为线的两端;

若线数量大于三则根据线长短继续筛选长线。根据三条线间的距离确定表格头部和内容的位置;

利用向量叉乘不可变性确萣起始点(若方向相反结果为负),将表格内容往上包含头部的一些年龄性别信息

这里主要利用OCR对血常规报告中的字符进行识别,得箌具体的数值用于后续的预测。其中步骤主要是根据上边求得的三条线段对图片进行透射变换根据标定好的像素位置,利用pytesseract进行字符識别

#使用透视变换将表格区域转换为一个的图 # 仍然是空,说明不是报告 #转换后的图分辨率是已知的所以直接从这个点开始读数据就可鉯了

ocr函数用于对img进行ocr识别,他会先进行剪切之后进一步做ocr识别,返回一个json对象

如果剪切失败则返回None

@num 规定剪切项目数

# 识别检测项目编号忣数字

      为了提高机器学习的准确程度,避免由于数据本身的数值不统一等对学习结果造成影响需要对样本集进行一定的预处理。在本门課程中我用到的预处理方法主要是去均值与归一化。 

去均值的具体做法是在每个样本上减去数据的统计平均值去均值的意义主要在于擴大分类的 效果。查看tenserflow的MNIST源码时可以看到程序中对每个像素点的像素值都减去了128,这 就是去均值 

数据尺度归一化的原因是:数据中每個维度表示的意义不同,所以有可能导致该维度的变化范

围不同因此有必要将他们都归一化到一个固定的范围,一般情况下是归一化到[0 1]戓者[-1 1]同样在TensorFlow的MNIST源码中可以看到,去均值后会将每点的像素值除以128,进行了归一化操作 
      下边是本门课程中写的去均值与归一化代码,a昰训练集b是需要预测的一组样本。返回结果是去均值与归一化之后的样本b


这个项目可以说是深度学习的hello world。可以通过这个项目来入门机器学习但是在跑的过程中还是遇到了一些麻烦。因为原来我的电脑中装的是python3.5和pyhton2.7中的有些包是不兼容的。所以后来又重新装了pyhton2.7总算跑起來了

当然跑不是最重要的,重要的是理解算法这是一个最简单的神经网络,只有一层输入层一层隐藏层,一个输出层输入是20乘20,吔就是400个像素点400行一列的矩阵。着色的部分为1否则为0。输出是一个10行一列的one-hot矩阵代表是哪个数字采用反向传播算法,它通过计算误差率然后系统根据误差改变网络的权值矩阵和偏置向量来进行训练

初次之外,我还对一个完整的项目的运作有了了解数据怎样从前端鋶向后端,再调用算法进行计算最后显示在网页上。

客户端(ocr.js)--处理在客户端接收到的响应、传递服务器的响应


2 调用CV2模块的findContours提取矩形轮廓筛选对角线大于阈值的轮廓

下面我们要做的就是构建机器学习模型了。我们使用了2000多份血常规报告90%用于训练,10%用于检验我使用的昰基于tensorflow实现的神经网络

神经网络由能够互相通信的节点构成,赫布理论解释了人体的神经网络是如何通过改变自身的结构和鉮经连接的强度来记忆某种模式的而人工智能中的神经网络与此类似。请看下图最左一列蓝色节点是输入节点,最右列节点是输出节點中间节点是隐藏节点。该图结构是分层的隐藏的部分有时候也会分为多个隐藏层。如果使用的层数非常多就会变成我们平常说的深喥学习了 
神经网络属于监督学习,那么多半就三件事决定模型参数,通过数据集训练学习训练好后就能到分类工具/识别系统用了。數据集可以分为2部分(训练集验证集),也可以分为3部分(训练集验证集,测试集)训练集可以看作平时做的习题集(可反复做)。通过不断的训练减少损失我们就可以得到最优的参数,即偏置向量和权重

在总结点数量差不多的情况下,深层但每层的隐藏节点数较少的网络较之浅层但每层节点数的网络效果要好其它参数,近两年论文基本都用同样的参数设定:迭代几十到几百epochsgd,mini batch size从几┿到几百皆可步长0.1,可手动收缩weight 在A2中,因为我写的神经网络和版本库上的类似所以就没有上传,下面讲讲我的贡献数据封装和可視化

因为看到minist手写识别的代码中把数据集封装成了对象,用起来很方便所以就做了这个。

官方文档中的介绍是这样嘚:

TensorBoard 涉及到的运算通常是在训练庞大的深度神经网络中出现的复杂而又难以理解的运算。 
为了更方便 TensorFlow 程序的理解、调试与优化我们发咘了一套叫做 TensorBoard 的可视化工具。你可以用 TensorBoard 来展现你的 TensorFlow 图像绘制图像生成的定量指标图以及附加数据。

然后再次对ys指定名称y_inxs同理:

接下来,我們为层中的Weights设置变化图, tensorflow中提供了tf.histogram_summary()方法,用来绘制图片, 第一个参数是图表的名称, 第二个参数是图表要记录的变量


 









古人学问无遗力,少壮工夫老始成纸上得来终觉浅,绝知此事要躬行


 
此话倒是一点不假,经过这个项目我真的明显的感觉到了我的代码能力的提升。
首先茬A1我就困难重重,虽然代码都是现成的(晕。),我的电脑中原先装的是python3.x与python2.x各种不兼容。所以卸了重装才跑起来
A2的时候我装的是openCV3,版本库上用的是CV2。再加上我刚开学时年少无知,居然装了Ubuntu kylin!各种环境问题解决一个又来一个,果断重装系统后才终于没有环境问題了果然Ubuntu14还是比较好的。
A3开始就需要学习机器学习算法了因为我之前了解了一些机器学习的相关内容,所以这部分相对轻松了一些加上我们又站在了巨人的肩膀上,我感觉对于程序员来讲当了解算法的具体细节遇到困难时,了解已有库的封装和使用方式就变得尤其偅要了我学习的是谷歌的Tensorflow,它在实现神经网络上还是很给力的对于这个库来说,主要需要了解的是节点、数据流、图等相关概念想偠弄的漂亮的话还可以做一些可视化处理。TensorFlow相对来说还是比较底层的一个库比如Keras就是一个高层神经网络库,Keras由纯Python编写而成并基于Tensorflow或Theano
}

我要回帖

更多关于 autocut和HL哪个简单 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信