目录

夜雨飘零

记录精彩的程序人生

标签: PaddlePaddle (50)

给语音识别文本加上标点符号

在语音识别中,模型输出的结果只是单纯的文本结果,并没有根据语法添加标点符号,本教程就是针对这种情况,在语音识别文本中根据语法情况加入标点符号,使得语音识别系统能够输出在标点符号的最终结果。

PPASR流式与非流式语音识别

本项目将分三个阶段分支,分别是入门级 、进阶级 和最终级 分支,当前为最终级,持续维护版本。PPASR中文名称PaddlePaddle中文语音识别(PaddlePaddle Automatic Speech Recognition),是一款基于PaddlePaddle实现的语音识别框架,PPASR致力于简单,实用的语音识别项目。可部署在服务器,Nvidia Jetson设备,未来还计划支持Android等移动设备。

基于PaddlePaddle实现的快速人脸识别模型

本项目参考了ArcFace的损失函数,同时参考了PP-OCRv2模型结构,意在开发一个模型较小,但识别准确率较高且推理速度快的一种人脸识别项目,该项目训练数据使用emore数据集,一共有85742个人,共5822653张图片,使用lfw-align-128数据集作为测试数据。

PPASR语音识别(进阶级)

PPASR(进阶级)基于PaddlePaddle2实现的端到端自动语音识别,相比入门级,进阶级从三个方面来提高模型的准确率,首先最主要的是更换了模型,这次采用了DeepSpeech2模型,DeepSpeech2是2015年百度发布的语音识别模型,其论文为《Baidu’s Deep Speech 2 paper》 。然后也修改了音频的预处理,这次使用了在语音识别上更好的预处理,通过用FFT energy计算线性谱图。最后修改的是解码器,相比之前使用的贪心策略解码器,这次增加了集束搜索解码器,这个解码器可以加载语言模型,对解码的结果调整,使得预测输出语句更合理,从而提高准确率。

基于PaddlePaddle 2.0动态图实现的CRNN文字识别模型 有更新!

本项目是PaddlePaddle 2.0动态图实现的CRNN文字识别模型,可支持长短不一的图片输入。CRNN是一种端到端的识别模式,不需要通过分割图片即可完成图片中全部的文字识别。CRNN的结构主要是CNN+RNN+CTC,它们分别的作用是,使用深度CNN,对输入图像提取特征,得到特征图。使用双向RNN(BLSTM)对特征序列进行预测,对序列中的每个特征向量进行学习,并输出预测标签(真实值)分布。使用 CTC Loss,把从循环层获取的一系列标签分布转换成最终的标签序列。

基于PaddlePaddle2.0验证码端到端的识别

验证码端到端的识别,是对《我的PaddlePaddle学习之路》笔记六——验证码端到端的识别 的升级,这篇文章是我18年初写的,基于当时的V2版本编写,现在有点过时了,突然想升级一下。

PPASR中文语音识别(入门级)

PPASR基于PaddlePaddle2实现的端到端自动语音识别,本项目最大的特点简单,在保证准确率不低的情况下,项目尽量做得浅显易懂,能够让每个想入门语音识别的开发者都能够轻松上手。PPASR只使用卷积神经网络,无其他特殊网络结构,模型简单易懂,且是端到端的,不需要音频对齐,因为本项目使用了CTC Loss作为损失函数。在传统的语音识别的模型中,我们对语音模型进行训练之前,往往都要将文本与语音进行严格的对齐操作。在传统的语音识别的模型中,我们对语音模型进行训练之前,往往都要将文本与语音进行严格的对齐操作,这种对齐非常浪费时间,而且对齐之后,模型预测出的label只是局部分类的结果,而无法给出整个序列的输出结果,往往要对预测出的label做一些后处理才可以得到我们最终想要的结果。基于这种情况,就出现了CTC(Connectionist temporal classification),使用CTC Loss就不需要进行音频对齐,直接输入是一句完整的语音数据,输出的是整个序列结果,这种情况OCR也是同样的情况。

