计算机毕业设计

计算机毕业设计 · 圈子

8610 位酷友已加入

本圈子收集计算机类的毕业设计与毕业论文,本科、硕士、博士各阶段的都可以,上传时请尽量注明毕设的概述信息~加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

【Demo】基于 TensorFlow Lite 的 Android 端中文语音识别

基于 TensorFlow Lite 的 Android 端中文语音识别 声学模型来源于:ASRT_SpeechRecognition 使用的模型版本:ASRT version 0.4.2 released 系统结构/类的说明 MainActivity 为 Android 程序入口,初始化 UI 控件与其监听函数所在,肩负生成 TensorFlowInferenceInterface 对象与读取标签文件列表的任务、避免重复读取文件。 DreamCarcher 调用网络开源 api、其中通过 Android 官方提供的 AudioCapturer 提供录音功能与文件流,默认地将语音数据保存至手机指定目录下 farewell.wav 处。 Chain 调用 InitialDream 类的对象以获取处理好的语音数据,输入模型以得到返还的概率矩阵,通过 Argmax 函数识别出拼音序列下标后,传入标签文件列表得到最终结果,返还给 MainActivity 的 TextView 控件以显示于应用界面。 InitialDream 为数据读取与处理功能提供支持,在 Chian 的预测函数启动时会自动地初始化并运行,内部实现对 Wave 文件的读取、对其数据进行加窗处理,最终生成模型所需识别输入的操作。 AnnaUtil 包含 4 种静态变量与 4 种静态函数,前者用于提供录音标准帧速率与文件路径,后者包含对复数求模、对数组求 log(n+1),整型数据转浮点数和一维数组内求 Max 数值下标,协助上述各类进行工作。 APP 使用说明 通过下拉控件可选择测试已存在的 thchs30 train/test 数据集文件,用于数据集测试的 wave 文件需要手动放置于手机指定目录(也可使用其它语音文件,请依照 AnnaUtil 内变量修改语音文件名/修改功能对应变量)。 测试语句将显示范例句、识别结果并提供错误率检测;实时录音仅显示识别结果。 按 START 按钮开始测试,按 STOP 按钮结束录音、查看语音识别结果,按 PLAY 按钮播放对应语音文件。 注意 该项目存在许多功能性与代码书写规范问题 不支持识别时长过长(>1600)的语音数据。 暂无拼音译为汉字功能,需要语言模型模块。 生成 TensorFlowInferenceInterface 对象与读取标签文件列表的任务,应当交由单独的类来处理。 来源https://github.com/AnnaClancy/AndroidSpeechRecognition

资源

【Demo】使用请求登录某些网站的API

使用请求登录某些网站的API 文件资料 中文 英文 支持网站 网站 PC模式 移动模式 ScanQR模式 中文 Weibo ✓ ✓ ✓ 新浪微博 Douban ✓ ✗ ✗ 豆瓣 Github ✓ ✗ ✗ Github Music163 ✓ ✗ ✗ 网易云音乐 Zt12306 ✓ ✗ ✗ 中国铁路12306 QQZone ✗ ✗ ✓ QQ空间 QQQun ✗ ✗ ✓ QQ群 QQId ✗ ✗ ✓ 我的QQ中心 Zhihu ✗ ✗ ✓ 知乎 Bilibili ✓ ✓ ✗ B站 Toutiao ✗ ✗ ✗ 今日头条 Taobao ✗ ✗ ✓ 淘宝 Jingdong ✗ ✗ ✓ 京东 Ifeng ✓ ✗ ✗ 凤凰网 Sohu ✗ ✓ ✗ 搜狐 Zgconline ✓ ✗ ✗ 中关村在线 Lagou ✗ ✗ ✗ 拉勾网 Twitter ✗ ✓ ✗ 推特 Vultr ✓ ✗ ✗ Vultr eSurfing ✓ ✗ ✗ 天翼 Renren ✓ ✗ ✗ 人人网 W3Cschool ✓ ✗ ✗ W3Cschool(编程狮) Fishc ✓ ✗ ✗ 鱼C论坛 Youdao ✓ ✗ ✗ 有道 Baidupan ✓ ✗ ✗ 百度网盘 Stackoverflow ✓ ✗ ✗ Stackoverflow CodaLab ✓ ✗ ✗ CodaLab PyPi ✓ ✗ ✗ PyPi Xiami ✓ ✗ ✗ 虾米音乐 Douyu ✗ ✗ ✓ 斗鱼直播 Migu ✓ ✗ ✗ 咪咕音乐 Qunar ✓ ✗ ✗ 去哪儿旅行 Mieshop ✓ ✗ ✗ 小米商城 Mpweixin ✓ ✗ ✗ 微信公众号 Baidutieba ✗ ✗ ✓ 百度贴吧 Dazhongdianping ✗ ✗ ✓ 大众点评 Jianguoyun ✓ ✗ ✗ 坚果云 Cloud189 ✓ ✗ ✗ 天翼云盘 QQMusic ✗ ✗ ✓ QQ音乐 Ximalaya ✗ ✗ ✓ 喜马拉雅 使用DecryptLogin的一些情况 名称 介绍 代码 中文 weiboMonitor click click 微博监控 QQReport click click 生成QQ个人专属报告 bilibiliDownloadUserVideos click click 下载B站指定UP主的所有视频 NeteaseSongListDownloader click click 网易云个人歌单下载器 NeteaseListenLeaderboard click click 网易云个人听歌排行榜 userWeiboSpider click click 下载指定微博用户的所有微博数据 NeteaseSignin click click 网易云音乐自动签到 weiboEmoji click click 微博表情包爬取 weiboSender click click 大吼一声发微博 tbgoods click click 淘宝商品数据小爬虫 jdgoods click click 京东商品数据小爬虫 delallweibos click click 批量删除微博 ClearQzone click click 批量删除QQ空间说说 NeteaseEveryday click click 在终端看网易云每日歌曲推荐 NeteaseClickPlaylist click click 网易云音乐刷歌曲播放量 安装 pip安装 源代码安装 快速开始 来源https://github.com/CharlesPikachu/DecryptLogin

