背景故事

2018 年,当时我在工厂实习,我开始研究目标检测技术,因为我需要解决视觉检测问题。 这个问题需要在来自工业相机的图像流中检测许多不同的物体目标。

为了应对这一挑战,我首先尝试将分类与滑窗法结合使用。 自然,该系统非常缓慢且不适合生产。

在此之后,我开始研究执行目标检测的端到端深度学习模型。偶然间,我发现了一篇来自Gooogle研究的著名论文,题为:Speed/accuracy trade-offs for modern convolutional object detectors.

这篇论文对我产生了很大的影响,也是我对使用深度学习的对目标检测领域所需要的经验介绍。

目标检测是一项古老的任务,深度学习给它带来了什么?

现在,目标检测是计算机视觉领域中相对古老的任务。在深度学习成为主流之前,许多研究人员和工程师都在研究这个问题。 他们主要使用经典的图像处理技术,可能经常使用滑窗法。 那么深度学习对目标检测的附加价值是什么?

实际上,深度学习从根本上改变了我们处理目标检测的方式。随着 YOLO 和 R-CNN 系列的引入,目标检测的性能显著提高。大多数用于图像相关任务的神经网络使用卷积层。这些神经网络称为 CNN(卷积神经网络)。 这些 CNN 实际上自然而有效地执行了一种滑窗法。 这是神经网络如何学习图像表征的一部分。

目标检测技术的研究现状

在我写这篇文章的时候,谈论最多的目标检测模型是 YOLOR(You Only Learn One Representation)。设计该模型架构的研究人员正在寻找整合“隐性知识”的方法。这种隐性知识应该代表神经网络中的潜意识。作者想要构建一个架构,模仿我们人类在现实生活中解决目标检测任务的方式。这种架构可能是未来工作的基础,它集成了这种隐式知识的概念,不仅用于目标检测,还用于各种计算机视觉任务。

还有另一种架构可以成为许多未来工作的基础,那就是 DETR 架构。 DETR 代表检测变压器。

Transformer 是一种新型的神经层,它们正在与卷积层竞争多种计算机视觉任务。

Transformers 已经在 NLP(自然语言处理)任务中取得了不错的成绩,并且正在稳步进入计算机视觉任务。

目标检测技术的行业现状

在过去的几年里,我一直担任机器学习工程师,专注于计算机视觉应用。通过在该领域工作以及对需要机器学习和计算机视觉知识的职位进行多次面试,我实际上注意到了行业中目标检测的一些趋势。

如果你在该行业工作,那么肯定知道,对于同一任务,一项任务最重要的指标可能与研究中使用的指标大不相同!

在目标检测任务的情况下,同样适用。据我所知,在工业设置中实施目标检测模型时,有 2 个指标是最重要的:速度和稳健性。并非总是两者兼而有之,但总是至少存在两者之一。

由于这些原因,YOLO(v3,v4,v5)和Faster-RCNN在业界得到了广泛的应用。通常,当速度是第一要务时,则使用 YOLO,当鲁棒性是第一要务时,则使用 Faster-RCNN。

我个人均使用过 YOLOv3、SSD 和 Faster-RCNN。

尽管许多在该行业工作的人直接使用 YOLO——我猜是因为它比较有名——但我不认为它是一种万能的解决方案。

在推理速度方面,YOLO 和 SSD 都显示出巨大的潜力。但在某些情况下,它们可能仍然会失败,尤其是在行业实践中。

我记得有一次尝试使用带有 InceptionV2 后端的 SSD 来执行困难的目标检测任务。这是一项目视检查任务,我们需要检测大型发动机(飞机或直升机,我不记得了)内部的机械部件。无论我如何调整我的神经网络的参数,我都无法减少损失,它一直在振荡。

我之前使用过相同的架构,使用相同的主干,来执行其他一些目标检测任务,效果很好。因此,当我完成这项绝对更具挑战性的任务时,SSD 失败了。因为引擎看起来非常庞大,而且因为有这么多零件连接在一起,而且其中许多零件看起来非常相似。即使是人眼,也很难发现我们想要检测的特定机械部件!由此可见,注释我们的数据集有多困难。

此时,我记得我认为这只是深度学习的极限。但在完全放弃之前,我决定尝试不同的架构,并尽量避免使用 YOLO 和 SSD 等单级检测器。

我选择了 Faster-RCNN,因为它是一个两阶段的对象检测模型。结果,这个模型效果非常好!损失函数的收敛比保龄球还平滑。因此切记:下次在处理目标检测任务时,请在下定决心之前尝试几种不同的架构!

需要云计算以提高目标检测任务的性能

在训练深度学习模型,尤其是大型模型时,需要一些非常好的设备。在训练方面,GPU 可能是深度学习机器最重要的方面。很多公司购买这些设备,但也有不少公司选择云计算服务。

Google Cloud Platform (GCP)、Amazon Web Services (AWS) 和 Microsoft Azure 是一些广泛使用的云计算服务。

对于目标检测和大型模型(如 Faster-RCNN),这些云计算解决方案可能正是你正在寻找的训练模型的方法。但是应该怎么选择呢?

对于许多公司来说,他们已经在上述云提供商之一上建立了云基础设施,因此他们可能只想继续使用同一提供商来保持标准化。

当然,还有多种方法可以训练你的目标检测模型,稍后我将详细介绍一些开源工具。但是,如果你正在使用 Tensorflow(1 或 2),那么你使用的是 Tensorflow 目标检测 API。那么我建议你 Google Cloud 是比较好的选择。

由于 Tensorflow 是Google 的产品,而且目标检测 API 也属于Google ,Google Cloud团队让在 GCP 上训练模型变得非常容易。

具体来说,用于训练目标检测模型,有两个:AI Platform 和 Vertex AI。

