目录
5.2 阴影检测模块与街景检测模块实验设置
5.2.1 实验环境与工具
5.2.3 损失函数
5.2.4 实验具体流程
5.3 实验评估与对比
5.3.1 两类实验的评估标准
5.3.2 两类实验结果对比
阴影环境下街景目标检测系统的实现
6.1 系统概述
6.2 系统软硬件环境
6.3 功能模块设计
6.4 系统流程
6.5 系统设计与实现
6.5.1 系统核心模块的设计与实现
6.5.2 系统其他模块展示
本文篇幅较长,分为上中下三篇,文章索引详见
区域卷积网络在阴影环境目标检测上的研究与应用
区域卷积网络在阴影环境目标检测上的研究与应用(中)
区域卷积网络在阴影环境目标检测上的研究与应用(下)
5.2 阴影检测模块与街景检测模块实验设置
5.2.1 实验环境与工具
实验运行以
Ubuntu 16.04
操作系统作为平台,使用
Python3.6
语言编码,软件使用
Pytorch
、
Mxnet
作为深度学习框架,同时结合
Opencv
、
Matplotlib
、
Numpy
等工具包进行数据
处理与操作,硬件方面,训练流程基于一块
Nvidia Tesla P4
,预测与推断流程基于一块
Nvidia
GTX 960M
,本实验由两类子实验构成,包括阴影检测模块的实验与街景目标检测模块的实
验,在具体讨论处会分开阐述。
5.2.2
输入层和输出层设置
对于阴影检测模块,训练输入层使用固定的
512
×
512
×
3
图像输入,在将图像输入输入
层前,会对各数据进行随机裁剪即数据增广至
512
×
512
的尺寸,以便于直接输入模型。输出
层主要使用基于双线性插值的转置卷积层,用于将通过四个卷积模块的图像从缩小四倍的尺
寸还原至原图大小,以适应输出结果。
对于街景目标检测模块,训练输入层统一使用双线性插值将图片数据尺寸缩放至
512
×
256
,使用最近邻插值将标签缩放至同样尺寸,避免标签出现其它浮点数值,随后输入
Resnet
FPN
以进行特征提取操作。输出层分为边界框识别分支与
mask
掩膜分支,边界框识别分支
将特征图输入全连接层后,输出预测的类别与边界框的定位,
mask
掩膜分支输出
28
×
28
×80
的掩膜,最终模块将输出三个结果,再映射回原图,实现定位、检测与分割的功能。
5.2.3 损失函数
损失函数用于描绘模型的检测结果与实际标签间的距离,如何将损失函数计算出的损失
在不过拟合的情况下最小化,为模型训练的目标之一,针对本文涉及的两类实验,有不同的
损失函数定义。
对于阴影检测模块,观察阴影数据集,存在正负样本比例不平衡的情况,如下图
5.1
为具
有此类问题的一例训练集图像。
真实检测结果中,黑色像素代表背景信息,白色像素表示待检测阴影信息。本例中,白
色阴影像素在全局中所占比例较低。在完整的数据集中,普遍存在此类正负样本分布不平衡
的情况,经过综合分析,使用
Focal Loss
作为最终模型训练的损失函数,下式
5.1
表示
Focal
Loss
的具体定义[53]。
平均二值交叉熵在此普通二值交叉熵的基础上,使用
Sigmoid
激活函数对各像素进行逐
像素的计算,实现了对于类间竞争问题的避免与解决。
5.2.4 实验具体流程
如图
5.2
本实验包含两个子实验,总体实验的训练步骤由数据集的获取与使用、数据预
处理或类别修改、训练核心模型、调整参数至收敛和获取最终整体模型组成。在阴影检测模
块会将阴影数据集通过预处理与增广,输入基于
Resnet50
的并行残差卷积模块,使用
Focal
Loss
估计损失,训练约
500
步至收敛;在街景检测模块中,首先对于街景数据集
Cityscapes
进行类别的转换,从原始的
34
类转换至
5
类,输入
Mask R-CNN
网络进行训练,针对边界框
损失、分类损失和
mask
损失进行优化,直至网络训练约
400
步至收敛,得到可用的街景检测
模型。
5.3 实验评估与对比
5.3.1 两类实验的评估标准
通过对上述数据按照流程进行训练,最终输出结果会根据评估标准进行评估,以观察模
型的实际预测能力,针对阴影检测模型与街景目标检测模型,各自有不同的评估标准,下文
将给出具体的定义。
对于阴影检测模型,更加关注模型对于阴影的识别率与非阴影的误检率,为了对实验结
果进行分析与比较,采用与之前阴影检测模型相同的评价指标[14-15]
:阴影像素检测错误因子
SER
、非阴影像素检测错误因子
NER
、平均检测错误因子
BER
,定义如下式
5.6
、
5.7
和
5.8
:
别表示阴影像素总数和非阴影像素总数,错误因子越低代表模型的阴影检测精确率越高,像
素语义信息的分类越正确,最终评估标准能较好的反应检测错误的机率,评估模型是否具备
更好的检测效果。
对于街景目标检测模型,使用一定
IOU
条件下的平均精确率
Average Precision(mAP)
和平
均召回率
Average Recall(mAR)
作为评估指标,
IOU
指的是预测的编辑框区域与标签的边界框
区域之间的交并比
[54]
,用于考察预测与标签之间的差距,
IOU
参考范围设置
0.5:0.05:0.95
,其
中
0.5:0.05:0.95
表示从
0.5
到
0.95
按
0.05
为间隔划分的
10
个子区间,之后再对各区间的
IOU
精确率取均值,求得最终的评估指标,再根据目标大小评估大中小区域情况下不同的精确率
与召回率,达到控制变量对比分析的目的,其中小区域
(small)
代表标注定位框小于
32*32
,中
区域
(medium)
代表标注定位框小于
96*96
,大区域
(large)
代表标注定位框大于等于
96*96
。
5.3.2 两类实验结果对比
对于阴影检测网络结合评价标准,在
ubuntu16.04
、
Python3.6
、
mxnet-cu100
环境下搭建,
在一张
Tesla P4
显卡上训练并测试,处理一张图片平均耗时
0.031
秒,预计检测速度达到每
秒
32.2
帧,具备一定的高效实时检测能力。
本文阴影检测模块在
SBU
、
UCF
两种测试集上的具
体测试结果与常见同类型阴影检测模型的对比结果如表
5.1
和表
5.2
所示。
实验中,为了探究阴影检测模型各模块起到的作用,搭建了四个参照网络进行对比验证。
第一个网络为原始预训练的
Resnet50
网络,仅修改其最后的输出层;第二个网络为
Resnet50+CBAM
网络,在原始
Resnet50
网络的基础上在各残差卷积块间连接未改进的注意
力模块
CBAM
;第三个网络为
Resnet50+conv-CBAM
网络,在原始
Resnet50
网络的基础上在
各残差卷积块间连接改进后的注意力模块
conv-CBAM
;第四个网络为
Resnet50+Parallel
Block+conv-CBAM
网络,即对原始
Resnet50
各残差模块重组,采用前文所述的并行卷积设计
思路,组建并行卷积模块,且各模块间连接改进后的注意力机制模块,但各层输出结果不使
用密集连接相连。以上四类网络结构不同,并且复杂程度越来越高,与采用密集连接思路的
完整网络相互对比可分别验证注意力机制
CBAM
、改进后的注意力机制
conv-CBAM
、并行卷
积模块以及密集连接设计方法的作用。为保证验证实验的可信度,各模型训练采用相同的损
失函数、数据集与训练策略,并且对预测结果采用相同的评价指标进行评价,具体的各模块
探究实验结果如表
5.3
所示。
观察实验结果可知,本文提出的完整阴影检测模块评价指标均优于验证实验搭建的四类
参照网络,且这五种网络随着模型复杂程度的加深,评价指标数值总体上也逐渐降低,体现
了各模块设计的合理性,确保了本阴影检测模块的可信度。完整模块在
SBU
测试集上具备较
好的性能提升,在
UCF
数据集上
NER
与
BER
指标相较于其它同类阴影检测模型大幅度下
降。跨数据集验证的成功,证明了本模型具备可靠的泛化能力。且通过与
ST-CGAN
。
模型实验结果对比,证明了本模型在正负样本上的检测平衡能力,分类器不会因正负样本
数量比例的不平衡而导致分类结果的不平衡。
对于街景目标检测模块的实验结果,采用街景目标检测模块单一模块与结合阴影检测模
块的街景检测模块组成的完整阴影环境状态下的街景目标检测模型进行对比,以体现出阴影
检测模块在本文探究的复杂场景下的目标检测课题中的重要性,以及本街景目标检测模型的
整体可用性与鲁棒性,具体对比结果如下表
5.4
。
观察结果可知,结合阴影检测模块与街景检测模块的完整阴影场景下的街景检测模型基
本具备更高的精确率与召回率,这得益于其对于数据集中阴影场景做了额外的阴影检测处理,
使得模型在不同场景下、不同光照条件下具备更好的检测能力,因此最终本文提出的街景检
测系统将基于此模型及参数基准进行搭建,以实现更丰富的接口功能,如图
5.3
与
5.4
所示,
为具体的参数曲线,其中横轴代表训练迭代步数,纵轴代表具体百分比指标数值。
分析精确率与召回率曲线,可知两类参数都在 350 至
400
步时逐渐收敛,对比大中小三
类标注边界框区域下的召回率与精确率,随着边界框区域增大,模型识别的精确率与召回率
随之增大,模型检测能力更强,代表模型对于大尺度物体有着更好的识别能力,对于小于
32*32
尺度的物体识别能力稍弱。对比识别精确率与召回率,在任意定位框区域下,召回率
总体高于精确率,证明模型对于各类别识别程度较好,漏报情况较少,能定位并找出绝大部
分待预测物体,同时精确度也处于较好的水平,识别精度也有一定保障,基于两类指标,模
型总体符合街景检测需求,能够完成检测与定位任务。
阴影环境下街景目标检测系统的实现
6.1 系统概述
对于街景目标检测任务,使用者如驾驶员、交管部门或者保险公司往往需要一个实际可
用的系统来完成大部分功能,仅仅使用训练好的模型无法对事实与预测结果进行很好的展示,
也难以面向非技术开发人员提供可靠的交互能力。基于这样的需求,搭建本阴影环境下街景
目标检测系统,满足用户上传街景照片、上传街景视频、使用摄像头拍照并进行街景目标检
测预测的基本功能。
本街景检测系统使用上文阐述的实验中的两个模块模型,相互连接,为用户提供高效便
捷的一站式多功能街景检测平台,系统基于
C/S
架构进行开发,主要适用于
Windows
操作系
统,使用
PyQt5
框架开发图形化界面窗口,同时利用
Pytorch
与
Opencv
工具包完成图片操作
等具体细节功能,共分为三大开发任务,其一是实验训练模型层与业务层的连接接口,其二
是数据库持久层与业务层的驱动连接,其三是核心业务层的搭建、业务逻辑的开发以及其与
视图层的连接。模型层封装核心算法模型流程,包括各模块的组成、网络的定义,同时还负
责将训练参数导入模型模板,最终将直接可用的模块模型导出使用;视图层基于
PyQt5
开发,
负责功能界面以及控件的排列,提供可用的人机接口与按钮,同时负责将后台数据展现给用
户,暴露预测结果等信息;业务层负责处理视图层的反馈,处理用户需要处理的流程,同时
可以结合模型层与持久层,对数据进行操作,如图片的处理、数据的保存等,是整个系统后
台最为重要的核心;数据持久层基于
MySQL
数据库,主要用于封装数据库,实现数据库操
作,对相关重要信息进行操作与处理,图
6.1
为阴影环境下的街景检测系统的系统结构图。
6.2 系统软硬件环境
基于区域卷积网络的阴影环境下的街景目标检测系统运用
PyQt5
框架、
Pytorch
深度学
习框架等实现系统各个功能。系统环境约束如表
6.1
所示。
6.3 功能模块设计
基于区域卷积网络的阴影环境下的街景目标检测系统由以下几个功能模块组成。
(
1
) 模型参数加载模块:本模块主要调用模型层,任何系统使用者可以获取默认存储目
录下的已存在模型参数列表,且包含其具体训练参数,如最终评估参数、训练步数、
训练时间等,同时提供接口供系统注册用户使用额外的自定义模型参数文件。
(2) 登录模块:本模块负责提供用户一个接入程序的主入口,用户可注册成为新用户,
也可使用已有帐号登入系统,也可作为游客进入体验系统,游客与系统用户的区别
在于数据持久层会为用户分配空间存储部分历史系统预测结果,便于后续回顾,而
游客关闭程序或退出系统后,系统不会保留本次预测结果。
(3) 图片预测模块:本模块是视图层与用户的核心接入模块之一,交由用户自主上传本
地图片进行预测,同时当计算机接入互联网时,用户还可提供
url
连接上传网络图
片进行预测。
(4) 视频预测模块:用户可通过上传本地视频或提供网络视频
url
的方式,系统会对视
频进行解析,然后进行逐帧的检测,最终返回结果检测视频。
(5) 拍照预测模块:用户可使用外接摄像头或其它热插拔拍照设备进行拍照,系统会
直接调用这些设备成像,用户可按键盘规定按键进行拍照,之后再进行预测,也
可启用实时抓拍模式,自动化拍照预测,用户无需手动按键拍照。
(6) 存储与清除模块:本模块连接数据持久层,负责在用户登录的条件下对预测结果
自动保存,同时当用户察觉无需保存结果时,可使用清除缓存功能,一键清除本
次预测产生的结果文件。
6.4 系统流程
如图
6.3
所示,整个基于区域卷积网络的阴影环境下的街景目标检测系统在用户层面的
流程可大致分为
3
个部分:
第一,打开系统首页,选择模型参数,游客仅能使用系统默认提供的参数体验,系统注
册用户还可自定义上传其它位置的参数文件,之后选择登录角色,可根据预测结果数据保存
需求选择登录为系统用户或游客,也可通过注册成为系统用户。
第二,正式进入系统后,用户可通过点击不同的按钮,使用图片预测功能、视频预测功
能、拍照预测功能三大主要媒体预测方式。图片预测功能中用户可直接选择本地图片,也可
提供网络图片
url
供系统使用;视频预测功能中,用户需要上传本地视频或网络视频
url
的方
式提供系统视频源文件进行预测,且结果视频可直接进行播放、暂停等功能;拍照预测模块
中,系统会直接调用用户摄像设备进行抓拍,用户也可自己决定拍照时机进行拍照。
第三,预测结束后,用户可对预测结果进行操作,默认会保存所有的预测结果,用户也
可选择一键清空本次预测结果文件,同时提供历史结果查看接口用于回顾过去的预测结果,
若登入用户角色为游客,不会保存历史信息,同时也无历史信息查询权限,也不具备清除结
果文件的必要性。
6.5 系统设计与实现
本小节给出了基于区域卷积网络的阴影环境下的街景目标检测系统的模块展示与说明,
具体细分为核心功能模块与其它辅助模块,对于核心模块给出系统界面截图与具体功能介绍,
对于其它辅助模块,给出简要分析和部分说明。
6.5.1 系统核心模块的设计与实现
(
1
)系统主界面模块
本系统主界面提供部分核心功能的入口,类似于服务中心,用户可点击各类功能按钮,
实现相对应的核心功能,如下图
6.4
所示,系统主界面由若干按钮与中央展示域组成,各按钮
有文字说明表示功能去向,需要显示结果的功能会将结果处理后传入中央展示域,用户可以
直接实时观察到预测结果或中间结果。
系统主界面主要包含的功能入口有选择图片、选择视频、拍摄照片、开始预测、删除缓
存和历史信息,其中选择图片、选择视频和拍摄照片三个功能模组实现过程中都会调用中央
展示域,以展示图片和视频的原始预览文件,预测结果功能按钮点击后会对图片与视频进行
分析与预测,最终的预测结果也会传入中央展示域,给用户最直接的信息反馈,人机交互友
好。
(2)图片预测与视频预测模块
用户点击选择图片或选择视频按钮,会弹出提示子界面询问用户选择本地图片或视频还
是使用网络图片或视频,对于本地图片或视频,如图
6.5
,弹出选择框供用户选择本地图片或
视频,对于网络图片或视频,后台会去进行
url
链接校验,并判断是否可以下载,提示用户等
待系统完成操作,无论用户选择何种方式上传图片或视频,中央展示域都会对源文件进行展
示,状态栏也会显示当前源文件路径,以保证用户未选择错源文件,用户确认源文件信息后,
可点击开始预测按钮,随后系统提示等待,后台处理完数据并调用预训练模型预测完成后,
预测结果会直接覆盖中央展示域中的源文件,刷新中央展示域显示预测结果,同样便于展示,
用户可第一时间观察预测结果,完成需求,同时对于非游客用户系统会自动保存本次预测结
果。
(3)拍照预测模块
用户点击拍摄照片按钮即可使用手动拍照预测功能,会自动调用设备摄像头或外接摄像
头,并弹出目前摄像头捕捉到的画面,用户可观察画面,手动根据系统提示,按键决定时机
拍摄照片,下图
6.6
为拍照界面,拍摄完毕后,本次拍照结果也会传入中央展示域,用户可仔
细分析或观察,确定无误后,同样可点击开始预测按钮使系统后台开始预测,预测结果同样
在中央展示域展示。拍照预测功能还具备连拍模式供用户选择,拍摄照片下方用户可勾选连
拍模式的勾选框,激活右方文本框,用户可自行决定连拍的频率,连拍模式会在用户给定的
频率下自动调用摄像头连拍
9
张照片,拍摄完成后会将这
9
张照片组成九宫格形图片传入中
央展示域进行展示,用户确认无误后可点击开始预测按钮,系统会在后台对这 9
张图片进行
预测,最终预测结果同样以九宫格形于中央展示域展示,对于非游客用户,拍照预测的结果
也会自动进行保存。
6.5.2 系统其他模块展示
(
1
)登录模块
系统登陆界面主要负责系统后端模型参数的指定与用户身份和角色的确认,是整个系统
的第一个入口,如图
6.7
,首先会展示用户本系统当前版本默认后端参数及对应评估数值,包
括精确率、召回率、训练步数、损失值和参数发行时间等,此时登录角色可选择游客与已注
册用户,游客登录直接进入主界面且锁定当前参数,已注册用户输入账号密码进入系统且可
调用当前用户历史预测信息,在本界面用户还可自行上传参数文件,以实现更丰富的预测效
果,此功能仅支持已注册用户,游客用户无法自定义参数文件。
(2)历史信息模块
对于游客用户,本界面会被直接隐藏,对于已注册用户,如图
6.8
本界面会调用当前用户
在数据库中的数据,以列表的方式按文件名与预测时间列出,点击详细的一条记录,即可在
中央展示域展示该记录下的预测结果,点击放大按钮支持全屏展示结果,同时对于使用的后
端模型参数也会有相关描述,方便用户挖掘历史记录中的可用信息,同时用于与相同文件在
不同模型参数的预测结果进行比较与分析。