资源

【Demo】基于LaserTagger的中文文本数据增强

文本复述——基于LaserTagger的中文文本数据增强 一.概述 文本复述任务是指把一句/段文本A改写成文本B,要求文本B采用与文本A略有差异的表述方式来表达与之意思相近的文本。 改进谷歌的LaserTagger模型,使用LCQMC等中文语料训练文本复述模型,即修改一段文本并保持原有语义。 复述的结果可用于数据增强,文本泛化,从而增加特定场景的语料规模,提高模型泛化能力。 二.模型介绍 谷歌在文献《Encode, Tag, Realize: High-Precision Text Editing》中采用序列标注的框架进行文本编辑,在文本拆分和自动摘要任务上取得了最佳效果。 在同样采用BERT作为编码器的条件下,本方法相比于Seq2Seq的方法具有更高的可靠度,更快的训练和推理效率,且在语料规模较小的情况下优势更明显。 谷歌公开了本文献对应的代码,但是原有任务与当前任务有一定的差异性,需要修改部分代码,主要修改如下: A.分词方式:原代码针对英文,以空格为间隔分成若干词。现在针对中文,分成若干字。 B.推理效率:原代码每次只对一个文本进行复述,改成每次对batch_size个文本进行复述,推理效率提高6倍。 三.文件说明和实验步骤 1.安装python模块 参见"requirements.txt", "rephrase.sh" 2.训练和评测模型 文件需求 bert预训练的tensorflow 模型 采用RoBERTa-tiny-clue(中文版)预训练模型。 网址 如果想采用其他预训练模型,请修改“configs/lasertagger_config.json". 代码跑通顺序: 第一种方法: 修改运行rephrase.sh 第二种方法详解: 第一步:制作训练测试验证集 python get_pairs_chinese/get_text_pair_lcqmc.py 获得lcqmc中的文本复述语料(语义一致的文本对,且字面表述差异不能过大,第三列为最长公共子串长度与总长度的比值) 只需要修改lcqmc的目录位置即可 python get_pairs_chinese/get_text_pair.py 可根据自己的预料获得文本复述语料(第三列为最长公共子串长度与总长度的比值) 再运行merge_split_corpus.py 将 结果数据 按比例划分 训练、测试、验证集 第二步:短语_词汇表_优化 第三步: 1、制作后续训练模型的验证集 2、制作后续训练模型的训练集 第四步: 1、训练模型 2、 模型整理 第五步 根据test文件进行预测 第六步 对第五步预测的文件进行打分。 3.启动文本复述服务 根据自己需要,可选 根据自己情况修改"rephrase_server.sh"文件中几个文件夹的路径,使用命令"sh rephrase_server.sh"可以启动一个文本复述的API服务 本API服务可以接收一个http的POST请求,解析并对其中的文本进行泛化,具体接口请看“rephrase_server/rephrase_server_flask.py" 有几个脚本文件如rephrase_for_qa.sh,rephrase_for_chat.sh,rephrase_for_skill.sh是作者自己办公需要的,可以忽略 四.实验效果 1.在公开数据集Wiki Split上复现模型: Wiki Split数据集是英文语料,训练模型将一句话拆分成两句话,并保持语义一致,语法合理,语义连贯通顺,如下图所示。 Exact score=15,SARI score=61.5,KEEP score=93,ADDITION score=32,DELETION score=59, 基本与论文中的Exact score=15.2;SARI score=61.7一致(这些分数均为越高越好)。 2.在自己构造的中文数据集训练文本复述模型: (1)语料来源 (A)一部分语料来自于LCQMC语料中的正例,即语义接近的一对文本; (B)另一部分语料来自于宝安机场用户QA下面同一答案的问题。; 因为模型的原理,要求文本A和B在具有一定的重合字数,故过滤掉上述两个来源中字面表述差异大的文本,如“我要去厕所”与“卫生间在哪里”。对语料筛选后对模型进行训练和测试。 (2)测试结果 对25918对文本进行复述和自动化评估,评测分数如下(越高越好): Exact score=29,SARI score=64,KEEP score=84,ADDITION score=39,DELETION score=66. CPU上耗时0.5小时,平均复述一句话需要0.72秒。 可能是语言和任务不同,在中文文本复述上的评测分数比公开数据集高一些。 五.一些trick 1.可以设定对于某些字或词不做修改 如对实体识别NER的语料泛化,需要保证模型不能修改其中的实体; 对业务语料泛化,也可以根据情况保证模型不能修改其中的关键字 如日期,航班号等; 目前,是通过正则的方式定位这些不能被模型修改的位置,然后将这些位置的location设置为1,具体实现参见tagging.py. 2.增加复述文本与原文本的差异度 可以对训练语料中的text_a先进行随机的swag操作,相应地脚本中enable_swap_tag改为true,再训练模型将其改写为text_b; 实际应用或测试时同样将原始文本text_a先进行随机的swag操作,然后利用模型改写为text_b; 因为训练语料中text_a是不通顺,但text_b是通顺的,所以实际应用或测试时仍然会得到通顺的复述结果。 六.数据集 You can download LCQMC data set from https://download.csdn.net/download/tcd1112/12357994 ,But other data is the company data can't give you. You can also leave your E-mail, I will send you LCQMC data 七.文件 tree树如下: 文件框架格局如下: ├── chat_rephrase │ ├── init.py │ ├── predict_for_chat.py │ └── score_for_qa.txt ├── configs │ ├── lasertagger_config_base.json │ └── lasertagger_config.json ├── data │ ├── LCQMC │ │ ├── dev.txt │ │ ├── test.txt │ │ └── train.txt │ └── QQ │ └── Q_Q.txt ├── domain_rephrase │ ├── init.py │ ├── predict_for_domain.py │ └── rephrase_for_domain.sh ├── get_pairs_chinese │ ├── curLine_file.py │ ├── get_text_pair_lcqmc.py │ ├── get_text_pair.py │ ├── get_text_pair_shixi.py │ ├── get_text_pair_sv.py │ ├── init.py │ └── merge_split_corpus.py ├── official_transformer │ ├── attention_layer.py │ ├── beam_search.py │ ├── embedding_layer.py │ ├── ffn_layer.py │ ├── init.py │ ├── model_params.py │ ├── model_utils.py │ ├── README │ ├── tpu.py │ └── transformer.py ├── qa_rephrase │ ├── init.py │ └── predict_for_qa.py ├── rephrase_server │ ├── init.py │ ├── rephrase_server_flask.py │ └── test_server.py ├── skill_rephrase │ ├── init.py │ └── predict_for_skill.py ├── AR_architecture.png ├── bert_example.py ├── compute_lcs.py ├── CONTRIBUTING.md ├── curLine_file.py ├── init.py ├── LICENSE ├── output ├── phrase_vocabulary_optimization.py ├── prediction.txt ├── predict_main.py ├── predicts.py ├── predict_utils.py ├── preprocess_main.py ├── README.md ├── rephrase.sh ├── requirements.txt ├── run_lasertagger.py ├── run_lasertagger_utils.py ├── sari_hook.py ├── score_lib.py ├── score_main.py ├── sentence_fusion_task.png ├── tagging_converter.py ├── tagging.py ├── transformer_decoder.py └── utils.py 来源https://github.com/tongchangD/text_data_enhancement_with_LaserTagger

