基于受众兴趣识别的智能广告展示系统设计
2018-10-08,,
,,
(浙江工业大学 信息工程学院,浙江 杭州 310023)
随着经济的高速发展,都市商业经济突显出越来越重要的作用,其中用来刺激消费者的商业广告也越来越被各消费品厂商所重视.根据调查显示,消费者对于商业广告这种推广方式还是喜闻乐见的[1].目前商业广告的投放形式还十分粗略,广告展示系统无法根据消费者的兴趣播放对应的广告,因此商业广告的播放只能对消费者提供一定的帮助,起到一定的提醒作用,并不能起到预期的效果.广告的最终目的是打动目标消费人群,如果消费者对于信息传递渠道的接受度很低,信息传递的效果就会大打折扣,那么创意再好的广告,也难以取得良好的效果.
在广告精准投放方面,李娜等[2]通过互联网获取用户视频节目观看日志,并以网上投递问卷的形式获取用户信息,再通过分析计算从而推送广告.该方法的局限性很大,必须通过互联网才能获取用户信息,只有累积到一定的数据才能进行预测.通过分析过去的用户信息来推断当下用户的喜好,并不具有针对性.同时由于互联网和大数据的发展,如今互联网广告的推送大多通过点击率或者大数据分析,来获取消费者的行为特征,从而实现广告的精准播放.然而,此类方法并不适用于传统的广告展示系统.在人脸检测方面,Jiang等[3]通过采用Faster R-CNN对人脸进行检测,与其他基于区域的CNN检测模型比较,该方法能通过共享网络权值实现端到端的直接检测,提高了人脸检测的精度和效率.基于此笔者提出了一种基于受众兴趣识别的智能广告展示系统,通过高清摄像头采集目标图片,使用预先训练好的模型对其进行检测.根据人物检测的概率值,分配不同权值进行分值的计算和归类,在已分类好的广告列表中匹配与目标人物最感兴趣的广告,从而实现广告的精准播放[4].
1 系统结构框图设计
系统的结构框图如图1所示,采用英伟达的Jetson TX1作为系统开发平台,该平台处理器包含256个英伟达CUDA核心的MaxwellTMPU、四核ARM®Cortex®-A57 MP core处理器和4GB LPDDR4显存,还具有HDMI,CSI和I2C等丰富的外设接口.
图1 智能广告展示系统结构框图Fig.1 Intelligent advertising display system block diagram
本系统主要分为采集模块、识别分类模块、视频广告匹配模块和播放模块4大模块.采集模块主要通过高清摄像头采集目标图片,用于人物对象的识别和分类;识别与分类模块主要实现对目标图片的识别和分类,其中包括目标图片的人脸识别、目标人数的统计、各人物性别和年龄的分类;视频广告匹配模块主要是根据最终分类结果计算最终分值,在已分类好的视频广告列表中进行匹配;视频播放模块主要任务是将匹配得到的广告加入播放列表,并在当前广告结束后进行播放.
2 智能广告展示系统软件设计
基于受众兴趣识别的智能广告展示系统,软件设计包括图像采集软件设计、图像识别分类软件设计、视频广告匹配软件设计和播放器软件设计.处理器主要加载ubuntu16.04操作系统,进行设备的初始化,采用共享内存方式实现进程间通信,进行任务调度.
软件设计的整体流程如图2所示,通过摄像头采集目标图片,对目标图片进行人脸检测并提取人脸图像信息.分别对人脸图像信息进行性别和年龄的识别,根据性别和年龄识别结果进行广告匹配并播放最终匹配的广告视频.
图2 软件设计整体流程图Fig.2 Flow chart of software design
2.1 图像采集软件设计
本系统采用OV5693摄像头,应用层基于Gstreamer,通过nvcamerasrc插件对摄像头进行调用.通过该插件修改摄像头的分辨率以及采集帧率,实现摄像头ISP的初始化.具体采集模块的软件架构如图3所示.
图3 采集模块软件架构图Fig.3 Structure diagram of acquisition module
软件通过创建CameraProvider对象并获取内核接口,根据摄像头的ID号,创建图像的输出流.对采集的图像帧进行JPEG编码,并保存采集图像信息[5].
2.2 识别分类软件设计
识别分类软件设计主要分为人脸的识别及人物性别和年龄识别.通过人脸识别可获取当前场景下目标人物数量,并保留人脸图像信息,再利用人脸图像信息分别进行年龄估计和性别的分类.
2.2.1 人脸识别算法
人脸识别是一个识别和分类的过程,从采集到的目标图片中识别并分类出人脸,确定其人脸的坐标位置.笔者采用Faster R-CNN[6]对人脸进行识别和分类,主要分为对候选对象区域进行深度全卷积的网络模块和对候选对象区域进行Fast R-CNN检测模块两大模块.采用RPN(Region proposal networks)在训练过程中提取proposal,再用Fast R-CNN进行分类,同时RPN和Fast R-CNN之间共享卷积层.RPN的总体损失函数定义为
(1)
向量和ground-truth box的坐标向量;Lcls,Lreg分别为分类损失函数和回归损失函数;Ncls,Nreg,λ分别为固定参数.
训练过程步骤如图4所示.用ImageNet模型初始化,训练一个RPN网络,并用RPN网络产生的proposal作为输入,训练一个Fast R-CNN[7]网络.使用Fast R-CNN网络参数初始化一个新的RPN网络.将RPN和Fast R-CNN共享的卷积层的学习率设置为0,重新训练,以保证2个网络共享所有公共的卷积层.固定共享网络层,并加入 Fast R-CNN特有的网络层,形成一个统一的网络,继续训练.微调 Fast R-CNN特有的网络层,使其实现预设的目标,即网络内部预测proposal并实现检测的功能.
图4 Faster R-CNN训练模型图Fig.4 Training model of Faster R-CNN
在人脸的具体识别过程中,通过训练得到预训练模型权值文件.接着加载该权值文件和Faster R-CNN网络模型文件,同时加载采集模块获取的目标图片,对图片进行识别分类,获取所有可能目标的位置和得分.根据算法设定相关阈值,若对应的得分大于设置的阈值,则认为该区域为人脸,反之则不是.并用cv2.rectangle函数将目标区域标识出来[8],同时存储人脸图片信息,用于年龄和性别的分类.
2.2.2 性别年龄分类算法软件设计
性别分类是一个二分类问题,即只需判别是男是女即可.对于年龄分类,由于本系统在实际过程中并不需要分类出精确的年龄,所以本分类算法把年龄分为多个年龄段,具体年龄段为{0~5,6~15,16~20,21~25,26~35,36~55,56~100}共7类.
本算法所设计卷积神经网络包含3个卷积层,2个全连接层和一个输出层[9],具体结构如图5所示.
图5 CNN训练模型图Fig.5 Training model of CNN
卷积层用于提取图像的特征feature map,每个卷积层都包含Relu(Rectified linear units)激活函数和Pooling层,其中Pooling层是为了减少运算量和数据维度.Relu函数定义为
f(x)=max(0,x)
(2)
卷积层1和卷积层2都含有LRN(Local response normalization)[10]层,可对输入图像的局部区域进行归一化,达到“侧抑制”的效果.紧接卷积层的是2个全连接层(Fully connected layers,FC)[11],其中dropout层能防止过拟合,全连接层在整个卷积神经网络中起到“分类器”的作用,将学到的“分布式特征表示”映射到样本标记空间.
对于软件的具体实现过程,加载预训练模型、网络结构文件和分类标签文件.读取Faster R-CNN算法识别出来的人脸图像信息,分别进行性别和年龄的识别.计算分类结果的各分值,取最大值作为分类的结果.再用cv2.putText函数在目标图片中标记对应目标人物的性别和年龄段.
2.3 视频广告匹配软件设计
该软件的设计主要是为了根据最终的分类结果以及结果所对应的概率进行最终分值的计算,从而去已分类好的视频广告节目中进行匹配.通过采集模块采集目标图片,使用Faster R-CNN算法对人脸进行识别分类.保留各目标的人脸图像信息,使用CNN算法对各人脸进行性别和年龄的识别并获得对应的概率.对象的分值计算式为
fi=f(Pg,Pa)
(3)
式中:fi为第i个对象计算所得的分值;Pg,Pa分别为CNN在对性别和年龄进行分类识别时所得到的概率值.
图6 分值计算流程图Fig.6 Flow chart of score calculation
2.4 播放器软件设计
播放器的设计是为了分类后根据不同的人群,实时播放适合该人群的广告.播放器除了能根据分类结果实时进行智能的广告切换外,操作人员也能对其进行操作,如暂停、开始、下一个广告和上一个广告等.由于该播放器能根据分类结果播放相应的广告,需要预先对存储在SD卡中的广告节目进行分类.
Gstreamer是一个创建媒体应用程序的框架,其主要用途是构建媒体播放器.Gstreamer是基于插件的,具有任何符合规范的插件都可以方便插入已定义好的数据流管道的优点.由此可以简化媒体播放器的开发流程,提高可移植性[13].因此系统使用Gstreamer框架来构建播放器,采用GTK+进行播放器的图形界面编程.
在软件实现过程中,通过读取广告视频节目信息,从平台提供的 Gstreamer 插件中选择需要的 Element,并创建Playbin.Playbin作为一个GstPipeline,能够自动支持管道的所有特性,包括错误处理、标签支持、状态处理、获取流位置信息以及查询等功能.连接各个 Element 构造出该播放器的Playbin,通过改变Playbin的状态对视频进行播放、暂停和停止等控制.播放管道示意图如图7所示,读取多媒体源文件,与分路模块进行连接,将媒体文件的音频和视频信息进行分离,分别连接到音视频接收器,从而完成视频的解码和输出[14].
图7 播放器的软件架构图Fig.7 Software architecture of the player
3 系统测试及应用情况
3.1 算法性能测试
模型的训练和测试采用的是WIDER FACE数据集,选取其中10 000张作为训练集,1 000张作为测试集.针对1 000张测试集选取其中8张测试结果图片为例,如图8所示.在算法识别过程中会在图片上对人脸的位置、性别和年龄进行标记.测试结果表明:人脸在无遮挡或轮廓清晰的情况下识别率较高,图8(g,h)分别出现人脸遮挡和轮廓模糊都会造成漏判和误判.
图8 识别分类算法测试结果Fig.8 Result of the identify classification algorithms
如图9所示,经1 000张测试集图片测试Faster R-CNN对人脸的识别精度为0.91,性别和年龄的识别精度分别为0.87和0.82.由图9可知:人脸的识别率相对较高,而性别和年龄方面往往容易出现错判和误判.
图9 识别精度图Fig.9 Accuracy of identify
据统计在人脸识别算法Faster R-CNN上对每张图片的识别时间一般在2.3~3.5 s,平均用时为2.8 s;性别识别算法CNN识别的时间一般在0.224~0.614 ms,平均用时为0.39 ms;年龄识别算法CNN识别的时间一般在16.9~46.0 ms,平均用时为25.8 ms.算法性能信息见表1.
表1 算法性能Table 1 The algorithm performance
3.2 功能测试
图10为播放器操作界面.中间部分为视频广告区域,底部可通过play,pause,stop和next按键对播放器进行操作,同时可拖动底部的进度条拖动视频,右侧中间则显示识别分类后的目标图片,以提高人机交互.
1—播放;2—暂停;3—停止;4—下一视频;5—广告进度条;6—识别结果显示区图10 播放器操作界面Fig.10 Operation interface of player
本系统在实验室通过摄像头采集当前场景图片,对其进行功能测试,测试效果如图11所示.图11 (a)所示根据算法识别分类为21~25岁的男性,进行广告匹配后播放与男性洗面奶相关的广告;图11 (b)所示根据算法识别分类为6~15岁的小女孩,进行广告匹配后播放与儿童玩具相关的广告;图11 (c)所示根据算法识别分类为21~25岁的女性,进行广告匹配后播放与女性化妆品相关的广告.实验证明:在具体实现过程中,播放器可根据广告匹配结果在当前广告播放结束后及时播放匹配广告.
图11 系统测试效果图Fig.11 The test result of system
4 结 论
广告展示系统在楼宇、商场、公交和超市等场合应用广泛,但却未取得其真正的经济效益.笔者设计了一种基于受众兴趣识别的智能广告展示系统,采用英伟达Jetson TX1视觉计算开发平台,先后介绍该系统的硬件结构和软件架构,提出了基于深度学习的Faster R-CNN人脸识别算法和基于CNN的性别及年龄识别算法,在训练过程计算识别分类精度,并在实际测试过程中获取算法运行的时间.实验结果表明本系统能够较好地实现广告的精准播放.但是,算法在性别和年龄的识别过程中存在误判和错判,识别精度还不能满足实际的应用场合.为此,后续会对算法模型进行改进,提高识别分类的精度,同时对算法进行优化以缩短人脸识别的时间.