深度学习了40万个表情,一大波AI 表情包来了


新智元报道

来源:Arxiv

编辑:闻菲

【新智元导读】深度学习生成表情包,笑不笑由你。

自从有了表情包,跟人聊天时的第一反应,就是去找找看有什么适合的表情。

有一类表情包,形式是文字+图,尤其能够精妙地抒发和传递感情。

在这一点上,可能全世界的网友都一样。

好用的表情永远不嫌多,而且似乎总是不够用。

怎么办?

好在我们有深度学习。

表情包,一个天然的图说生成问题

斯坦福大学的Abel L. Peirson V和E. Meltem Tolunayl,在这一期斯坦福深度学习自然语言处理课程CS224n的期末作业中,提交了一个表情包生成器,使用深度学习,制作“图片+文字”型的表情包。

下面这些都是他们的系统自动生成的结果。不得不说,深得表情包制作精髓。

这个表情包生成器的基本的框架是一个编码器-解码器图说生成系统,先进行CNN图像嵌入,然后用一个LSTM RNN进行文字生成。

其中,编码器的目标是要给出一个有意义的状态,让解码器开始进行文字生成。他们使用在ImageNet上预训练的Inception-v3做为编码器模型,并将最后一层隐藏CNN作为编码器的输出。当表情包模板进入Inception模型后,输出是一组长度固定的向量,也即图像嵌入,能够反映图像的内容。这个图像嵌入之后会被投射到词嵌入空间里,方便后续文字生成。

他们一共尝试了3种不同的编码器模型,最简单的一种只输入图像,另一种输入图像和标签,最后一种的输入也是图像和标签,但使用了注意力机制。至于解码器,都是一个单向LSTM。这样搭配组合成了3种编码器-解码器方案。下图展示了第二种方案的模型。

学习40万个表情,幽默程度媲美人类

数据集是这个表情包生成器的精髓。他们的数据集由大约40万张带标签和图说的图片组成。其中有2600个独特的图像-标签对,是他们写Python脚本从Memegenerator.net中获取的。一张图片对应一个标签,标签是对这幅图的简单描述,而每张图都与很多不同的图说(大约160个)相关联。

下图展示了数据的样本:

在训练前,他们还针对图说中的标点、格式和某些词出现的频率等进行了预处理。

训练的结果,深度学习生成了各种表情:

系统看过的图像(左边4张)的输入标签是来自训练集的标签,而对于没见过的图像(右边4张),我们使用的句子是“AI是新的电力”。

从语法、搞笑程度和可区分性(分辨是人制作的还是深度学习生成的)几个维度判断,深度学习表情包生成器取得了不错的效果。尤其是搞笑程度,因为这一点是制作表情包的初衷,普通表情包的搞笑程度7分(满分10分),深度学习生成的表情包最高达到了6.8。

两位作者指出,幽默是很难评判的事情,本身就是一个很深的研究领域。他们的这项工作十分基础,接下来如果能构建出能够自动断句的表情包生成器(就是自动判断图片上方和下方两行文字从哪里断开),将会是一个很大的进步。(因为使用的都是网络热图,因此数据含有性别歧视和不文明的成分。)此外,探索视觉注意力机制在表情包生成中的作用,也是一个不错的研究方向。

相关论文和代码

  1. Dank Learning: Generating Memes Using Deep Neural https://arxiv.org/pdf/1806.04510v1.pdf
  2. Github:https://github.com/alpv95/MemeProject

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2018-06-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2722
来自专栏DT乱“码”

简单的考勤系统

连接数据库类 package com.lianrui.it; import java.sql.Connection; import java.sql.Driv...

3399
来自专栏菩提树下的杨过

winform中linkLabel的用法(示例)

private void Form1_Load(object sender, EventArgs e)         {             this...

1905
来自专栏CreateAMind

文字描述生成视频的开源项目

Tensorflow implementation for the paper Attentive Semantic Video Generation usin...

1092
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2228
来自专栏C# 编程

C#使用DataSet类、DataTable类、DataRow类、OleDbConnection类、OleDbDataAdapter类编写简单数据库应用

//注意:请使用VS2010打开以下的源代码。 //源代码地址:http://pan.baidu.com/s/1j9WVR using System; usi...

2450
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5415
来自专栏葡萄城控件技术团队

Table-values parameter(TVP)系列之二: 利用DataTable将其作为参数传给SP

一,回顾         上一部分讲述了“在T-SQL中创建和使用TVP”,通过T-SQL建立如下的对象:         1)Tables ...

2049
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

22910
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2319

扫码关注云+社区