目录

夜雨飘零

记录精彩的程序人生

标签: 人工智能 (54)

《我的PaddlePaddle学习之路》笔记十四——把PaddlePaddle迁移到Android设备上 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 PaddlePaddle还可以迁移到Android或者Linux设备上,在这些部署了PaddlePaddle的设备同样可以做深度学习的预测。在这篇文章中我们就介绍如何把PaddlePaddle迁移到Android手机上,并在Android的APP中使用PaddlePaddle。 编译PaddlePaddle库 使用Docker编译PaddlePaddle库 使用Docker编译PaddlePaddle真的会很方便,如果你对比了下面部分的使用Linux编译PaddlePaddle库,你就会发现使用Docker会少很多麻烦,比如安装一些依赖库等等。而且Docker是跨平台的,不管读者使用的是Windows,Linux,还是Mac,都可以使用Docker。以下操作方法都是在64位的Ubuntu 16.04上实现的。 首先安装Docker,在Ubuntu上安装很简单,只要一条命令就可以了 sudo apt install docker.io 安装完成之后,可以使用docker --version命令查看是.......

《我的PaddlePaddle学习之路》笔记十三——把PaddlePaddle部署到网站服务器上 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是PaddlePaddle的预测接口,获取到预测结果,返回给客户端。这个只是简单的流程,真实的复杂性远远不止这些,但是我们只需要了解这些,然后去搭建属于我们的图像识别接口。 环境 系统是:64位 Ubuntu 16.04 开发语言是:Python2.7 web框架是:flask 预测接口是:图像识别 flask的熟悉 安装flask 安装flask很简单,只要一条命令就可以了: pip install flask 同时我们也使用到flask_cors,所以我们也要安装这个库 pip install flask_cors 主要安装的是这两个库,如果还缺少哪些库,可以使用pip命令安装,*代表读者缺少的库: pip install * 测试fl....

《我的PaddlePaddle学习之路》笔记十二——可视化工具VisualDL的使用 有更新!

*本篇文章基于 PaddlePaddle 0.13.0、Python 2.7 前言 VisualDL是一个面向深度学习任务设计的可视化工具,包含了scalar、参数分布、模型结构、图像可视化等功能。可以这样说:“所见即所得”。我们可以借助VisualDL来观察我们训练的情况,方便我们对训练的模型进行分析,改善模型的收敛情况。 之前我们使用的paddle.v2.plot接口,也可以观察训练的情况,但是只是支持CSOT的折线图而已。而VisualDL可以支持一下这个功能: scalar,趋势图,可用于训练测试误差的展示 image, 图片的可视化,可用于卷积层或者其他参数的图形化展示 histogram, 用于参数分布及变化趋势的展示 graph,用于训练模型结构的可视化 以上的图像来自VisualDL的Github 既然那么方便,那么我们就来尝试一下吧。VisualDL底层采用C++编写,但是它在提供C++ SDK的同时,也支持Python SDK,我们主要是使用Python的SDK。顺便说一下,VisualDL除了支持PaddlePaddle,之外,还支持pytorch,....

《我的PaddlePaddle学习之路》笔记十一——新版本Fluid的使用 有更新!

*本篇文章基于 PaddlePaddle 0.13.0、Python 2.7 *Fluid版本的使用可以学习笔者的新系列教程:《PaddlePaddle从入门到炼丹》 前言 PaddlePaddle的Fluid是0.11.0提出的,Fluid 是设计用来让用户像Pytorch和Tensorflow Eager Execution一样执行程序。在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述Operator图或者一系列层的符号描述,而是像通用程序那样描述训练或者预测的过程。而Fluid与PyTorch或Eager Execution的区别在于Fluid不依赖Python提供的控制流,例如 if-else-then或者for,而是提供了基于C++实现的控制流并暴露了对应的用with语法实现的Python接口。例如我们会在例子中使用到的代码片段: with fluid.program_guard(inference_program): test_accuracy = fluid.evaluator.Accuracy(input=out, label=label) test_ta.....

《我的PaddlePaddle学习之路》笔记十——自定义图像数据集实现目标检测 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 在阅读这一篇文章之前,要先阅读上一篇文章使用VOC数据集的实现目标检测,因为大部分的程序都是使用上一篇文章所使用到的代码和数据集的格式。在这篇文章中介绍如何使用自定义的图像数据集来做目标检测。 数据集介绍 我们本次使用的到的数据集是自然场景下的车牌,不知读者是否还记得在车牌端到端的识别这篇文章中,我们使用到的车牌是如何裁剪的,我们是使用OpenCV经过多重的的图像处理才达到车牌定位的,而且定位的效果比较差。在这篇文章中我们尝试使用神经网络来定位车牌位置。 下载车牌 我们先从网络上下载车牌数据,来提供给我们进行训练,核心代码片段如下: def start_download(self): self.download_sum = 0 gsm = 80 str_gsm = str(gsm) pn = 0 if not os.path.exists(self.save_path): os.makedirs(self.save_path) while self.download_sum < self.do......