Android基于图像语义分割实现人物背景更换 有更新!

本教程是通过PaddlePaddle的PaddleSeg实现的,该开源库的地址为:http://github.com/PaddlPaddle/PaddleSeg ,使用开源库提供的预训练模型实现人物的图像语义分割,最终部署到Android应用上。关于如何在Android应用上使用PaddlePaddle模型,可以参考笔者的这篇文章《基于Paddle Lite在Android手机上实现图像分类》。

基于PaddlePaddle实现的目标检测模型PP-YOLO 有更新!

PP-YOLO是PaddleDetection优化和改进的YOLOv3的模型,其精度(COCO数据集mAP)和推理速度均优于YOLOv4模型,PP-YOLO在COCO test-dev2017数据集上精度达到45.9%,在单卡V100上FP32推理速度为72.9 FPS, V100上开启TensorRT下FP16推理速度为155.6 FPS。其中还包含了PP-YOLO tiny模型,此模型后量化压缩模型,将模型体积压缩到1.3M,对精度和预测速度基本无影响。

基于Paddle Lite在Android手机上实现图像分类 有更新!

Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎,在多硬件、多平台以及硬件混合调度的支持上更加完备,为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力,有效解决手机算力和内存限制等问题,致力于推动AI应用更广泛的落地。

基于Pyramidbox实现的大规模人脸检测 有更新!

PyramidBox 是一种基于SSD的单阶段人脸检测器,它利用上下文信息解决困难人脸的检测问题。如下图所示,PyramidBox在六个尺度的特征图上进行不同层级的预测。该工作主要包括以下模块:LFPN、Pyramid Anchors、CPM、Data-anchor-sampling。

基于PaddlePaddle实现的密度估计模型CrowdNet 有更新!

CrowdNet模型是2016年提出的人流密度估计模型,论文为《CrowdNet: A Deep Convolutional Network for DenseCrowd Counting》,CrowdNet模型主要有深层卷积神经网络和浅层卷积神经组成,通过输入原始图像和高斯滤波器得到的密度图进行训练,最终得到的模型估计图像中的行人的数量。当然这不仅仅可以用于人流密度估计,理论上其他的动物等等的密度估计应该也可以。

基于PaddlePaddle实现的目标检测模型SSD 有更新!

SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,截至目前是主要的检测框架之一,相比Faster RCNN有明显的速度优势,相比YOLO V1又有明显的mAP优势。本开源是基于PaddlePaddle实现的SSD,参考了PaddlePaddle下的models的ssd ,包括MobileNetSSD,MobileNetV2SSD,VGGSSD,ResNetSSD。使用的是VOC格式数据集,同时提供了预训练模型和VOC数据的预测模型。

基于PaddlePaddle实现声纹识别 有更新!

本章介绍如何使用PaddlePaddle实现简单的声纹识别模型,本项目参考了人脸识别项目的做法PaddlePaddle-MobileFaceNets ,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接。

基于PaddlePaddle实现声音分类 有更新!

本章我们来介绍如何使用PaddlePaddle训练一个区分不同音频的分类模型,例如你有这样一个需求,需要根据不同的鸟叫声识别是什么种类的鸟,这时你就可以使用这个方法来实现你的需求了。

《PaddlePaddle从入门到炼丹》十五——把预测模型部署到Android手机上 有更新!

GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note15 前言 现在越来越多的手机要使用到深度学习了,比如一些图像分类,目标检测,风格迁移等等,之前都是把数据提交给服务器完成的。但是提交给服务器有几点不好,首先是速度问题,图片上传到服务器需要时间,客户端接收结果也需要时间,这一来回就占用了一大半的时间,会使得整体的预测速度都变慢了,再且现在手机的性能不断提高,足以做深度学习的预测。其二是隐私问题,如果只是在本地预测,那么用户根本就不用上传图片,安全性也大大提高了。所以本章我们就来学如何包我们训练的PaddlePaddle预测模型部署到Android手机上。 编译paddle-mobile库 想要把PaddlePaddle训练好的预测库部署到Android手机上,还需要借助paddle-mobile框架。paddle-mobile框架主要是为了方便PaddlePaddle训练好的模型部署到移动设备上,比如Android手机,苹果手机,树莓派等等这些移动设备,有了paddle-mobile框架大大方便了....

