用PaddlePaddle 实现目标检测任务——Paddle Fluid v1.1深度测评
|
关于PaddlePaddle计算描述的详情可以参考Fluid编程指南:http://www.paddlepaddle.org/documentation/docs/zh/1.1/beginners_guide/programming_guide/programming_guide.html 3.3PaddlePaddle的模型库简介PaddlePaddle的核心框架内置了非常多的经典模型和网络,涵盖了几乎所有主流的机器学习/深度学习任务,包括图像、语音、自然语言处理、推荐等诸多方面。因为本文是做目标检测,所以主要调研了一下图像方面的模型库,在此大致介绍一下。 3.3.1分类分类任务中的模型库是最全面的,AlexNet、VGG、GoogleNet、ResNet、Inception、MobileNet、Dual Path Network以及SE-ResNeXt,2012年以来的经典图像识别网络都包含其中,每个网络模型是一个独立的py文件,里面是这个网络模型的类,类里面公用的方法是net(),在调用时初始化对应的类之后调用.net()方法,就可以得到对应网络的Program描述,之后只需要给网络feed数据、定义损失函数、优化方法等就可以轻松使用了。分类模型作为图像任务的基础任务,在目标检测、语义分割等任务中都会重复利用这些模型,所以这样一个模型库可以为大大简化后续任务的开发工作。这部分的模型库里的写法比较统一,只要了解网络结构,用.net()方法调用就可以,这里就不一一介绍了,具体可以参考:https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/image_classification/models。 3.3.2目标检测SSD Single Shot MultiBox Detector (SSD) 是一种单阶段的目标检测器。与两阶段的检测方法不同,单阶段目标检测并不进行区域推荐,而是直接从特征图回归出目标的边界框和分类概率。SSD 运用了这种单阶段检测的思想,并且对其进行改进:在不同尺度的特征图上检测对应尺度的目标。如下图所示,SSD 在六个尺度的特征图上进行了不同层级的预测。每个层级由两个3x3卷积分别对目标类别和边界框偏移进行回归。因此对于每个类别,SSD 的六个层级一共会产生 38x38x4 + 19x19x6 + 10x10x6 + 5x5x6 + 3x3x4 + 1x1x4 = 8732 个检测结果。
SSD 目标检测模型 SSD 可以方便地插入到任何一种标准卷积网络中,比如 VGG、ResNet 或者 MobileNet,这些网络被称作检测器的基网络。PaddlePaddle里的SSD使用Google的MobileNet作为基网络。 目标检测模型库不同于分类模型库,PaddlePaddle是以一个工程的形式提供SSD的模型库。工程里面包含如下文件:
(编辑:PHP编程网 - 金华站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




