python
文章平均质量分 94
yuanlulu
做过嵌入式Linux开发、深度学习平台开发。擅长c++和python。
展开
-
基于语义分割的身份证部件解析和文字检测
概述这个工作主要是利用人脸解析项目的算法,探索一下语义分割的功能。安排实习生利用合成的身份证照片进行了语义分割的标注。我的目的有两个:1.检测身份证上的信息是否齐全;2.确定身份证各文字信息的位置,把文字抠出来给OCR程序。基于opencv的算法之前写过一篇文章《python_opencv–身份证文字区域检测》,利用opencv的接口进行二值化,然后找出所有的阴影对应的外接矩形。这个方法...原创 2019-05-10 18:09:42 · 5028 阅读 · 9 评论 -
python+tifffile之tiff文件读写
背景使用python操作一批同样分辨率的图片,合并为tiff格式的文件。由于opencv主要用于读取单帧的tiff文件,对多帧的文件支持并不好。通过搜索发现了两个比较有用的包:TiffCapture和tifffile。两者都可用pip安装。其中前者主要用于读取tiff文件,后者可读可写。最终选择tifffile来合成tiff图片文件。安装tifffilepip install tiff...原创 2018-10-22 22:00:38 · 23032 阅读 · 3 评论 -
python多进程通信之multiprocessing.Queue
multiprocessing.Queue()和queue.Queue()的区别Queue.Queue是进程内非阻塞队列,用于进程内的各函数模块或线程间通信。multiprocess.Queue是跨进程通信队列。但是不能用于multiprocessing.Pool多进程的通信。multiprocessing.Manager进程池multiprocessing.Pool()的多进程之间的通信...原创 2018-10-17 19:45:13 · 21202 阅读 · 0 评论 -
tensorflow 13:tensorboard可视化
概述如前篇博文《tensorflow 12:双隐层+softmax回归实现mnist图片识别之二》所写,可以将训练的计算图和训练中的状态信息写入一个日志文件,采用tensorboard实时查看,也可以事后查看。权重(w和b)、度量(loss、accuracy)、超参和其它统计信息,都可以写入tensorboard的事件日志文件。一些常亮也可以写入。除了计算图结构,tensorboard汇总的...原创 2018-10-08 09:17:37 · 2961 阅读 · 0 评论 -
tensorflow 9. 参数解析和经典入口函数tf.app.run
概述本文总结两种参数解析的接口,一种是python的参数解析包自带的功能,使用时需要import argparse。另一类是tensorflow自带的功能,解析时import tensorflow就行了。python中的参数解析parse_known_args的例子tensorflow下的一个例子tensorflow/examples/tutorials/mnist/mnist_deep...原创 2018-10-07 00:51:03 · 2342 阅读 · 0 评论 -
tensorflow 12:双隐层+softmax回归实现mnist图片识别之二
概述tensorflow的自带例程用两个文件演示了“全连接层+softmax回归”实现mnist图片识别的功能。一个文件是mnist.py,在之前一篇文章《tensorflow 11:双隐层+softmax回归实现mnist图片识别》已经介绍过了。不过mnist.py侧重搭建计算图,没有调用过程。本文讲解fully_connected_feed.py这个文件,主要讲解调用过程相关的知识点。f...原创 2018-10-07 00:44:23 · 2473 阅读 · 0 评论 -
tensorflow 11:双隐层+softmax回归实现mnist图片识别
概述上篇文章讲到的sofmax回归,除了输入层,只有线性层+sofmax,这两者合起来可以被称为输出层。没有中间的隐藏层。本文介绍在sofmax回归基础上增加两层隐藏层的方法。本文的主要参考来自参考资料里的《TensorFlow运作方式入门》和《TensorFlow实现双隐层SoftMax Regression分类器》。主要代码来自tensorflow源码目录下的例程mnist.py。借...原创 2018-10-06 17:18:54 · 3041 阅读 · 0 评论 -
tensorflow 10: sofmax回归识别mnist手写数字图片
Softmax回归介绍为了得到一张给定图片属于某个特定数字类的证据(evidence),我们对图片像素值进行加权求和。如果这个像素具有很强的证据说明这张图片不属于该类,那么相应的权值为负数,相反如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值是正数。我们也需要加入一个额外的偏置量(bias),因为输入往往会带有一些无关的干扰量。下面的图片显示了一个模型学习到的图片上每个像素对于特定数...原创 2018-10-05 15:44:44 · 2330 阅读 · 0 评论 -
tensorflow 14:XLA编译器用于JIT加速
概述XLA(加速线性代数)是用于优化TensorFlow计算的线性代数的域特定编译器。XLA 利用 JIT 编译技术分析用户在运行时创建的 TensorFlow 图表,根据实际运行时维度和类型将其专门化,将多个运算融合在一起并为它们生成高效的本机代码——适用于 CPU、GPU 之类的设备和自定义加速器(例如,Google 的 TPU)。目前XLA是实验性的。大多数使用情况在性能(加快速度或减...原创 2018-10-11 21:07:29 · 4967 阅读 · 0 评论 -
人脸检测和dlib关键点检测的一些加速思路
概述在项目间隙,思考下如何把经常使用的人脸检测方法加速快一些。我平常主要是用opencv和dlib这两个库做人脸相关的功能。我自己没有从零开始写算法库的机会,所以很多思路只是了解一下,没有机会实践。于仕琪人脸检测加速的思路于仕琪是深圳大学的老师,写了一个很快很准的人脸检测算法库,以二进制形式免费发布,地址在:https://github.com/ShiqiYu/libfacedetecti...原创 2018-09-26 22:18:11 · 7970 阅读 · 1 评论 -
使用opencv和dlib进行人脸姿态估计(python)
概述在计算机视觉中,物体的姿态是指相对于相机的相对取向和位置。本文主要参考了《Head Pose Estimation using OpenCV and Dlib》这篇文章。进行人脸姿态估计的目的就是获取人脸相对相机的朝向:人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。代码从笔记本摄...原创 2018-09-18 19:59:44 · 24171 阅读 · 59 评论 -
基于opencv和dlib的活体识别功能小结
概述项目过去几个月了,为了防止自己忘记,做简要概述。基本要求就是针对一段视频,里面的人判断是否完成了随机指定的某个动作(左转、右转、抬头、点头、张嘴、眨眼)。这属于非静默的活体识别,需要用户配合。基本方案使用dlib的人脸检测和关键点检测算法,获得人脸的基本姿态信息。但是dlib的68点信息无法直接用于头部姿态估计。我自己设计了一种简单高效的算法,把68点信息抽象为为一个4维向...原创 2018-09-07 11:50:23 · 6397 阅读 · 3 评论 -
sklearn+python:朴素贝叶斯及文本分类
朴素贝叶斯贝叶斯定理用来计算条件概率,即:然后进行一种朴素(naive)的假设-每对特征之间都相互独立:在给定的输入中 P(x_1, \dots, x_n) 是一个常量,我们使用下面的分类规则:可以使用最大后验概率(Maximum A Posteriori, MAP) 来估计 P(y) 和 P(x_i | y) ; 前者是训练集中类别 y 的相对频率。各种各样的的朴...原创 2018-09-09 15:41:43 · 9696 阅读 · 2 评论 -
dlib物体检测开源项目
转自:https://mp.weixin.qq.com/s/QkjMY-qEqn2cGfYbFEmv5w在刚刚结束的PyImageConf2018会议上,大名鼎鼎的Dlib库的创建者Davis King做了一个关于目标检测的报告,并举办了关于Dlib的含有40个新的开源Demo的各种计算机视觉与机器学习技术演示的WorkShop。展示了Dlib的强大锐利,是学习Dlib使用的绝佳资料,作者已将...转载 2018-09-02 15:41:23 · 3690 阅读 · 0 评论 -
Tesseract-OCR批量标注及合并数据集的一种思路
背景Tesseract标注训练最根本的文件是两个:tiff文件(存储图片)及box文件(标注字符值和位置)一般tiff用命令合成,box文件用jTessBoxEditor生成。背景知识参考前一篇博客,可以用python读写tiff文件。另外box每一行的格式如下(6个元素):tag x y w h frame-numtag即OCR识别后的字符的值,(x,y,w,h)是左上角坐标及长...原创 2018-10-22 22:25:38 · 4301 阅读 · 0 评论 -
tensorflow 15:使用卷积和pool识别MNIST数据集
概述前面的博文讲到的是全连接识别MNIST。这篇博客主要讲解使用卷积和池化(POOL)来和别MNIST。牵涉的代码来自tensorflow的源码工程,目录是:tensorflow\examples\tutorials\mnist\minist_deep.py。源码中构建的计算图前向推断结构如下:graph LR输入数据-->卷积层1卷积层1-->POOL1POOL1--&...原创 2018-10-29 17:25:41 · 1381 阅读 · 0 评论 -
tensorflow 16:数据读取(以cifar10_input.py为例)
数据读取概述TensorFlow程序读取数据一共有3种方法:供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。目前我用过的主要是第一种,就是提供fee...原创 2018-11-05 20:45:25 · 5706 阅读 · 3 评论 -
tensorflow 23:从ckpt文件导出固化PB文件
概述需要从ckpt文件生成固化的PB文件,给生成现场用。现在我探索下不依赖代码里的网络结构、仅仅用CKPT文件来生成PB文件。转化训练生成的ckpt文件目录如下:$ ls ./ckpt0507/checkpoint graph.pbtxt model.ckpt-3251.data-000...原创 2019-05-09 20:02:15 · 2961 阅读 · 3 评论 -
tensorflow 22:量化模型在pc环境调用
概述之前写过一文探讨tflite模型在pc环境下的调用:《tensorflow 21:用python转换tflite模型并在PC上调用》我就想,能不能只量化,格式还是普通的pb格式,然后在pc环境调用。这样既享受了量化压缩带来的好处,又不受制于tflite支持的算子不全面。结论没啥用!在pc环境用graph_transforms工具将incrption-v2模型量化,然后PC环境下调用...原创 2019-04-19 16:14:48 · 1347 阅读 · 0 评论 -
python之web server搭建:Gunicorn、flask及tornado
利用Gunicorn和flask搭建web-server之前用tornado搭服务器,但是tornado只支持多线程。众所周知python的多线程性能是很差的。要上多进程,Gunicorn加flask这个组合刚好满足需求。而且Gunicorn支持进程意外退出后重启,还支持很多灵活的配置,综合来看是很不错的组合方案。安装需要安装Gunicorn和flask,另外还有gevent,具体方案可以...原创 2019-04-26 22:13:12 · 3619 阅读 · 0 评论 -
这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
本文动机说实话,介绍Faster R-CNN的文章我看了很多,论文的英文原文和翻译都看过,我知道two-statge和anchor的主要思想,可是我脑子里始终没法建立一个完整的Faster R-CNN的框架,有太多的细节没有搞清楚,每个步骤的tensor是什么维度?这些维度是什么含义?第二阶段的坐标回归和第一阶段一样吗?有太多的细节让我疑惑不已。别人的文章讲的都是别人建立了整体概念以后的细节分解...原创 2019-02-06 21:43:28 · 7099 阅读 · 1 评论 -
python_opencv--身份证文字区域检测
概述本文基于opencv的形态学滤波检测身份证上的文字位置。如果是自然场景的文字检测可以用CTPN或者EAST。我这里是身份证合成照片,没有多余背景,也没有复杂光照,所以就用最简单的办法。代码import sysimport numpy as npimport cv2def test_detect (img_path): # 参考:https://blog.csdn.n...原创 2019-01-16 20:43:51 · 6412 阅读 · 7 评论 -
英特尔OpenVINO深度学习框架--ubuntu16.04上的安装手记
概述OpenVINO是intel的深度学习工具框架,本质是一个支持intel各种硬件(CPU、集显、FPGA和Movidius VPU)的推理机。这个工具本身不做训练,但是可以把其它深度学习框架(如 Caffe, TensorFlow, MXNet)训练的模型文件转化为自己支持的格式。所以OpenVINO分为两部分(github上源码也分为这么两个目录):Inference Engine...原创 2019-01-23 23:06:19 · 9702 阅读 · 2 评论 -
磁盘图片到numpy的两种方法:一次意外的优化
概述在优化代码时意外将图片读取的效率提升了60倍。主要就是在python下把磁盘图片变为numpy数组。低效方法:PIL和numpy组合import numpy as npfrom PIL import Imagedef load_image_into_numpy_array(image): (im_width, im_height) = image.size ret...原创 2018-12-31 14:43:48 · 602 阅读 · 2 评论 -
解决fatal error: torch/extension.h: No such file or directory
错误描述在安装https://github.com/SeanNaren/warp-ctc/tree/pytorch_bindings的时候遇到编译错误:src/binding.cpp:6:10: fatal error: torch/extension.h: No such file or directory #include <torch/extension.h>看样子是缺...原创 2018-12-31 14:10:41 · 15451 阅读 · 6 评论 -
tensorflow 21:用python转换tflite模型并在PC上调用
概述想玩玩tflite,无奈对android开发环境不熟。经过搜索找到了在PC上python下调用tflite模型的方法。环境python3.6tf-nightly 1.13win10 64位i7 8550U制作frozen模型模型制作参考前面的一篇博客《tensorflow 20:搭网络、导出模型、运行模型》。主要就是两层卷积和两层全连接用来识别mnist数据集,保存为fro...原创 2019-01-04 00:11:06 · 28198 阅读 · 90 评论 -
tensorflow 20:搭网络、导出模型、运行模型
概述以前自己都利用别人搭好的工程,修改过来用,很少把模型搭建、导出模型、加载模型运行走一遍,搞了一遍才知道这个事情也不是那么简单的。搭建模型和导出模型参考《TensorFlow固化模型》,导出固化的模型有两种方式.方式1:导出pb图结构和ckpt文件,然后用 freeze_graph 工具冻结生成一个pb(包含结构和参数)在我的代码里测试了生成pb图结构和ckpt文件,但是没接着往下走,...原创 2018-12-12 19:59:04 · 4934 阅读 · 0 评论 -
深度学习中的组归一化(GroupNorm)
批归一化(BN)的缺点BN 需要用到足够大的批大小(例如,每个工作站采用 32 的批量大小)。一个小批量会导致估算批统计不准确,减小 BN 的批大小会极大地增加模型错误率。加大批大小又会导致内存不够用。归一化的分类BN,LN,IN,GN从学术化上解释差异:BatchNorm:batch方向做归一化,算N*H*W的均值LayerNorm:channel方向做归一化,算C*H*W的均值...原创 2018-11-17 17:45:48 · 16735 阅读 · 1 评论 -
tensorflow 19: tflite 概念理解
概述学术界对精度、自由度的要求和工业界对速度、精简度的要求形成了反差,这就使得越来越多的框架开始把training和inference分开,各公司都开始针对移动设备纷纷推出高性能inference库。tflitetflite其实就是谷歌自己的一个轻量级推理库。主要用于移动端。之前的tensorflow mobile那一套到2019年就不再维护了。tflite使用的思路主要是从预训练的模型转...原创 2018-11-14 11:24:53 · 20172 阅读 · 9 评论 -
tensorflow 18:cifar10图片分类训练(cpu或单gpu)
概述接着前面几篇博客讲cifar10的训练,本文牵涉的代码文件主要是cifar10_train.py。仔细看前面的cifar10.py就会发现,所有变量都被声明放在cpu上,如参考资料里的《卷积神经网络》所说,这是为了多个GPU上共享变量。只有train部分的节点没指定设备,如果有gpu的话训练还是默认在gpu上,其他部分都在cpu上。代码分解命令行选项参数FLAGS = tf.app....原创 2018-11-06 00:48:38 · 2281 阅读 · 0 评论 -
tensorflow 17:搭建图片分类计算图(cifar10.py)
概述书接上回,继续讲cifar10的例子,这次讲cifar10.py。代码在https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10cifar10.py速览这个文件主要包含以下几个部分:读取数据搭建前向预测计算图搭建loss搭建train下载cifar10数据集并解压这个文件的代码没有搭建...原创 2018-11-05 20:48:10 · 1080 阅读 · 0 评论 -
机器视觉:基于特征的图像对齐(使用opencv和python)
概述本文主要内容来自参考资料《mage Alignment (Feature Based) using OpenCV (C++/Python)》本文讲述使用opencv中基于特征的的图像对齐方法。这里将会把手机拍摄的表单和与表单的模板对齐。这里用到的技术被称为基于特征的图像对齐,因为在这种技术中,要在一个图像中检测到一组特征点,并与另一张图像中的特征点相匹配。然后根据这些匹配的特征...翻译 2018-08-30 15:23:53 · 34144 阅读 · 6 评论 -
物体检测之选择性搜索(Selective Search)
概述本文牵涉的概念是候选区域(Region Proposal ),用于物体检测算法的输入。无论是机器学习算法还是深度学习算法,候选区域都有用武之地。本文的来源是翻译参考资料里的《Selective Search for Object Detection (C++ / Python)》,这是国外一个大神的博客,讲的是择性搜索(Selective Search)这一种产生候选区域的算法。这个算...翻译 2018-08-29 01:55:50 · 30506 阅读 · 6 评论 -
tensorflow 5. K均值回归用于手写数字识别
本代码展示的是tensorflow中K均值算法。 代码原始地址在这里下面这段摘自百度百科: K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。代码里面并没有把K的值直接设为10,而是设为25.然后把这25簇分为10类(对应10个数字)。相当于K均值之后用最近邻再次分类,思路...原创 2018-03-29 14:33:46 · 1405 阅读 · 0 评论 -
python参数解析和日志记录
本文讨论参数解析python解析参数的一般方法如下:import argparse# 1.创建解析器parser = argparse.ArgumentParser()# 2.增加解析选项parser.add_argument('--port', type=int, help="server's port", ...原创 2018-04-04 00:38:41 · 1098 阅读 · 2 评论 -
tensorflow 8. MNIST的脚手架--input_data
在之前的案例中经常见到这样使用MNIST数据集的用法:from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("/tmp/data/", one_hot=False)这句话的作用是,如果”/tmp/data/”目录下存在mnist数据集,则加载,否则先下载后...原创 2018-04-03 22:22:24 · 2589 阅读 · 0 评论 -
tensorflow 7. 最近邻识别MNIST手写数据集
目前我已把我自己手工敲写加注释的代码放到自己的github账户上面,项目地址在这里:https://github.com/RootYuan/tensorflow_examples_practice/。最近邻算法,即找到训练样本中与之最近的数据,采用那个数据点的标注作为预测输出。实际上这里没有训练,选取样本本身就是训练。计算量主要在遍历所有点挨个计算距离。训练样本数量越多,越准确,但是计...原创 2018-04-01 15:13:42 · 611 阅读 · 0 评论 -
tensorflow 6. 动态计算图实现线性回归(eager execution)
本例程源码来自这里。目前我已把我自己手工敲写加注释的代码放到自己的github账户上面,项目地址在这里:https://github.com/RootYuan/tensorflow_examples_practice/。下面是正文分割线tensorflow一直以来是基于静态计算图的,这其实跟程序的执行过程并不一致,没办法使用python语言取控制中间流程。PyTorch 的动态图一...原创 2018-04-01 11:43:28 · 1784 阅读 · 0 评论 -
tensorflow 4. 逻辑回归-mnist和softmax的应用
这里有一个例子演示使用softmax算法对mnist数据集做逻辑回归训练。代码在这里 这里的例子与temsorflow tutorials下的例子有较大差异。官方的源码在这里主要差异在官方例子严格封装了四部曲:预测、损失、训练、评估。本文的例子也都有相应的步骤,但是没有将每一步封装成函数。所以推荐大家去看下tensorflow官网例子的代码风格。四部曲的一个讲解图片: 本次先来研究...原创 2018-03-21 23:23:03 · 970 阅读 · 0 评论 -
python删除文件的权限错误
使用os.remove删除文件,总是遇到错误:PermissionError: WinError 。。。。 。。。。 找了很久没找到什么原因,以为是windows系统的问题,最后发现是删除了一个没有关闭的文件引起的。 代码如下: with open(front_pic_path,'rb') as f: pic_base64 = base64.b64encode(f.read()...原创 2018-03-26 10:31:16 · 7057 阅读 · 0 评论