信息熵在游戏直播封面筛选上的应用

谢金运 2017-11-13 101 标签: 熵计算直播

导语: 日常生活中,我们经常会听到这样的语句:1、你说了等于没说,2、你说的信息量很大啊,我需要消化一下。很明显,这两个语句对信息量的大小做了度量,一个是你说的话信息量很小,一个是信息量很大。那么问题来了,我们该如何衡量一句话甚至是一张图片所带来的信息量的大小呢?

信息熵是什么

先看两个场景。

场景一:早餐时间,你在万利达二楼餐厅找座位时巧遇同事小李,坐下之后,小李一脸兴奋地跟你说:嘿,你知道吗?刘德华是男人。想必只有黑人问号能代表你此刻的心情!你心想:我去,这有什么好说的,我华仔必然是个男的啊!

场景二:午餐时间,为了不再遇到小李,你特地选择去腾大饭堂吃饭,很巧,你遇到了老同学小强,你们一起排队打饭,突然小强对你说:刘德华抛妻弃女,在记者招待会上宣布出柜了!此时你的第一反应应该是:不会吧,怎么可能!卧槽震惊!

两个场景相比,场景二中小强说的信息量明显比场景一中小李说的大,所以这里引出一个小结论:信息量的大小与事件的不确定性有关,如果一件事情必然发生,那么它的信息量就很小;如果一件事不可能发生而又发生了,带给人一种出乎意料的感觉,那么它的信息量就很大。

信息熵的定义是:如果一个事件发生的概率是,则其信息熵为

你可以验证一下:如果这件事发生的概率是1,则其信息熵,意思就是说了跟没说一样;如果这件事发生的概率无穷小,比如“中国队拿了世界杯冠军”,那么它的信息熵趋于无穷,你听到这个消息的时候心里就会有无数个“震惊”。

刚才所说的是针对一个事件的信息熵,那么如果是一个随机变量的话,信息熵描述的就是它的不确定程度,这就是为什么它叫做“熵”。针对一个随机变量的信息熵定义是,如果变量种可能取值,第种的发生概率为,则的熵为每种可能的信息熵的加权平均数(或者说是熵的期望),即

同时我们注意到,当所有有同等机会出现(即)的情况下,熵达到最大值(所有可能的事件同等概率时不确定性最高),相关证明见维基百科。

本文只对信息熵做简单的理解,更正式的介绍请自行谷歌。

初步了解了信息熵之后,我们是如何应用到直播截图中去的呢?

背景介绍

视频云有个截图模块,实时拉取各大直播厂商的rtmp流,以恒定间隔生成截图,并上传COS存储系统以备使用。大致架构如下:

用作直播的房间封面是截图的主要用途之一,以企鹅电竞为例,打开企鹅电竞首页可以看到大多主播房间都是以截图做为封面:

需求描述

某天,接到企鹅电竞投诉,封面出现异常截图,企鹅电竞的开发哥给我们列举了一些例子:

简单分析,以上三张截图的共同点是颜色单调,无具体直播内容,这样的封面会给主播和观众带来困扰,影响产品体验。企鹅电竞希望直播截图模块在截图时把该类图片进行标记,方便其过滤此类图片,避免作为主播房间封面。

解决方案

方案一:机器学习分类的方法,使用分类器学习区分哪张图片可以做封面,哪张图片不行。该方案较为复杂,而且需要大量标记好的负样本数据。解决问题时间紧迫,故暂时不考虑此方案。

方案二:这也是最简单的方法,统计截图中像素值的个数。例如纯绿图片的像素值个数为1,因为只有绿色,灰绿混合图片的像素值个数为2,具体实现就是把像素值个数小于等于2的图片过滤一下就可以避免这种封面出现。

该方案的缺点是对异常像素点非常敏感,一张图片中只要有一个像素值发生变化,那么这张图片的像素值个数就会发生改变,而一个像素值的变化并不会给图片造成整体属性的变化。

举例如下:

上图花屏导致图片拥有很多颜色,但是观众能从该图片获取的内容还是极少的。

方案三:本文的主角,使用信息熵。直观看以下两张图:

哪张图片给你带来的信息量更大?明显是图片A,而且图片A作为主播封面要比图片B作为封面更好,从而我们可以大胆假设结论是,信息熵的大小可以作为图片是否可以作为封面的度量。

刚才只是主观感受觉得图片A的信息量比图片B的信息量要大,下面我们用实验验证我们的主观感受是否正确。回看公式信息熵的公式,

对应截图的像素取值,代表像素值为的概率。本文使用python实现作为实例代码,实际直播截图模块使用C++实现,简单实现如下:

实验结果

从结果看到,实验结果是符合我们的预期的,图C到图H,按顺序看,信息熵越大的图片越合适做为直播房间封面。简单地,我们可以Entropy=1.5作为阈值,对小于该阈值的图片进行做标记,让业务方避免使用该类图片作为直播房间封面。

根据之前的结论:当所有有同等机会出现(即)的情况下,熵达到最大值。那么我们可以得出以下量化分析:

颜色个数为1时,=0

颜色个数为2时,0 <<= 1

颜色个数为3时,0 <<= 1.58

颜色个数为4时,0 <<= 2

颜色个数为5时,0 <<= 2.32

当颜色个数恒定时,每个颜色的像素个数越均匀值越大

当某个颜色的像素个数占绝大部分时,值越接近0。

举例,当颜色个数为4时,其值必定小于等于2;但当值小于等于2时,颜色个数可能会是5,甚至100,不过只会有少数颜色做为图片的主导颜色。

以信息熵作为评估度量有如下优点:

1.信息熵大小不受图片大小影响,使得不同大小的图片很容易进行信息熵对比;

2.信息熵大小对颜色个数不是特别敏感,不过受控与主导颜色个数的影响;

不足之处

以下这张图片的信息熵是多少呢?答案是7.8,比图H的信息熵还要大,但是这张图片对大众来说就是一张花屏照片,也不适合作为直播房间封面。

本文方法不适用于度量该张图片的底层原因是信息熵只透过概率去发现事件的信息量,而没办法理解当中的信息。

另外本文方法只适用于游戏直播封面的场景,并不适用于颜色单调的白/黑板教学直播封面的场景。

参考文献

信息熵是什么

熵 (信息论)