资源

【Demo】基于mtcnn与facenet实现人脸登录系统

基于mtcnn与facenet实现人脸登录系统 本文主要介绍了系统涉及的人脸检测与识别的详细方法,该系统基于python2.7.10/opencv2/tensorflow1.7.0环境,实现了从摄像头读取视频,检测人脸,识别人脸的功能 由于模型文件过大,git无法上传,整个项目放在百度云盘,地址:https://pan.baidu.com/s/1TaalpwQwPTqlCIfXInS_LA 人脸识别是计算机视觉研究领域的一个热点。目前,在实验室环境下,许多人脸识别已经赶上(超过)人工识别精度(准确率:0.9427~0.9920),比如face++,DeepID3,FaceNet等(详情可以参考:基于深度学习的人脸识别技术综述)。但是,由于光线,角度,表情,年龄等多种因素,导致人脸识别技术无法在现实生活中广泛应用。 本文基于python/opencv/tensorflow环境,采用FaceNet(LFW:0.9963 )为基础来构建实时人脸检测与识别系统,探索人脸识别系统在现实应用中的难点。下文主要内容如下 : 利用htm5 video标签打开摄像头采集头像并使用jquery.faceDeaction组件来粗略检测人脸 将人脸图像上传到服务器,采用mtcnn检测人脸 利用opencv的仿射变换对人脸进行对齐,保存对齐后的人脸 采用预训练的facenet对检测的人脸进行embedding,embedding成512维度的特征; 对人脸embedding特征创建高效的annoy索引进行人脸检测 人脸采集 采用html5 video标签可以很方便的实现从摄像头读取视频帧,下文代码实现了从摄像头读取视频帧,faceDection识别人脸后截取图像上传到服务器功能 在html文件中添加video,canvas标签 打开网络摄像头 利用jquery的facetDection组件检测人脸 $('#canvas').faceDetection() 检测出人连脸的话截图,并把图片转换为base64的格式,方便上传 将base64格式的图片上传到服务器 图片服务器接受代码,php语言实现 人脸检测 人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等。 对于opencv的人脸检测方法,有点是简单,快速;存在的问题是人脸检测效果不好。正面/垂直/光线较好的人脸,该方法可以检测出来,而侧面/歪斜/光线不好的人脸,无法检测。因此,该方法不适合现场应用。对于dlib人脸检测方法 ,效果好于opencv的方法,但是检测力度也难以达到现场应用标准。 本文中,我们采用了基于深度学习方法的mtcnn人脸检测系统(mtcnn:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks)。mtcnn人脸检测方法对自然环境中光线,角度和人脸表情变化更具有鲁棒性,人脸检测效果更好;同时,内存消耗不大,可以实现实时人脸检测。 本文中采用mtcnn是基于python和tensorflow的实现(代码来自于davidsandberg,caffe实现代码参见:kpzhang93) 具体代码参考fcce_detect.py 人脸对齐 有时候我们截取的人脸了头像可能是歪的,为了提升检测的质量,需要把人脸校正到同一个标准位置,这个位置是我们定义的,假设我们设定的标准检测头像是这样的 假设眼睛,鼻子三个点的坐标分别是a(10,30) b(20,30) c(15,45),具体设置可参看config.ini文件alignment块配置项 采用opencv仿射变换进行对齐,获取仿射变换矩阵 仿射变换: img_new = cv2.warpAffine(img, tranform, imagesize) 具体代码参考face_alignment.py文件 产生特征 对齐得到后的头像,放入采用预训练的facenet对检测的人脸进行embedding,embedding成512维度的特征,以(id,vector)的形式保存在lmdb文件中 具体代码可参看face_encoder.py 人脸特征索引: 人脸识别的时候不能对每一个人脸都进行比较,太慢了,相同的人得到的特征索引都是比较类似,可以采用KNN分类算法去识别,这里采用是更高效annoy算法对人脸特征创建索引,annoy索引算法的有个假设就是,每个人脸特征可以看做是在高维空间的一个点,如果两个很接近(相识),任何超平面都无法把他们分开,也就是说如果空间的点很接近,用超平面去分隔,相似的点一定会分在同一个平面空间(具体参看:https://github.com/spotify/annoy) 具体代码可参看face_annoy.py 人脸识别 经过上面三个步骤后,得到人脸特征,在索引中查询最近几个点并就按欧式距离,如果距离小于0.6(更据实际情况设置的阈值)则认为是同一个人,然后根据id在数据库查找到对应人的信息即可 具体代码可参看face_annoy.py 安装部署 建表,用于存在用户注册信息,并在web/DqMysql.php 中配置数据库信息 系统采用有两个模块组成: face_web:提供用户注册登录,人脸采集,php语言实现 face_server: 提供人脸检测,裁剪,对齐,识别功能,python语言实现 模块间采用socket方式通信通信格式为: length+content face_server相关的配置在config.ini文件中 使用镜像 face_serverdocker镜像: shareclz/python2.7.10-face-image face_web镜像: skiychan/nginx-php7 假设项目路径为/data1/face-login 安装face_server容器 3.安装face_web容器 最终效果: face_server加载mtcnn模型和facenet模型后等待人脸请求 未注册识别失败 人脸注册 注册后登录成功 参考 https://zhuanlan.zhihu.com/p/25025596 https://github.com/spotify/annoy https://blog.csdn.net/just_sort/article/details/79337526 https://blog.csdn.net/oTengYue/article/details/79278572 来源https://github.com/chenlinzhong/face-login

