本项目是 PaddlePaddle 2.0 动态图实现的 CRNN 文字识别模型,可支持长短不一的图片输入。CRNN 是一种端到端的识别模式,不需要通过分割图片即可完成图片中全部的文字识别。CRNN 的结构主要是 CNN+RNN+CTC,它们分别的作用是,使用深度 CNN,对输入图像提取特征,得到特征图。使用双向 RNN(BLSTM)对特征序列进行预测,对序列中的每个特征向量进行学习,并输出预测标签(真实值)分布。使用 CTC Loss,把从循环层获取的一系列标签分布转换成最终的标签序列。
这个模型类型 CRNN,前面使用卷积层提前图像特征,后面用一个 GRU,他是 LSTM 的变种,最后的全连接层,输出的大小为词汇表 +1,因为还有一个空格字符,这个是 CTC 需要的。
MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,总体可分为 P-Net、R-Net、和 O-Net 三层网络结构。它是 2016 年中国科学院深圳研究院提出的用于人脸检测任务的多任务神经网络模型,该模型主要采用了三个级联的网络,采用候选框加分类器的思想,进行快速高效的人脸检测。这三个级联的网络分别是快速生成候选窗口的 P-Net、进行高精度候选窗口过滤选择的 R-Net 和生成最终边界框与人脸关键点的 O-Net。和很多处理图像问题的卷积神经网络模型,该模型也用到了图像金字塔、边框回归、非最大值抑制等技术。
在数据预处理方便,本项目主要是将音频执行梅尔频率倒谱系数(MFCCs)处理,然后在使用出来的数据进行训练,在读取音频时,使用 librosa.load(wav_path, sr=16000)
函数读取音频文件,再使用 librosa.feature.mfcc()
执行数据处理。MFCC 全称梅尔频率倒谱系数。梅尔频率是基于人耳听觉特性提出来的, 它与 Hz 频率成非线性对应关系。梅尔频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的 Hz 频谱特征,主要计算方式分别是预加重,分帧,加窗,快速傅里叶变换(FFT),梅尔滤波器组,离散余弦变换(DCT),最后提取语音数据特征和降低运算维度。本项目使用的全部音频的采样率都是 16000Hz,如果其他采样率的音频都需要转为 16000Hz,create_manifest.py
程序也提供了把音频转为 16000Hz。
在这个任务是对坐标进行回归,使用均方误差(Mean Square error )损失函数 paddle.nn.MSELoss()
来做计算,飞桨 2.0 中,在 nn 下将损失函数封装成可调用类。这里使用 paddle.Model 相关的 API 直接进行训练,只需要定义好数据集、网络模型和损失函数即可。
使用模型代码进行 Model 实例生成,使用 prepare 接口定义优化器、损失函数和评价指标等信息,用于后续训练使用。在所有初步配置完成后,调用 fit 接口开启训练执行过程,调用 fit 时只需要将前面定义好的训练数据集、测试数据集、训练轮次(Epoch)和批次大小(batch_size)配置好即可。
本案例将会使用飞桨提供的 API 完成数据集的下载并为后续的训练任务准备好数据迭代器。cifar10 数据集由 60000 张大小为 32 * 32 的彩色图片组成,其中有 50000 张图片组成了训练集,另外 10000 张图片组成了测试集。这些图片分为 10 个类别,将训练一个模型能够把图片进行正确的分类。
一行代码实现人脸检测,人脸关键点检测和戴口罩检测。
本项目是使用 Paddle Lite 的 C++ 实现的人脸检测,人脸关键点检测和戴口罩检测,并将编译好的动态库和静态库部署在 Android 应用上,在 Android 设备上实现人脸检测,人脸关键点检测和戴口罩检测,所以本应不会使用到 C++ 开发,可以只使用笔者提供的 JNI 接口实现这些功能。在 ai
这个 module 是笔者在开发时使用到的,读者在使用这个项目时,完全可以删除掉,如果是看 C++ 实现,也可以看这个 module 的源码。
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。
本教程源码地址:https://github.com/yeyupiaoling/PP-YOLO
今天来水一片文章,基于开源的 Pyramidbox 大规模人脸检测编写的 PaddlePaddle 教程,为了方便训练预测,本教程做了一定的修改。这个模型虽然大,但是符合大规模人群中也可以准确地检测到人脸,就是遮挡比较严重也能正确检测。
PyramidBox 是一种基于 SSD 的单阶段人脸检测器,它利用上下文信息解决困难人脸的检测问题。如下图所示,PyramidBox 在六个尺度的特征图上进行不同层级的预测。该工作主要包括以下模块:LFPN、Pyramid Anchors、CPM、Data-anchor-sampling。
CrowdNet 模型是 2016 年提出的人流密度估计模型,论文为《CrowdNet: A Deep Convolutional Network for DenseCrowd Counting》,CrowdNet 模型主要有深层卷积神经网络和浅层卷积神经组成,通过输入原始图像和高斯滤波器得到的密度图进行训练,最终得到的模型估计图像中的行人的数量。当然这不仅仅可以用于人流密度估计,理论上其他的动物等等的密度估计应该也可以。
SSD,全称 Single Shot MultiBox Detector,是 Wei Liu 在 ECCV 2016 上提出的一种目标检测算法,截至目前是主要的检测框架之一,相比 Faster RCNN 有明显的速度优势,相比 YOLO V1 又有明显的 mAP 优势。本开源是基于 PaddlePaddle 实现的 SSD,包括 MobileNetSSD,MobileNetV2SSD,VGGSSD,ResNetSSD。使用的是 VOC 格式数据集,同时提供了预训练模型和 VOC 数据的预测模型。
本章介绍如何使用 PaddlePaddle 实现简单的声纹识别模型,首先你需要熟悉音频分类,没有了解的可以查看这篇文章《基于 PaddlePaddle 实现声音分类》
。基于这个知识基础之上,我们训练一个声纹识别模型,通过这个模型我们可以识别说话的人是谁,可以应用在一些需要音频验证的项目。
本章我们来介绍如何使用 PaddelPaddle 训练一个区分不同音频的分类模型,例如你有这样一个需求,需要根据不同的鸟叫声识别是什么种类的鸟,这时你就可以使用这个方法来实现你的需求了。
这个专栏是深度学习框架 PaddlePaddle Fluid 版本的教程,开发环境主要是 PaddlePaddle 1.6.0 和 Python 3.5。内容涉及了 PaddlePaddle 的安装,并从简单执行 1+1 运算例子入门 PaddlePaddle,借助各个实例一步步入手 PaddlePaddle,通过本系列教程你可以学到如何使用 PaddlePaddle 搭建卷积神经网络,循环神经网络,并能够训练自定义数据集,最后还可以部署到自己的实际项目中。
这个专栏是深度学习框架 PaddlePaddle V2 版本的教程,开发环境主要是 PaddlePaddle 0.11.0 和 Python 2.7。内容涉及了 PaddlePaddle 的安装,并从手写数据集识别入手,借助实例一步步入手 PaddlePaddle,通过实例掌握 PaddlePaddle 的使用,从零进入人工智能领域。
现在越来越多的手机要使用到深度学习了,比如一些图像分类,目标检测,风格迁移等等,之前都是把数据提交给服务器完成的。但是提交给服务器有几点不好,首先是速度问题,图片上传到服务器需要时间,客户端接收结果也需要时间,这一来回就占用了一大半的时间,会使得整体的预测
如果读者使用过百度等的一些图像识别的接口,比如百度的细粒度图像识别接口,应该了解这个过程,省略其他的安全方面的考虑。这个接口大体的流程是,我们把图像上传到百度的网站上,然后服务器把这些图像转换成功矢量数据,最后就是拿这些数据传给深度学习的预测接口,比如是
我们在第六章介绍了生成对抗网络,并使用生成对抗网络训练 mnist 数据集,生成手写数字图片。那么本章我们将使用对抗生成网络训练我们自己的图片数据集,并生成图片。在第六章中我们使用的黑白的单通道图片,在这一章中,我们使用的是 3 通道的彩色图。