《我的PaddlePaddle学习之路》笔记九——使用VOC数据集的实现目标检测 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 前言 目标检测的使用范围很广,比如我们使用相机拍照时,要正确检测人脸的位置,从而做进一步处理,比如美颜等等。在目标检测的深度学习领域上,从2014年到2016年,先后出现了R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD等神经网络模型,使得目标检测不管是在准确度上,还是速度上都有很大提高,几乎可以达到实时检测。 VOC数据集 VOC数据集介绍 PASCAL VOC挑战赛是视觉对象的分类识别和检测的一个基准测试,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。 PASCAL VOC图片集包括20个目录: 人类; 动物(鸟、猫、牛、狗、马、羊); 交通工具(飞机、自行车、船、公共汽车、小轿车、摩托车、火车); 室内(瓶子、椅子、餐桌、盆栽植物、沙发、电视)。 这些类别在data/label_list文件中都有列出来,但这个文件中多了一个类别,就是背景(background) 下载VOC数据集 可以通....

《我的PaddlePaddle学习之路》笔记八——场景文字识别 有更新!

*本篇文章基于 PaddlePaddle 0.10.0、Python 2.7 前言 在前两篇文章验证码端到端的识别和车牌端到端的识别这两篇文章中其实就使用到了场景文字识别了,在本篇中就针对场景文字识别这个问题好好说说。 场景文字识别到底有什么用呢,说得大一些在自动驾驶领域,公路上总会有很多的路牌和标识,这些路牌标识通常会有很多的文字说明,我们就要识别这些文字来了解它们的含义。还有老师在黑板上写的笔记,如果使用场景文字识别技术,我们直接拍个照,直接识别黑板中的文字内容,就可以省去很多抄笔记时间了。 数据集的介绍 场景文字是怎样的呢,来看看这张图像 这张图像中包含了大量的文字,我们要做的就是把这些文字识别出来。这张图像是SynthText in the Wild Dataset,这个数据集非常大,有41G。为了方便学习,我们在本项目中使用这个数据集,而是使用更小的Task 2.3: Word Recognition (2013 edition),这个数据集的训练数据和测试数据一共也就160M左右,非常适合我们做学习使用,该数据集的图像如下: 数据的读取 官方给出的数据读取列表有两....

《我的PaddlePaddle学习之路》笔记七——车牌端到端的识别 有更新!

本篇文章基于 PaddlePaddle 0.10.0、Python 2.7 前言 车牌识别的应用场景有很多,比如在停车场。通过车牌识别登记入库和出库的车辆的情况,并计算该车停留时间,然后折算费用。还可以在公路上识别来往的车辆,方便交警的检查等等。接下来我们就是使用PaddlePaddle来做一个车牌识别,我们直接通过段端到端识别,不用分割即可完成识别。在阅读这篇文章时,你应该先阅读上一篇验证码端到端的识别,在上一篇的很多细节,在本篇中不会很说得很细。 车牌的采集 车牌的下载 在做车牌识别之前,我们要先数据。这些车牌数据我打算从百度图片中获取,所以我先编写一个程序来帮我们下载车牌图像。 # -- coding:utf-8 -*- import re import uuid import requests import os class DownloadImages: def init(self, download_max, key_word): self.download_sum = 0 self.download_max = download_max self.key_....

《我的PaddlePaddle学习之路》笔记六——验证码端到端的识别 有更新!

*本篇文章基于 PaddlePaddle 0.10.0、Python 2.7 前言 在上一篇文章中介绍了验证码的识别,但是使用的传统的验证码分割,然后通过图像分类的方法来实现验证码的识别的,这中方法比较繁琐,工作量比较多。在本篇文章会介绍验证码端到端的识别,直接一步到位,不用图像分割那么麻烦了。好吧,现在开始吧! 数据集介绍 在本篇文章中同样是使用方正系统的验证码,该数据集在上一篇文章《我的PaddlePaddle学习之路》笔记五——验证码的识别已有介绍,在这里我就不介绍了,需要了解的可以点击链接去到上一篇文章查看。 获取验证码 下载验证码和修改验证码同样在上一篇文章有介绍,如果读者需要同样可以回到上一篇文章查看。 验证码我们有了,有看过上一篇文章的读者会第一反应说还缺图像列表。没错,训练和测试都需要一个图像列表 把图像转成灰度图 在生成列表之前,我们还有对图像做一些处理,就是把图像灰度化。 **注意:**在此之前应该把图像文件命名,文件名为验证码对应的字符,并把所有的验证码放在data_temp 然后执行以下的程序批量处理 # coding=utf-8 import os f....

《我的PaddlePaddle学习之路》笔记五——验证码的识别 有更新!