资源

【Demo】人脸反欺骗攻击检测挑战的代码

代码和数据集存放 获取数据集,即CASIA-SURF文件夹,里面包含phase1和phase2两个文件夹,进入phase1,解压train.zip和valid.zip文件,得到Training文件夹,train_list.txt文件、Val文件夹、val_public_list.txt文件; 将本项目整个文件夹casia-surf-2019-codes拷贝到CASIA-SURF目录里面,保证和phase1同目录; 获得phase2阶段的测试数据集,Testing文件夹和test_public_list.txt文件放在phase2目录下; 最终目录结构如下: 环境安装(ubuntu 16.04): 打开命令终端,cd到casia-surf-2019-codes目录,执行: 数据集预处理: 打开命令终端,cd到casia-surf-2019-codes目录,依次执行: 模型训练 打开命令终端,cd到casia-surf-2019-codes目录: 第一步:使用29266的训练数据集进行训练, 第二步:使用29266的训练数据集进行训练, 第三步:使用15460和38208两种样本均衡的数据集分别尝试进行微调训练, 测试 按我提供的百度网盘链接,下载训练好的模型,解压后放入casia-surf-2019-codes目录; 打开命令终端,cd到casia-surf-2019-codes目录,执行: 第一阶段预测: 注: 程序执行完后,会在当前目录下生成 commit_phase1_depth_%Y-%m-%d_server_{load-epoch}.txt 格式的结果文件 commit.py 第一个参数为待提交成绩的list文件,第二个参数load-epoch:表示加载第load-epoch数的模型进行预测。 第二阶段预测: 注: 程序执行完后,会在当前目录下生成 commit_phase2_depth_%Y-%m-%d_server_{load-epoch}.txt 格式的结果文件 commit.py 第一个参数为待提交成绩的list文件,第二个参数load-epoch:表示加载第load-epoch数的模型进行预测。 来源https://github.com/zzzkk2009/casia-surf-2019-codes