《PaddlePaddle从入门到炼丹》十四——把预测模型部署在服务器 有更新!

GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note14 前言 如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是PaddlePaddle的预测接口,获取到预测结果,返回给客户端。这个只是简单的流程,真实的复杂性远远不止这些,但是我们只需要了解这些,然后去搭建属于我们的图像识别接口。 了解Flask 安装flask很简单,只要一条命令就可以了: pip install flask 同时我们也使用到flask_cors,所以我们也要安装这个库 pip install flask_cors 创建一个 paddle_server.py文件,然后编写一个简单的程序,了解一些如何使用这个Flask框架,首先导入所需的依赖库: import os import uuid import numpy as np......

《PaddlePaddle从入门到炼丹》十三——自定义图像数生成 有更新!

前言 我们在第六章介绍了生成对抗网络,并使用生成对抗网络训练mnist数据集,生成手写数字图片。那么本章我们将使用对抗生成网络训练我们自己的图片数据集,并生成图片。在第六章中我们使用的黑白的单通道图片,在这一章中,我们使用的是3通道的彩色图。 GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note13 定义数据读取 我们首先创建一个image_reader.py文件,用于读取我们自己定义的图片数据集。首先导入所需的依赖包。 import os import random from multiprocessing import cpu_count import numpy as np import paddle from PIL import Image 这里的图片预处理主要是对图片进行等比例压缩和中心裁剪,这里为了避免图片在图片在resize时出现变形的情况,导致训练生成的图片不是我们真实图片的样子。这里为了增强数据集,做了随机水平翻转。最后在处理图片的时候,为了避免数据集中有单通道图片导致训练中断.....

《PaddlePaddle从入门到炼丹》十二——自定义文本数据集分类 有更新!

前言 我们在第五章学习了循环神经网络,在第五章中我们使用循环神经网络实现了一个文本分类的模型,不过使用的数据集是PaddlePaddle自带的一个数据集,我们并没有了解到PaddlePaddle是如何使用读取文本数据集的,那么本章我们就来学习一下如何使用PaddlePaddle训练自己的文本数据集。我们将会从中文文本数据集的制作开始介绍,一步步讲解如何使用训练一个中文文本分类神经网络模型。 GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note12 爬取文本数据集 网络上一些高质量的中文文本分类数据集相当少,经过充分考虑之后,绝对自己从网络中爬取自己的中文文本数据集。在GitHub中有一个开源的爬取今日头条中文新闻标题的代码,链接地址请查看最后的参考资料。我们在这个开源代码上做一些简单修改后,就使用他来爬取数据。 创建一个download_text_data.py文件,这个就是爬取数据集的程序。首先导入相应的依赖包。 import os import random import requests im....

《PaddlePaddle从入门到炼丹》十一——自定义图像数据集识别 有更新!

GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note11 前言 本章将介绍如何使用PaddlePaddle训练自己的图片数据集,在之前的图像数据集中,我们都是使用PaddlePaddle自带的数据集,本章我们就来学习如何让PaddlePaddle训练我们自己的图片数据集。 爬取图像 在本章中,我们使用的是自己的图片数据集,所以我们需要弄一堆图像来制作训练的数据集。下面我们就编写一个爬虫程序,让其帮我们从百度图片中爬取相应类别的图片。 创建一个download_image.py文件用于编写爬取图片程序。首先导入所需的依赖包。 import re import uuid import requests import os import numpy import imghdr from PIL import Image 然后编写一个下载图片的函数,这个是程序核心代码。参数是下载图片的关键、保存的名字、下载图片的数量。关键字是百度搜索图片的关键。 # 获取百度图片下载图片 def download_ima.....