《计算机视觉之PyTorch数字图像处理》----“目标检测与模型部署”的学习
[复制链接]
有了前面的学习积累,那什么是目标检测与模型部署呢?
简单来说,目标检测的目的不仅是在图像中发现对象,而且还要给出对象所在的位置。与前面介绍的分类和分割一样,深度学习在目标检测中也取得了突破性的进展。
在图像处理中,目标检测、图像分类和图像分割是其三大主力。同两个不同的是目标检测不仅要进行分类,而且还需要估计目标在图像中的位置,图1即使目标检测位置示意图。
它不仅识别了图像中的3个对像,而且还用矩形框对其进行了目标的框定。此外,目标检测中的分类处理在卷积神经网络中也已十分成熟,但目前同时预测目标分类和位置仍是一项挑战。
图1 目标检测位置示意图
经过多年的发展,目标检测的方法可划分为单阶段(One-Stage)和两阶段(Two-Stage),有锚框(Anchor Based)和无锚框(Anchor Free)等类型。不同的检测算法各有千秋,都包含了精妙的思想,并在一定时期都取得了成功,当然也还存在着某些不足。
以YOLOv5模型在螺丝螺母数据集上的测试为例,参见图2所示。其中(b),(c)和(d)中的螺丝和螺母均被正确的检出,特别是(d)中中间两个螺丝十分靠近也正确的得到检出,而(a)中也出现了相邻的两个螺丝没有被检出的情况。从结果可以看出,经过了20轮的训练,YOLOv5模型就已经能够很准确的检出螺丝和螺母。
图2 目标检测位置示意图
在实现了图像的分类、分割及目标检测后,将迎来最后的任务,那就是模型部署。
因为我们前面所做的任何工作,其目的都是为了应用,也就是要把所构建的模型集成到系统中。
除了PyTorch外,还要许多其它的深度学习框架,而多种框架间又各具特色,这就导致模型部署时的难度加大。
此外,深度学习模型的体型都较大,且包含与部署无关的内容,对其瘦身也将导致工作量的加大,再有就是部署环境所采用的编程语音也较为多样,需要适当予以适应。
长期原来 OpenCV被视为是最为经典且应用最为广泛的图像处理库,并提出了用于深度学习模型部署的DNN模块。受益于OpenCV在图像处理领域的深耕,DNN模块对于在无GPU环境中使用CPU进行模型的推理具有极优的性能。目前,DNN模块支持图像分类、分割、检测、文本识别、姿态估计、深度估计等各种深度学习模型。因此,当一个项目里需要经典图像处理和深度学习模型共同使用时,用OpenCV部署是最适宜的。
OpenVINO是Intel专门针对自家处理器和其他硬件平台,对各种深度学习模型进行优化和布署的一整套方案,见图3所示。
图3 OpenVINO功能示意图
至此,对《计算机视觉之PyTorch数字图像处理》的学习就先告一段落了,这是一本学习计算机视觉处理的好书,今后在实践中会对其加以尝试和体验。
|