资源

【Demo】基于Bert进行知识蒸馏的预训练语言模型

基于Bert进行知识蒸馏的预训练语言模型 本项目是基于华为的TinyBert进行修改的,简化了数据读取的过程,方便我们利用自己的数据进行读取操作。 TinyBert的训练过程: 用通用的Bert base进行蒸馏,得到一个通用的student model base版本; 用相关任务的数据对Bert进行fine-tune得到fine-tune的Bert base模型; 用2得到的模型再继续蒸馏得到fine-tune的student model base,注意这一步的student model base要用1中通用的student model base去初始化;(词向量loss + 隐层loss + attention loss) 重复第3步,但student model base模型初始化用的是3得到的student模型。(任务的预测label loss) General Distillation (通用版预训练语言模型蒸馏) 预训练 Task Distillation (fine-tune版预训练语言模型蒸馏) 预训练 数据格式 数据增强 参数说明: python data_augmentation.py \ --pretrained_bert_model /nas/pretrain-bert/pretrain-pytorch/bert-base-uncased \ # bert预训练模型 --data_path data/en_data.txt \ # 需要增强的数据路径 --glove_embs /nas/lishengping/datas/glove.6B.300d.txt \ # glove词向量文件 --M 15 \ # 从文本中选择M个词可能被替换 --N 30 \ # 通过bert mask预测的概率前N个词去替换 --p 0.4 \ # 某个词被替换的概率 3>&2 2>&1 1>&3 | tee logs/data_augmentation.log 论文在fine-tune阶段采用了数据增强的策略,从后面的实验中可以看出,数据增强起到了很重要的作用。 数据扩充的过程如下: 对于特定任务的数据中每一条文本,首先使用bert自带的方式进行bpe分词,bpe分词之后是完整单词(single-piece word),用[MASK]符号代替,然后使用bert进行预测并选择其对应的候选词N个;如果bpe(就是BertTokenizer)分词之后不是完整单词,则使用Glove词向量以及余弦相似度来选择对应的N个候选词,最后以概率p选择是否替换这个单词,从而产生更多的文本数据。 数据 因为懒得找中文的词向量下载,暂时用英文的glove文件和英文原始数据。中文的话只需要把预训练模型改为中文bert,glove改为中文的词向量文件即可。原始数据样式和增强后的数据样式在data/en_data.txt和data/aug_en_data.txt 官方版本 =====1st version to reproduce our results in the paper ====== General_TinyBERT(4layer-312dim) General_TinyBERT(6layer-768dim) =====2nd version (2019/11/18) trained with more (book+wiki) and no [MASK] corpus ===== General_TinyBERT_v2(4layer-312dim) General_TinyBERT_v2(6layer-768dim) We here also provide the distilled TinyBERT(both 4layer-312dim and 6layer-768dim) of all GLUE tasks for evaluation. Every task has its own folder where the corresponding model has been saved. TinyBERT(4layer-312dim) TinyBERT(6layer-768dim) 来源https://github.com/Lisennlp/TinyBert

资源

【Demo】基于深度学习的中文语音识别系统