用于执行目标检测任务的深度学习开源工具

使用深度学习进行目标检测,主要有三种广泛使用的工具:

  • Tensorflow Object Detection API
  • Detectron2
  • MMDetection

如果是 Tensorflow 开发人员,那么 Tensorflow 目标检测 API 最适合你。 如果是 PyTorch 开发人员,那么 Detectron2 和 MMDetection 更适合你。

如果开发者更关心选择的多样性,那么 MMDetection 是最佳选择,因为它拥有大量目标检测深度学习模型。

总结

总而言之,以下是本文的要点:

  • 目标检测在计算机视觉中是一项相对较旧的任务,但深度学习已经大幅提升了目标检测任务的性能。
  • 当涉及到用于目标检测的深度学习时,研究中推动的指标可能不一定与行业中推动的指标相同。
  • 云计算可以成为深度学习模型训练性能的主要助推器,请明智地选择云服务提供商。
  • 使用深度学习进行目标检测有多种开源工具,主要的三个是:Tensorflow Object Detection API、Detectron2 和 MMDetection。

目标检测技术的安防场景示例:

TSINGSEE青犀视频基于多年视频领域的技术经验积累,在人工智能技术+视频领域,也不断研发,将AI检测、智能识别技术融合到各个视频应用场景中,如:安防监控、视频中的人脸检测、人流量统计、危险行为(攀高、摔倒、推搡等)检测识别等。典型的示例如EasyCVR视频融合云服务,具有AI人脸识别、车牌识别、语音对讲、云台控制、声光告警、监控视频分析与数据汇总的能力。

国外AI工程师讲述:深度学习与目标检测,理论和实践果然两码事相关推荐

  1. AI综述专栏 | 基于深度学习的目标检测算法综述

    https://www.toutiao.com/a6685618909275488780/ 2019-04-30 17:35:53 关注微信公众号:人工智能前沿讲习, 重磅干货,第一时间送达 AI综述 ...

  2. autoware使用相机和深度学习进行目标检测(六)

    autoware使用相机和深度学习进行目标检测(六) 安装yolo 进入对应的vision_darknet_detect/darknet/data/目录下 对应目录位置: autoware.ai/in ...

  3. 独家总结| 基于深度学习的目标检测详解

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯                                                基于深度学习的目标检测 基于深度学习的目 ...

  4. 深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法

    深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法 摘要 一.神经元 二.前馈网络 2.1 Delta学习规则 2.2 目标函数J(w) 三.误差反向传播算法(BP算法 ...

  5. 深度学习之目标检测(九)--YOLOv3 SPP理论介绍

    深度学习之目标检测(九)-- YOLOv3 SPP理论介绍 深度学习之目标检测(九)YOLOv3 SPP理论介绍 1. Mosaic 图像增强 2. SPP 模块 3. CIoU Loss 3.1 I ...

  6. 深度学习之目标检测综述

      这里是自己这几天读过的几篇论文的笔记,美其名曰为"综述".   当年AlexNet 掀起 CNN 网络热潮,深度学习也逐渐被应用到目标检测(object detection)中 ...

  7. 深度学习之目标检测与目标识别

    一 目标识别分类及应用场景 目前可以将现有的基于深度学习的目标检测与识别算法大致分为以下三大类: ① 基于区域建议的目标检测与识别算法,如R-CNN, Fast-R-CNN, Faster-R-CNN ...

  8. 中科院陈智能:计算机视觉经典——深度学习与目标检测

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  9. C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码

    一.目标识别技术概述 1.摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例.深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标 ...

最新文章

  1. mysql sql 事务写作_mysql中的事务
  2. 使用Eclipse更新软件时出现Unable to locate secure storage module错误的解决方法
  3. Windows7 apache启动失败的解决方法
  4. 吴晓灵:尽快制定“个人信息保护法”
  5. Spring 的优秀工具类盘点---转
  6. WPF实例秀——不用属性也Binding
  7. 2019写给对象的话_恋爱中写给对象看的说说 2019最流行的情侣间情话
  8. Linux驱动段错误,linux驱动调试--段错误之oops信息分析
  9. Atitit NER实体命名识别(Name Entity Recognition 目录 1.1. a. NER实体命名识别(Name Entity Recognition)   1 2. NER抽
  10. 配置管理计划的新设想
  11. 【C++】万年历程序
  12. C语言如何实现寻找峰值函数,findpeaks 寻找峰值函数
  13. 文献阅读-GNC----IEEE Robotics and Automation Letters (RA-L), 2020.
  14. 【转载】WPS通过设置密码的方式对Excel文件加密
  15. 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
  16. Squeeze-and-Attention Networks for Semantic Segmentation解读
  17. Educational Codeforces Round 69 (Rated for Div. 2) D. Yet Another Subarray Problem(dp 最大子区间)
  18. EMQX安装、处理安装遇到的问题
  19. bulk这个词的用法_bulk
  20. 如何用python获取美股财报日历

热门文章

  1. Batch Normalization原理
  2. 基于SPSS的经典统计学分析与偏度峰度等常用统计学指标计算
  3. 郭天祥单片机视频教学习题答案(一)
  4. 青创智通——GET!常见测量工具的使用方法分享
  5. 关于pytorch安装之后但是没有办法导入pycharm的原因
  6. c语言 vc 单步调试方法,VC6断点调试技巧
  7. URL - 统一资源定位器
  8. IP地址、子网掩码、192.168.1.0/24是什么意思 -子网 -网络 -广播地址 -主机地址
  9. 双非计算机考研可以调剂的学校,考研调剂时别盲目选择名校!最好的调剂院校其实是你的本科院校!...
  10. ar模型python,statsmodels中的AR模型