基于Faster RCNN和OneAPI的目标识别项目
bo lan
Wuhan, Hubei
- 0 Collaborators
本项目旨在使用PyTorch和OneAPI技术开发目标识别软件,实现从图片中识别出各个物品的名称和位置。 我们采用FastRCNN深度网络,使用其强大的灵活性和易用性进行模型构建。同时,成功拓展到intel平台上,还利用OneAPI套件中的数据并行技术(oneCCL)和模型优化加速技术(IPEX)加速识别过程,提高代码的运行效率。 ...learn more
Project status: Published/In Market
Intel Technologies
oneAPI
Overview / Usage
目标检测(Object Detection)就是从背景信息中检测、提取、分割出目标,对输入图像中的目标进行快速准确表达和精确定位,为目标信息的读取与理解奠定基础,为目标识别提供有力的数据资源支持。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
目标检测不管是在日常生活领域,交通领域,工商业领域还是医学领域中都有着重大的应用。例如人脸检测、行人检测、车辆检测、军事检测等诸多方面。本项目可以对十几种类别进行实体识别检测。
Methodology / Approach
基于深度学习的目标检测算法主要分为两类:Two stage和One stage。
其中Faster RCNN属于Tow Stage类:先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。
Faster RCNN模型主体分为特征提取网络、RPN、感兴趣区域池化(region of interest pooling,ROI Pooling)以及分类器几部分组成。特征提取网络一般选择VGG16,其通过一系列不同大小的卷积层提取输入图像中不同层级的语义信息,形成特征映射图。
如图所示,Faster RCNN检测部分主要可以分为四个模块:
** Faster RCNN检测部分示意图**
(1)conv layers特征提取网络,用于提取特征。通过一组conv+relu+pooling层来提取图像的feature maps,用于后续的RPN层和取proposal。
(2)RPN(Region Proposal Network)。即区域候选网络,该网络替代了之前RCNN版本的Selective Search,用于生成候选框。RPN网络相当于提前做了一部分检测,即判断是否有目标,以及修正anchor使框的更准一些。
(3)RoI Pooling。即兴趣域池化,用于收集RPN生成的proposals(每个框的坐标),并从(1)中的feature maps中提取出来,生成proposals feature maps送入后续全连接层继续做分类和回归。
(4)Classification and Regression。利用proposals feature maps计算出具体类别,同时再做一次bounding box regression获得检测框最终的精确位置。
-
基于成熟的FasterRCNN框架,对于数据集进行了一定的增强,例如对图像进行缩放旋转和一定遮挡等操作,同时将自己拍摄的图片使用labelImg进行标记处理作为训练数据,增强了模型的鲁棒性。
-
将基于pythorch框架搭建的模型移植到intel平台上,使用OneAPI中的套件对模型训练预测过程进行一定的优化。例如限制模型时间的优化器、SGD算法和影响数据读取速度的图像内存存储形式。
-
使用OneCCL将模型进行并行化,提升模型的运行效率和硬件平台的使用率。
Technologies Used
Intel Devcloud JupyterLab
linux:Linux version 5.4.0-80-generic (buildd@lcy01-amd64-030)
GCC:gcc version 9.3.0
Ubuntu:ubuntu1~20.04
Python:3.9.15
Pytorch:1.13.0a0
oneCCL Bindings:1.13.0+cpu
ipex_version:1.13.10+xpu