基于深度学习的中文语音识别系统 包括基于深度学习的声学模型和基于深度学习的语言模型 1. Introduction 该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型包含transformer、CBHG,数据集包含stc、primewords、Aishell、thchs30四个数据集。 本系统更整体介绍:https://blog.csdn.net/chinatelecom08/article/details/82557715 本项目现已训练一个迷你的语音识别系统,将项目下载到本地上,下载thchs数据集并解压至data,运行test.py,不出意外能够进行识别,结果如下: 若自己建立模型则需要删除现有模型,重新配置参数训练,具体实现流程参考本页最后。 2. 声学模型 声学模型采用CTC进行建模,采用CNN-CTC、GRU-CTC、FSMN等模型model_speech,采用keras作为编写框架。 论文地址:http://www.infocomm-journal.com/dxkx/CN/article/openArticlePDFabs.jsp?id=166970 tutorial:https://blog.csdn.net/chinatelecom08/article/details/85013535 3. 语言模型 新增基于self-attention结构的语言模型model_language\transformer.py,该模型已经被证明有强于其他框架的语言表达能力。 论文地址:https://arxiv.org/abs/1706.03762。 tutorial:https://blog.csdn.net/chinatelecom08/article/details/85051817 基于CBHG结构的语言模型model_language\cbhg.py,该模型之前用于谷歌声音合成,移植到该项目中作为基于神经网络的语言模型。 原理地址:https://github.com/crownpku/Somiao-Pinyin tutorial:https://blog.csdn.net/chinatelecom08/article/details/85048019 4. 数据集 包括stc、primewords、Aishell、thchs30四个数据集,共计约430小时, 相关链接:http://www.openslr.org/resources.php Name train dev test aishell 120098 14326 7176 primewords 40783 5046 5073 thchs-30 10000 893 2495 st-cmd 10000 600 2000 数据标签整理在data路径下,其中primewords、st-cmd目前未区分训练集测试集。 若需要使用所有数据集,只需解压到统一路径下,然后设置utils.py中datapath的路径即可。 与数据相关参数在utils.py中: data_type: train, test, dev data_path: 对应解压数据的路径 thchs30, aishell, prime, stcmd: 是否使用该数据集 batch_size: batch_size data_length: 我自己做实验时写小一些看效果用的,正常使用设为None即可 shuffle:正常训练设为True,是否打乱训练顺序 5. 配置 使用train.py文件进行模型的训练。 声学模型可选cnn-ctc、gru-ctc,只需修改导入路径即可: 语言模型可选transformer和cbhg: 模型识别 使用test.py检查模型识别效果。 模型选择需和训练一致。 一个简单的例子 1. 声学模型训练 train.py文件 2.语言模型训练 3. 模型测试 整合声学模型和语言模型 test.py文件 定义解码器 准备测试数据 加载声学模型和语言模型 使用语音识别系统 来源:https://github.com/audier/DeepSpeechRecognition

资源

【Demo】PaddleGAN——飞桨生成对抗网络开发套件

PaddleGAN——飞桨生成对抗网络开发套件 Paddle GAN库,包括许多有趣的应用程序,例如DeepFake First-Order运动传递,Mai-ha-hi(蚂蚁呀嘿),facesap wav2lip,图片修复,图像编辑,photo2cartoon,图像样式传递等。 介绍 飞桨生成对抗网络开发套件--PaddleGAN,为开发者提供经典及前沿的生成对抗网络高性能实现,并支撑开发者快速构建、训练及部署生成对抗网络,以供学术、娱乐及产业应用。 GAN--生成对抗网络,被“卷积网络之父”Yann LeCun(杨立昆)誉为「过去十年计算机科学领域最有趣的想法之一」,是近年来火遍全网,AI研究者最为关注的深度学习技术方向之一。 快速开始 请确保您按照安装文档的说明正确安装了PaddlePaddle和PaddleGAN 通过ppgan.apps接口直接使用应用: 更多应用的使用请参考ppgan.apps API 更多训练、评估教程: 数据准备 训练/评估/推理教程 经典模型实现 Pixel2Pixel CycleGAN PSGAN First Order Motion Model: 「蚂蚁呀嘿 」 换脸视频核心技术 FaceParsing AnimeGANv2 U-GAT-IT Photo2Cartoon Wav2Lip Super_Resolution StyleGAN2 复合应用 视频修复 在线教程 可以通过人工智能学习与实训社区AI Studio 的示例工程在线体验PaddleGAN的部分能力: 在线教程 链接 表情动作迁移-一键实现多人版「蚂蚁呀嘿」 点击体验 表情动作迁移-全网爆火的「蚂蚁呀嘿」实现 点击体验 老北京视频修复 点击体验 表情动作迁移-当苏大强唱起unravel 点击体验 效果展示 蚂蚁呀嘿 图片变换 老视频修复 动作迁移 超分辨率 妆容迁移 人物动漫化 写实人像卡通化 照片动漫化 唇形同步 版本更新 v0.1.0 (2020.11.02) 初版发布,支持Pixel2Pixel、CycleGAN、PSGAN模型,支持视频插针、超分、老照片/视频上色、视频动作生成等应用。 模块化设计,接口简单易用。 来源:https://github.com/PaddlePaddle/PaddleGAN

资源

【Demo】基于OpenCV的视频人脸识别

