深度学习产业应用项目表2.0
本页面收集了大量深度学习项目的代码链接。所有代码均按照所属技术领域建立索引,以便大家查阅使用。
图像
图像生成
图片自动上色
插画界爆火的:PaintsChainer
PaintsChainer是在插画界鼎鼎有名的应用,它可以直接把画师的线稿手稿进行简单的上色,说是简单,其实有时候也能达到经验的效果。
下面就是使用这个应用完成的一种效果,可以看到经上色后已经可以达到成品水平了。
它同时还支持半引导式上色,用户可以在某些位置指定色域,PaintsChainer会在这个位置按用户的需求来上色。
这种可以自动上色的应用其实和“自动化妆”、“苦脸变笑脸”、“男人变女人”等应用一样,都是通过对抗生成网络(GAN)来实现的。
可以理解为:GAN通过学习大量的“线稿图”和“上色图”,学习到了其中的关系,而这种关系就是上色的方法。
相关开源实现:
https://github.com/pavelgonchar/colornet
绘画风格转换:Neural Style
爆红应用市场的风格转换APP:Prisma
Prisma是曾在手机APP市场爆火的风格转换趣味APP。它通过深度神经网络能把你手机中那些普通的照片模仿出著名艺术家画作的风格。
Prisma的核心技术是卷积神经网络,它利用卷积神经网络中的Feature map,获取著名绘画大师和主要流派的艺术风格,然后对你的照片进行智能风格化。
相关开源实现:
https://github.com/jcjohnson/neural-style
字迹模拟
签名生成软件
我们在上网时有时会遇到“免费设计签名”的广告,有时候点进去发现真的可以生成签名,并且笔迹飘逸,感觉还挺专业的。
那这些签名真的是名家给设计的吗?当然不是,实际上有很多都是通过“字迹模拟”来实现的。
给予一个深度神经网络大量的名家笔迹数据,神经网络就能自动总结出这些笔迹中的风格,从而应用在你要求的文字上。
这种字迹模拟技术还可以用在生成用于训练手写文字识别系统的训练数据生成上。
相关开源实现:
https://github.com/szcom/rnnlib
图片装换
FaceAPP:人脸转换
在人工智能时代,人们对于娱乐方式的要求也越来越高。比如就“自拍”这件事情,仅仅美颜功能,已经不能满足人们的需求。
有技术团队利用深度学习技术做出了更强大的“美颜”APP,它可以将“死鱼脸”变成“笑脸”,将“年轻的脸”变为“年老的脸”,将“男人的脸”变为“女人的脸”,并且转化及其逼真,毫无违和感。
实现这些效果,是利用了一种叫做“生成式对抗网络(GAN)”的深度神经网络模型。
在“生成式对抗网络”模型中,有一种叫做CycleGAN的变种,它采用了一种叫做“对偶学习”的特殊机制,可以自动学习出原图片与目标图片之间的转化关系。
比如我们选定很多张“没有表情的脸”作为原图片,很多张“笑脸”作为目标图片,直接送到CycleGAN模型中,也不用告诉他目的是“转换笑脸表情”,CycleGAN就能自己总结出两套图片的不同点的“规律”,从而学习这种规律,最终可以实现在这种规律间转换的效果。
相关开源实现:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
图像识别
用于物体识别的全卷积网络:FCN
胰岛素囊泡识别
现代医学对糖尿病患者的诊疗依赖于观察胰岛细胞中胰岛素囊泡的分布情况。
但是电镜照片中的胰岛素囊泡分布及其不均匀,医生观察起来费时费力,还容易造成误诊。
如果使用基于FCN的图像分割识别技术,就可以解决这样的问题。
FCN即全卷积神经网络,非常胜任图像分割任务。也就是说,只要将足够多的标注好的囊泡电镜照片传入FCN网络进行训练,那么训练好的网络就可以快速定位出电镜照片中囊泡的位置,其识别正确率可以达到97.73%~98.9%,几乎与人工处理效果无异。
眼底病变识别
同样的技术还被应用在“眼科智能诊断系统”中。据悉,只要在发病初期定期进行眼底检查,失明风险可下降 94.4%。但由于眼底病灶微小,部分医生经验不足等原因,使得诊断中可能出现漏诊、误诊的情况,而借助 AI 系统辅助诊断是非常可行的问题解决方案。
使用基于FCN的图像分割技术,只需要将训练FCN网络的数据改为“标注好的眼底病变数据”,训练好的网络就可以轻易识别出患者眼底照片中的病变位置。目前这样的系统对病患基数巨大的糖尿病视网膜病变(DR)和老年性黄斑变性(AMD)筛查的诊断准确率已达到九成以上。
开源实现参考:
https://github.com/mattmacy/vnet.pytorch
https://github.com/wkentaro/pytorch-fcn.git
色情内容识别
图普科技、阿塔科技图像鉴黄系统
目前有不止两家的服务商都提供云视频、图片鉴黄系统。
对于很多社区网站来说,几乎每时每刻都有用户在上传图片,在这些图片&视频中有时会掺杂着色情内容。
数据量如此之大,使用人力筛选过滤其中的内容是不可能的,所以就出现了现在基于深度学习技术的鉴黄系统。
一般这些系统都可以判断一段图像是属于色情、性感还是正常。
相关开源实现:
https://github.com/yahoo/open_nsfw
人脸识别
Face++ & 商汤科技 等等
人脸识别目前在市场的应用真是非常普遍,相关的公司也很多,目前国内知名的就是Face++与商汤科技,中科奥森也是国内老牌的人脸识别研发中心。
目前人脸识别技术广泛应用在认证方面,包括人脸识别免面签,以及人脸支付,安防等等。
实现方法多是结合了结构分析的深度学习技术,有些公司还采用了基于双目摄像头的深度图像识别系统。
开源实现参考:
https://github.com/cmusatyalab/openface
https://github.com/liuziwei7/mobile-id
https://github.com/ageitgey/face_recognition#face-recognition
图像理解
OCR光学文字识别
证件识别
支付宝有一个证件校验系统。证件校验系统是为了支付宝的证件审核开发的,它使证件校核时间从1天缩小到1秒,同时提升了30%的通过率。以前是靠人识别,可能会误判,比如人识别是50%的识别率,那么机器他现在比如说做80%的识别率,这是非常了不得的。
这种将证件图片扫描,将证件图片中的文字及图片提取出来的技术叫做光学文字识别技术,即OCR。
目前最先进的OCR技术采用的是LSTM+CTC的实现方法。LSTM+CTC的框架技术最初是用在自然语言语音识别领域,应用在OCR上,可以实现“一句话”的文字识别效果。
相关开源实现:
LSTM_CTC_OCR
https://github.com/ilovin/lstm_ctc_ocr
Convolutional Recurrent Neural Network
https://github.com/bgshih/crnn
扫一扫路边的餐厅,立马跳出该餐厅的评分信息
Google Lens有一个很酷的功能,通过用手机扫街边的餐厅,可以直接获得餐厅的评分推荐等信息。
这其实就是将“光学文字识别技术”应用在现实增项中。通过将实时的景象分割成图片,然后识别图片中的文字,通过识别出的餐厅名字以及当前的定位信息搜搜餐厅信息,再通过AR显示技术,实时的显示在摄像图像中。
卷积循环神经网络是一种能在图片中快输识别出文字的深度学习模型。
它即保持了卷积神经网络的特性,可以快速定位出图片中文字的位置;又具有循环神经网络的特质,可以将图片中的文字识别的更加准确。
视频
场景识别
盲人用环境认知辅助系统
人工智能的发展同样可以改变残障人士的生活质量。
有一种能够根据图像生成其相关描述的技术,叫做NeuralTalk。将这种技术应用于摄像头捕捉的视频图像,可以实时生成对当前环境的描述,在将描述的文字转化为语音,可以让视觉障碍的人们找回认知周围世界的能力。
相关开源实现:
https://github.com/cgq5/Video-Caption-with-Neuraltalk2
声音
语音识别
句子级语音识别
个人语音助手
目前生活在大城市的人们生活节奏非常紧张,即使是一分一秒都显得颇为珍贵。因此,即使是像操作手机这样的操作,感觉也是非常浪费时间的。
因此市面上出现了“个人语音助手”这样的应用,包括苹果公司的Siri,微软的“小娜”,百度小秘等等。使用这些应用我们只需要对着手机说出我们的需求,比如“下午3点提醒我开会”,“附近有什么好吃的”,语音助手就可以自动为我们设置提醒,搜寻附近符合条件的餐厅等等。一句话就能达到完成自己的需求,不在需要繁琐的手动操作,语音助手着实节省了人们的时间。
目前市面上可用的个人语音助手多是通过基于深度学习的人工智能技术实现的。其中包括语音识别系统,这个我们在上面的案例中已经说过。在将用户的语音转换为文字后,为用户提供服务的其实是一套叫做“任务驱动型聊天机器人”的系统。
这套“任务驱动型聊天机器人”系统往往是由多个模块的深度神经网络组合而实现的。其中可以包括用来识别用户意图(如找餐厅)的“意图神经网络”;用来理解语义,从而可以查询数据库的“语义理解网络”;还有最终用来回复用户信息的“自然语言生成网络”。
解放医生双手:语音电子病历
口腔科医生需要记录每个患者的病历情况。然而在诊疗过程中,医生在牙椅旁戴着手套双手被占用,不便对病历信息进行记录。如果诊疗结束后,再通过手写的方式补填病历,经常出现内容遗忘的情况。此外,手写病历常有文字潦草的情况,因有导致后续诊疗错误的风险。
基于语音识别和自然语言理解的语音电子病历可以解决这样的问题。在医生与患者的医疗过程中,使用麦克风,医生只要以口述的方式记录电子病历内容,完全不需要双手参与。
录音经过后台处理转化成文本,在医生工作站实时展现医患交流内容、自动生成结构化的电子病历。医生只需对电子病历内容进行简单修改确认,即可打印提供给患者,并完成电子档保存。
RNN+CTC 是常用的语音识别技术。CTC 全称 是Connectionist Temporal Classification,是一种改进的RNN模型。RNN模型可以用来对两个序列之间的关系进行建模。但是,传统的RNN,标注序列和输入的序列是一一对应的。语音识别中的序列建模问题不是这样:识别出的字符序列或者音素序列长度远小于输入的特征帧序列。所以不能直接用RNN来建模。CTC解决这一问题的方法是,在标注符号集中加一个空白符号blank,然后利用RNN进行标注,最后把blank符号和预测出的重复符号消除。比如有可能预测除了一个"--a-bb",就对应序列"ab"。这样就让RNN可以对长度小于输入序列的标注序列进行预测了。RNN的训练需要用到前向后向算法(Forward-backward algorithm),大概思路是,对于给定预测序列,比如“ab”,在各个字符间插入空白符号,建立起篱笆网络(Trellis),然后对将所有可能映射到给定预测的序列都穷举出来求和。
相关开源实现:
https://github.com/buriburisuri/speech-to-text-wavenet
https://github.com/inikdom/rnn-speech
https://github.com/shawnwun/NNDIAL
文本
文本理解
文本摘要总结理解
市场信息自动调研系统:Synapsify
Synapsify是来自美国的自动文本分析理解提供商。它可以用几个维度去解读文本内容,揭示文本的质量、平衡性、可信度和主要句子和含义。网站可以借助Synapsify这个分析系统来提供内容质量,而出版商可以用Synapsify来评估市场,政府还可以用Synapsify来进行网络舆情监控。Synapsify承诺,使用自己的专利文本分析和搜索技术,将为客户提供强大的能力去分析文字内容。Synapsify未来还打算引入声音分析,Synapsify自称将来通过一个人的日常语言,就可以分析出这个人的习惯、生活习惯和经历、比福尔摩斯还神奇。
相关开源实现:
https://github.com/facebookarchive/NAMAS
https://github.com/thomasmesnard/DeepMind-Teaching-Machines-to-Read-and-Comprehend
机器翻译
百度机器翻译
机器翻译是非常古老的人工智能问题,然而这个问题一度作为人工智能发展的瓶颈,一直不能达到理想的状态。
早期机器翻译采用“基于语言句法”的翻译方法,但是语言的变数是无限的,“基于语言句法”的方案一直无法达到理想的效果。
基于深度学习的“端到端”的模型在很大程度上解决了机器翻译的瓶颈。
“端到端”的模型将自然语言嵌入到一个语义空间中,人类使用不同种语言表达的语义相同的语句,在语义空间中具有相同或相似的坐标,只要对比语义空间中相同坐标的语句,即可完成相关的翻译。
相关开源实现:
PyOpenNMT: Open-Source Neural Machine Translation
https://github.com/OpenNMT/OpenNMT-py.git
彩云小译、有道翻译官
FAIR的开源序列到序列(sequence-to-sequence)引擎现在可以在PyTorch使用了。FAIR今天发布了fairseq-py,这是一个用PyTorch实现的卷积seq2seq模型。fairseq-py是语言翻译以及其他 seq2seq 的NLP任务的一个很好的模型,新的工具包比以前的更高效率:生成翻译的速度比以前的提高了80%,训练速度提高了50%。
开源的是一个PyTorch版本的fairseq。这个重新实现的原作者是Sergey Edunov,Myle Ott和Sam Gross。该工具包实现了 Convolutional Sequence to Sequence Learning(https://arxiv.org/abs/1705.03122)中描述的完全卷积模型(fully convolutional model),在单个机器上实现多GPU训练,并在CPU和GPU上实现快速 beam search 生成。我们提供英语到法语和英语到德语翻译的预训练模型