本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 数据集介绍 本次使用的验证码是方正系统,现在很多的大学的教务系统用的就是这个方正系统,刚好既然那么普遍,我们就用它练一练手。经过观察大量的验证码发现,该系统的验证码只有小写的字母和数字,这样分类就少了很多了。该系统的验证码如下: 验证码尺寸说明 7227只有数字和小写字母 1227第一个X方向的从5开始裁剪到17,Y取全部,即从0裁剪到27 1227第二个X方向的从17开始裁剪到29,Y取全部,即从0裁剪到27 1227第三个X方向的从29开始裁剪到41,Y取全部,即从0裁剪到27 1227第四个X方向的从41开始裁剪到53,Y取全部,即从0裁剪到27 通过上面表上说明,我们就可以开始裁剪验证码了。在裁剪之前我们先要下载编写一个程序,让它来帮我们下载更多的验证码 下载验证码 编写一个下载验证码的程序DownloadYanZhengMa.py,这里我们只需要传入保存路径和要下载的数量就可以了。 # -- coding:utf-8 -- import re import uuid i....

《我的PaddlePaddle学习之路》笔记四——自定义图像数据集的识别 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 数据集介绍 如果我们要训练自己的数据集的话,就需要先建立图像列表文件,下面的代码是Myreader.py读取图像数据集的一部分,从这些代码中可以看出,图像列表中,图像的路径和标签是以\t来分割的,所以我们在生成这个列表的时候,使用\t就可以了. def train_reader(self,train_list, buffered_size=1024): def reader(): with open(train_list, 'r') as f: lines = [line.strip() for line in f] for line in lines: img_path, lab = line.strip().split('\t') yield img_path, int(lab) return paddle.reader.xmap_readers(self.train_mapper, reader, cpu_count(), buffered_size) 生成的图像列表的结构是这样的: ../imag......

《我的PaddlePaddle学习之路》笔记三——CIFAR彩色图像识别 有更新!

本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 数据集的介绍 本次项目中使用的是一个3232的彩色图像的数据集CIFAR-10,CIFAR-10数据集包含10个类的60000个32x32彩色图像,每个类有6000个图像。有50000个训练图像和10000个测试图像。数据集分为五个训练batch和一个测试batch,每个batch有10000个图像。测试batch包含来自每个类1000个随机选择的图像。训练batch按照随机顺序包含剩余的图像,但是一些训练batch可能包含比另一个更多的图像。在他们之间,训练的batch包含每个类别正好5000张图片。 下表是数据集文件内部的结构,如上所说,有五个训练batch和一个测试batch: 文件名称大小说明 test_batch31.0M10000个测试图像 data_batch_131.0M10000个训练图像 data_batch_231.0M10000个训练图像 data_batch_331.0M10000个训练图像 data_batch_431.0M10000个训练图像 data_batch_....

《我的PaddlePaddle学习之路》笔记二——MNIST手写数字识别 有更新!

*本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 数据集的介绍 如题目所示,本次训练使用到的是MNIST数据库的手写数字,这个数据集包含60,000个示例的训练集以及10,000个示例的测试集.图片是28x28的像素矩阵,标签则对应着0~9的10个数字。每张图片都经过了大小归一化和居中处理.该数据集的图片是一个黑白的单通道图片,其中图片如下: 该数据集非常小,很适合图像识别的入门使用,该数据集一共有4个文件,分别是训练数据和其对应的标签,测试数据和其对应的标签.文件如表所示: |文件名称 |大小|说明| | :---: |:---:| :---:| |train-images-idx3-ubyte|9.9M|训练数据图片,60,000条数据| |train-labels-idx1-ubyte|28.9K|训练数据标签,60,000条数据| |t10k-images-idx3-ubyte|1.6M|测试数据图片,10,000条数据| |t10k-labels-idx1-ubyte|4.5K|测试数据标签,10,000条数据| 这个数据集针对170多M....

《我的PaddlePaddle学习之路》笔记一——PaddlePaddle的安装 有更新!

环境 系统:Ubuntu 16.0.4(64位) 处理器:Intel(R) Celeron(R) CPU 内存:8G 环境:Python 2.7 Windows系统的安装 PaddlePaddle目前还不支持Windows,如果读者直接在Windows上安装PaddlePaddlePaddle的话,就会提示没有找到该安装包。如果读者一定要在Windows上工作的话,笔者提供两个建议:一、在Windows系统上使用Docker容器,在Docker容器上安装带有PaddlePaddle的镜像;二、在Windows系统上安装虚拟机,再在虚拟机上安装Ubuntu。 本篇文章基于 PaddlePaddle 0.11.0、Python 2.7 在Windows上安装Docker容器 首先下载Docker容器的工具包DockerToolbox,笔者使用这个安装包不仅仅只有Docker,它还包含了VirtualBox虚拟机,使用者工具包我们就不用单独去安装VirtualBox虚拟机了,DockerToolbox的官网下载地址: https://docs.docker.com/toolbox/too......