基于OpenCV的视频人脸识别 介绍 本项目基于OpenCV使用Haar级联与dlib库进行人脸检测及实时跟踪,应用LBPH算法开发了一个功能相对完整的人脸识别系统。系统采用sqlite3进行序列化数据存储,能够对陌生人脸闯入进行报警,并拥有基于PyQt5设计的GUI实现。 系统管理 核心框架 人脸采集 数据管理 如何运行? 以下操作基于Anaconda3环境,并在Windows10 x64上测试。 环境配置 numpy==1.14.2 PyQt5==5.9.2 PySocks==1.6.8 python-telegram-bot==10.0.1 克隆代码 创建Python虚拟环境 安装OpenCV 安装dlib 安装其它依赖包 运行核心框架 运行人脸采集系统 运行数据管理系统 更新 退出虚拟环境 来源https://github.com/winterssy/face_recognition_py

资源

MASR 中文语音识别

MASR 中文语音识别 MASR是一个基于端到端的深度神经网络的中文普通话语音识别项目。 原理 MASR使用的是门控卷积神经网络(Gated Convolutional Network),网络结构类似于Facebook在2016年提出的Wav2letter。但是使用的激活函数不是ReLU或者是HardTanh,而是GLU(门控线性单元)。因此称作门控卷积网络。根据我的实验,使用GLU的收敛速度比HardTanh要快。如果你想要研究卷积网络用于语音识别的效果,这个项目可以作为一个参考。 以下用字错误率CER来衡量模型的表现,CER = 编辑距离 / 句子长度,越低越好* 大致可以理解为 1 - CER 就是识别准确率。 模型使用AISHELL-1数据集训练,共150小时的录音,覆盖了4000多个汉字。工业界使用的语音识别系统通常使用至少10倍于本项目的录音数据来训练,同时使用特定场景的语料来训练语言模型,所以,不要期待本项目可以和工业界的识别效果媲美。这对于Github上任何个人项目来说都不现实,除非有更先进的技术诞生。 什么叫特定场景的语料训练的语言模型?比如你使用游戏中的语音识别,它更倾向于将你的话识别成你在玩游戏时可能说的话,比如「貂蝉被蓝打死了」。而在其他场景下,「貂蝉被蓝打死了」根本就不是一句通顺的话。不信你和一个只读过三国演义没玩过王者荣耀的人说「貂蝉被蓝打死了」,你确定ta不会反问你:「啥?貂蝉被谁打死了?lan是谁?」 在单卡GTX 1080Ti上,模型每迭代一个epoch大约需要20分钟。(实验室的CUDA版本较低,不排除更新CUDA版本后会快一些的可能。) 上图为验证集的CER随epoch的训练曲线。可以看到,目前验证集CER已经下降到11%。 图中没有显示测试集的表现。测试集的CER稍高一些,在14%。 通过外接语言模型可以将测试集的CER降低到8%。 项目目前提供的预训练模型训练了大约是100个epoch时候的,已经接近最好了。 训练MASR模型 MASR基于pytorch,MASRModel是torch.nn.Module的子类。这将给熟悉pytorch的用户带来极大的方便。 使用MASR的训练功能需要安装以下额外的依赖,既然你浏览到了这里,这些依赖你一定能自行搞定! levenshtein-python 计算CER中的编辑距离 warpctc_pytorch 百度的高性能CTC正反向传播实现的pytorch接口 tqdm 进度显示 tensorboardX 为pytorch提供tensorboard支持 tensorboard 实时查看训练曲线 当然,相信你也有GPU,否则训练将会变得很慢。 通常,神经网络的训练比搭建要困难得多,然而MASR为你搞定了所有复杂的东西,使用MASR进行训练非常方便。 如果你只想要使用MASR内置的门卷积网络GatedConv的话,首先初始化一个GatedConv对象。 你需要传入向它vocabulary,这是一个字符串,包含你的数据集中所有的汉字。但是注意,vocabulary[0]应该被设置成一个无效字符,用于表示CTC中的空标记。 之后,使用to_train方法将model转化成一个可以训练的对象。 此时model则变成可训练的了,使用fit方法来进行训练。 epoch表示你想要训练几次,而train.index和dev.index应该分别为训练数据集和开发数据集(验证集或测试集)的索引文件。 索引文件应具有如下的简单格式: 左边是音频文件路径,右边是对应的标注,用逗号(英文逗号)分隔。 model.fit方法还包含学习率、batch size、梯度裁剪等等参数,可以根据需要调整,建议使用默认参数。 完整的训练流程参见train.py。 来源https://github.com/nobody132/masr

资源

【Demo】人脸表情识别

