程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

作为一个程序员看万物角度都是“别出心裁”的,今天我们分析一下最近很火的《隐秘的角落》。觉得分析有理有据的话记得点赞支持关注一下,更好的想法记得评论去抢坐啊。

另外文末还有福利彩蛋的,废话不多说那就开始了。

本文内容主要集中在 12 集,朱朝阳、严良两人火海逃生后在天台上的对话:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

  • 严良:「告诉警察吧」
  • 朱朝阳:「像我爸希望的那样 」
  • 朱朝阳:「你想报警么」

这段对话其实被后期修改过了,口型和内容不吻合。至于「隐秘」剧组为什么要修改这段台词,我也是在还原了原对话之后才知道答案, 因为原对话实在过于黑暗了,坐实了朱朝阳的黑化,是不可能过审的。 那么原对话到底是什么?往下看,我用深度学习来告诉你答案。

用机器学习识别唇语,还原对话

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

这部分主要演示用机器学习的手段识别唇语,唇语识别就是靠分析人说话时嘴唇与面部的特征来解读人说话的内容。这里我并不介绍唇语识别模型的基础架构(篇幅太长,后面有机会单独讲),而是通过以识别张朝阳唇语为例,演示一下唇语识别的一个简单流程。

这个案例中的模型我选使用基于 Tensorflow 的 Facemash 模型进行二次训练。Facemash 的主要作用是获取面部表情的特征。之后通过分析嘴唇的运动特征,来预测出说话内容的汉语拼音的声母和韵母。(直接通过嘴型预测汉字难度太大,所以我要 先预测出拼音 ,之后再根据剧情+拼音还原出原对话)

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

第一步先通过 Facemash 拿到朱朝阳对话的面部特征,如图:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

这张「面膜」就是 Facemash 模型识别出来的特征点间的连接,下图是某一帧的面部识别数据:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

我们将一系列连续的数据展示在3D空间坐标轴下的话,就是一张对话中的的脸了。

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

拿到嘴唇和面部特征后,就要进行预测了,这部分我直接给大家展示动态流程图:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

利用这种方法,我还原了这句原台词汉语拼音的几种可能:

  • ni ba xiao ba chou me
  • ni ba xiang ba chou me
  • ...
  • ni bu xiang bao chou me
  • ... 这些拼音翻译过来是啥呢?我把每组拼音用输入法测试了一遍,发现 「ni bu xiang bao chou me」这句的结果与剧情最贴切:「你不想报仇么?」

把「你不想报仇么」带入对话,发现口型也对上了。bingo,这才是原台词呀:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

同样的方法,我又还原了几处原对话,如下: 严良:「那该怎么办」而不是「 告诉警察吧 」

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

朱朝阳:「除非让他被抓...」而不是「 像我爸希望的那样 」

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

朱朝阳:「你不想报仇么」而不是「 你想报警么 」

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

好了以上就是我用机器学习 + 剧情联想还原的天台对话。接下来我就要来解读剧情了,解读为什么这段对话会坐实朱朝阳的黑化,不能过审。

解读被修改的台词

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

国产剧的过审有两个最重要的原则: 1 不能出现悬案 2 坏人必须被绳之以法

知道了这个前提,我们再来审视一下被修改的台词。 全剧出现了三张内存卡,原卡最后给了张东升,空卡给了严良,而复制卡一直在朱朝阳手里。 也就是说 11 集大火之后,朱朝阳本可以将复制卡交给警察,从而将张东升绳之以法。但是这时候的朱朝阳并不敢报警,因为他并不知道普普是否将朱晶晶的真实死因告诉了严良,因此他不敢冒险。那么对于朱朝阳来说,此时此刻对于自己最有利的方案就是: 利用张东升的手杀死严良,然后再把复制卡交给警察,逮捕张东升。所以根据上面还原的台词,天台上的真实对话很可能是:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

严良问: 「那该怎么办?」 朱朝阳应该说了一个抓捕张东升的计划,这里由于被剪辑过,不知道剧情,还原难度比较大,但我还是还原了一句话: 「除非让他被抓...」 。根据还原的这句话,我认为 朱朝阳告诉严良的计划

应该是这样的: 1.朱朝阳把张东升约到船头 2.张东升与严良冲突 3.朱朝阳立刻报警当场抓住张东升犯罪事实**

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

然而这时候,严良对朱朝阳没有了之前的信任,因此对这个计划有些犹豫。 最后朱朝阳补刀:「你不想报仇么?」

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

最终善良的严良为替普普报仇,还是同意了这个计划。

以上就是我结合剧情大致还原的对话。朱朝阳的目的是借张东升的手杀死严良,利用这个计划借刀杀人,让严良送死的。 而朱朝阳内心 真实计划 我想是这样的:

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

1.引导张东升与严良见面发生冲突(自己并不报警,后面警察来了之后朱朝阳的表情是震惊的,因为并不是他报警的) 2.如果胜利回来的是严良,那么他就会乘其不备杀死严良(朱朝阳和严良学过打架),然后嫁祸给张东升 3.如果胜利回来的是张东升,那么他就会跳进大海逃生(朱朝阳一直在练习憋气),然后把复制卡交给警察

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

分析到这里,朱朝阳的内心的阴暗已经不忍直视。可能这也正是「隐秘」剧组原本想要呈现的坏小孩,就像原著小说「坏小孩」里说的那样**「在成年人眼里,小孩子永远是简单的。即使小孩会撒谎,那谎言也是马上能戳穿的,他们根本想象不到小孩子的诡计多端,哪怕他们自己也曾经当过小孩。」**

以上。

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

 

最后送正在Java还有Python这条路上填坑的伙伴们一波福利,平台原因没有办法直接发布,感兴趣的话可以直接扫描下方二维码添加一下公众号的VX就可以领取程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面

程序员眼里才能看到的那些《隐秘的角落》,细思极恐的画面