人脸表情识别 简介 使用卷积神经网络构建整个系统,在尝试了Gabor、LBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013、JAFFE和CK+三个表情识别数据集上进行模型评估。 环境部署 基于Python3和Keras2(TensorFlow后端),具体依赖安装如下(推荐使用conda虚拟环境)。 如果你是Linux用户,直接执行根目录下的env.sh即可一键配置环境,执行命令为bash env.sh。 数据准备 数据集和预训练模型均已经上传到百度网盘,链接给出,提取密码为2pmd。下载后将model.zip移动到根目录下的models文件夹下并解压得到一个*.h5的模型参数文件,将data.zip移动到根目录下的dataset文件夹下并解压得到包含多个数据集压缩文件,均解压即可得到包含图像的数据集(其中rar后缀的为原始jaffe数据集,这里建议使用我处理好的)。 项目说明 传统方法 数据预处理 图片降噪 人脸检测(HAAR分类器检测(opencv)) 特征工程 人脸特征提取 LBP Gabor 分类器 SVM 深度方法 人脸检测 HAAR分类器 MTCNN(效果更好) 卷积神经网络 用于特征提取+分类 网络设计 使用经典的卷积神经网络,模型的构建主要参考2018年CVPR几篇论文以及谷歌的Going Deeper设计如下网络结构,输入层后加入(1,1)卷积层增加非线性表示且模型层次较浅,参数较少(大量参数集中在全连接层)。 模型训练 主要在FER2013、JAFFE、CK+上进行训练,JAFFE给出的是半身图因此做了人脸检测。最后在FER2013上Pub Test和Pri Test均达到67%左右准确率(该数据集爬虫采集存在标签错误、水印、动画图片等问题),JAFFE和CK+5折交叉验证均达到99%左右准确率(这两个数据集为实验室采集,较为准确标准)。 执行下面的命令将在指定的数据集(fer2013或jaffe或ck+)上按照指定的batch_size训练指定的轮次。训练会生成对应的可视化训练过程,下图为在三个数据集上训练过程的共同绘图。 模型应用 与传统方法相比,卷积神经网络表现更好,使用该模型构建识别系统,提供GUI界面和摄像头实时检测(摄像必须保证补光足够)。预测时对一张图片进行水平翻转、偏转15度、平移等增广得到多个概率分布,将这些概率分布加权求和得到最后的概率分布,此时概率最大的作为标签(也就是使用了推理数据增强)。 GUI界面 注意,GUI界面预测只显示最可能是人脸的那个脸表情,但是对所有检测到的人脸都会框定预测结果并在图片上标记,标记后的图片在output目录下。 执行下面的命令即可打开GUI程序,该程序依赖PyQT设计,在一个测试图片(来源于网络)上进行测试效果如下图。 上图的GUI反馈的同时,会对图片上每个人脸进行检测并表情识别,处理后如下图。 实时检测 实时检测基于Opencv进行设计,旨在用摄像头对实时视频流进行预测,同时考虑到有些人的反馈,当没有摄像头想通过视频进行测试则修改命令行参数即可。 使用下面的命令会打开摄像头进行实时检测(ESC键退出),若要指定视频进行进行检测,则使用下面的第二个命令。 来源https://github.com/luanshiyinyang/FacialExpressionRecognition

资源

【Demo】基于TensorFlow和CNN卷积神经网络实现人脸性别检测

本文主要是实现了根据人脸识别性别的卷积神经网络,并对卷积过程中的提取特征进行了可视化. 卷积神经网络 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的提取不用额外进行,在对网络的训练的过程当中,网络会自动提取主要的特征. 卷积神经网络直接用原始图像的全部像素作为输入,但是内部为非全连接结构.因为图像数据在空间上是有组织结构的,每一个像素在空间上和周围的像素是有关系的,和相距很远的像素基本上是没什么联系的,每个神经元只需要接受局部的像素作为输入,再将局部信息汇总就能得到全局信息. 权值共享和池化两个操作使网络模型的参数大幅的减少,提高了模型的训练效率. 卷积神经网络主要特点 权值共享: 在卷积层中可以有多个卷积核,每个卷积核与原始图像进行卷积运算后会映射出一个新的2D图像,新图像的每个像素都来自同一个卷积核.这就是权值共享. 池化: 降采样,对卷积(滤波)后,经过激活函数处理后的图像,保留像素块中灰度值最高的像素点(保留最主要的特征),比如进行 2X2的最大池化,把一个2x2的像素块降为1x1的像素块。 卷积网络的训练数据(112×92×3图形) 从data目录读取数据,famale存放女性图片,male存放男性图片 重新打乱 训练集与测试集比例 8:2 训练参数 网络结构 辅助函数 Padding 训练 第一层卷积+池化 第二层卷积+池化 第三层卷积+池化 全连接第一层 全连接第二层 全连接输出层 损失函数 计算准确率&损失 启动会话开始训练 测试集验证 验证通过,保存模型 使用已训练好的模型参考:gender_model_use.py 结果: 迭代3000次,模型的准确率达到93% 训练交叉熵代价 训练的准确率 训练数据中的一个样本 第一层卷积提取的特征 2x2池化后特征 第二层卷积提取的特征 2x2池化后特征 第三层卷积提取的特征 2x2池化后特征 来源https://github.com/chenlinzhong/gender-recognition

  • 1
  • 9
  • 10
  • 11
  • 20
前往