算法不是通用的,基于深度学习的应用系统不但做不到通用,即使对于同一类业务场景,还需要为每个场景做定制、特殊处理,这样才能有可能到达实用标准。这种局限性在计算机视觉领域的应用中表现得尤其突出,本文介绍基于深度学习的交通行业视频结构化类应用在实际使用场景中遇到的一些问题。计算机视觉处理的目标是图片,因此图片直接影响最终算法的效果,实际场景中碰到的问题基本都是由于各种原因导致视频图片发生变化最后影响系统的使用效果。

露天天气环境影响

由于天气变化、光照季节性变化等各种原因,视频画面经常出现干扰性噪声,直接影响到最终目标检测算法的准确性。大致分为以下几类:

(1)光照阴影。道路两旁树木、路牌等投影在路面上的阴影造成的误检。这种情况不是时刻都发生,受太阳光照射角度、强度影响。

(2)路面反光。路面不平偶尔出现反光偏暗的情况,被误检成抛洒物、车辆。这种情况不是时刻都发生,受太阳光照射角度影响。

(3)镜头光晕。受太阳逆光照射,镜头上产生光晕,最终会影响视频画面,产生各种误检。

(4)镜头雨点。下雨天气摄像机镜头沾雨水,最终会影响视频画面,产生各种误检。

(5)大雨大雾。碰到大雨大雾时,直接遮挡路面上的目标,影响检测效果,造成漏检。

(6)风吹导致镜头偏移。交通类视频结构化应用要求摄像机视角不能异常移动(程序控制除外),原因有两个,一是交通类应用需要测速、计数,这两个功能要求事先在视频画面中做一些描点配置,视角偏移会影响该项功能;二是交通类应用只需要检测路面上的目标(其他场景其实也只需要检测特定区域中的目标),如果摄像机偏移,非路面目标容易进入事先配置的检测区域,容易造成误报,比如路牌进入检测区域,容易误检成车辆。

受外在环境影响,算法的检出率大大降低,误报率上升,同时还会影响目标跟踪效果,因为目标的跟踪效果严重依赖于目标检测效果,如果目标锁定不稳定,跟踪就会很差,目标行为分析结果就很差。

——红色箭头处光影和地面箭头一起造成的误检——

外场缺少亮度照明

外场道路夜间没有灯光照明时,人眼分辨目标就比较困难,再加上车辆远光灯照射镜头,系统基本无法工作:

(1)夜间完全无灯光照明时,行驶车辆即使打开近光灯,算法检出率也不高,尤其当摄像机正对车头位置时(正对车尾效果还好)。

(2)夜间完全无灯光照明时,行驶车辆打开远光灯,当摄像机角度偏平(平视姿态),远光灯会直射镜头,画面完全无法分辨。

部分道路夜间有灯光照明时,系统工作效果非常好,几乎跟白天效果接近。目标检测的前提是目标轮廓清晰,如果由于灯光等原因,目标轮廓无法与环境有明显区分,那么系统效果非常差。

——夜间无灯光照明——

三维场景到二维画面的信息丢失

现实世界是三维的,视频画面是二维的,三维到二维的映射会造成一些场景信息的丢失,比如由于透视造成的坐标映射刻度不可知或者需要相当复杂的配置过程,这就导致在进行目标行为分析时会碰到非常多的困难:

(1)停车误检。道路尽头的大卡车由于行驶速度比较慢,车型体积又比较大,从二维画面中观察,人眼很难判断目标是否静止不动,行为分析算法逻辑同样会出现这种情况。

(2)车辆测速配置过程复杂。汽车在平面上匀速行驶,但是通过摄像机画面看到的目标并非如此,画面中观察到的结果是“远慢近快”,目标在画面中的“像素速度”与“实际物理速度”不能简单一一映射,需要复杂的配置过程。

检测区域配置复杂

如果需要进行目标行为分析,系统使用之前需要对每个场景(摄像机视角)进行单独的区域配置、参数标定,这个过程非常复杂,如果场景数目多,这个工作量非常大:

(1)人工标定检测区域。只有在检测区域内部的目标才会被处理,忽略其余检测目标。这样做的好处是可以避免一些误检,因为我们只对道路范围内的目标感兴趣。可以自动识别感兴趣区域,但是这个增加了复杂度,并且识别结果准确性不高。

(2)人工标定计数线和测速参照物。交通类应用需要测速和计数,由于二维画面透视成像的原因,需要事先标定各种参照物,这个工作量不仅大还不太好做,因为现实中可能没有合适的参照物给你去标。

这些事先的配置参数跟场景关联密切,一旦场景变化(比如摄像机转动导致画面变化)这些参数统统失效。

前端视频采集设备不可掌控

在算法、模型固定的前提下,系统准确性严重依赖于视频画面中目标的分布情况,如果前端摄像机安装位置不理想,太低或太高、拍摄距离太远、角度太偏横对道路行车方向等等,都不利于目标的检出率:

(1)摄像机安装太高、拍摄距离太远。就算在高清画面中(1920*1080),道路上的目标依然非常小,只有近处的车辆才能被算法准确检测到,远处的车辆要么不能被稳定锁定、要么不能识别出正确的车型或者其他属性。

(2)摄像机安装太低。车辆经过视频画面中的时间非常短,大车甚至完全将画面遮挡,导致其他目标无法被即使检测到。

(3)摄像机安装角度太偏。由于安装条件有限,大部分摄像机只能安装在道路两侧,车辆车身遮挡、绿化带遮挡,导致对向车道车辆经过时无法准确检测。

现实场景中大部分前端设备都已提前安装完毕,客户无法根据视频结构化的需求去调整前端视频采集设备,成本太高。

——摄像机角度太偏,对向车道被大车遮挡、绿化带遮挡——

摄像机人为干扰

前面提到过,摄像机角度偏移会造成各种问题,比如配置失效,误检增多、计数测速不准。监控类摄像机大部分都可以人为切换视角,焦距变化、云台变化等等:

(1)出现剐蹭等交通事件时监控员人为变焦。当出现交通事故导致车辆停止,行车道出现行人时,监控员通常会拉近镜头查看具体交通事件详细。

(2)出现拥堵等路况时监控员人为切换预置位。当出现拥堵等路况时,监控员移动云台摄像机360度移动查看拥堵程度。

现实场景中,出于各种原因,摄像机会被人为移动,导致事先配置参数失效、误检增加等问题,这时候需要及时通过视频画面发现场景变化、及时停止检测,等场景恢复之后再恢复检测,但是这种“偏移停检”的算法也做不到100%准确。

——监控员人为操控摄像机,场景变化——

[AI开发]视频结构化类应用的局限性的更多相关文章

  1. [AI开发]零代码分析视频结构化类应用结构设计

    视频结构化类应用涉及到的技术栈比较多,而且每种技术入门门槛都较高,比如视频接入存储.编解码.深度学习推理.rtmp流媒体等等.每个环节的水都非常深,单独拿出来可以写好几篇文章,如果没有个几年经验基本很 ...

  2. [AI开发]基于DeepStream的视频结构化解决方案

    视频结构化的定义 利用深度学习技术实时分析视频中有价值的内容,并输出结构化数据.相比数据库中每条结构化数据记录,视频.图片.音频等属于非结构化数据,计算机程序不能直接识别非结构化数据,因此需要先将这些 ...

  3. 视频结构化 AI 推理流程

    「视频结构化」是一种 AI 落地的工程化实现,目的是把 AI 模型推理流程能够一般化.它输入视频,输出结构化数据,将结果给到业务系统去形成某些行业的解决方案. 换个角度,如果你想用摄像头来实现某些智能 ...

  4. VP视频结构化框架

    完成多路视频并行接入.解码.多级推理.结构化数据分析.上报.编码推流等过程,插件式/pipe式编程风格,功能上类似英伟达的deepstream和华为的mxvision,但底层核心不依赖复杂难懂的gst ...

  5. VideoPipe可视化视频结构化框架开源了!

    完成多路视频并行接入.解码.多级推理.结构化数据分析.上报.编码推流等过程,插件式/pipe式编程风格,功能上类似英伟达的deepstream和华为的mxvision,但底层核心不依赖复杂难懂的gst ...

  6. .NET Core开发日志——结构化日志

    在.NET生态圈中,最早被广泛使用的日志库可能是派生自Java世界里的Apache log4net.而其后来者,莫过于NLog.Nlog与log4net相比,有一项较显著的优势,它支持结构化日志. 结 ...

  7. [AI开发]视频多目标跟踪高级版(离自动驾驶又‘近’了一点点)

    **本文恐怕不是完全的标题党** 视频多目标跟踪需要解决的关键点是前后两帧之间的Target Association,这是最难的环节(没有之一).第T帧检测到M个目标,第T+S(S>=1)帧检测 ...

  8. VideoPipe可视化视频结构化框架新增功能详解(2022-11-4)

    VideoPipe从国庆节上线源代码到现在经历过了一个月时间,期间吸引了若干小伙伴的参与,现将本阶段新增内容总结如下,有兴趣的朋友可以加微信拉群交流. 项目地址:https://github.com/ ...

  9. Deeplearning.ai课程笔记-结构化机器学习项目

    目录 一. 正交化 二. 指标 1. 单一数字评估指标 2. 优化指标.满足指标 三. 训练集.验证集.测试集 1. 数据集划分 2. 验证集.测试集分布 3. 验证集.测试集大小 四. 比较人类表现 ...

随机推荐

  1. Linux_Day001-002章常用命令

    Linux操作系统的组成 以下符号的意义. 输出重定向和输入重定向的知识点 echo 把后面的文字显示出来 xargs 分组, -n 分为n组  xargs -n 1.txt (完整命令:xargs ...

  2. Go语言标准库之fmt

    fmt标准库是我们在学习Go语言过程中接触最早最频繁的一个了,本文介绍了fmtb包的一些常用函数. fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输 ...

  3. http压力测试工具及使用说明

    http压力测试工具及使用说明 转 说明:介绍几款简单.易使用http压测工具,便于研发同学,压测服务,明确服务临界值,寻找服务瓶颈点. 压测时候可重点以下指标,关注并发用户数.TPS(每秒事务数量) ...

  4. 阿里雷卷:Reactive 基金会的成立将对开发方式带来哪些影响?

    作者 | 赵钰莹 近日,Linux 基金会宣布成立 Reactive 基金会.对于 Reactive,各位开发者应该并不陌生,尤其是 Node.js 开发者,但真正了解并意识到这件事情对开发方式带来的 ...

  5. FreeSql (三)实体特性

    主键(Primary Key) class Topic { [Column(IsPrimary = true)] public int Id { get; set; } } 约定: 当没有指明主键时, ...

  6. 4、链栈的实现(java代码)

    1.链节点 public class Node<T> { public T data; public Node next; } 2.实现代码 public class Stack<T ...

  7. Day 18 软件管理3之搭建网络仓库

    搭建一个网络仓库 服务端: 10.0.0.200   1.准备软件包( 1.光盘 2.缓存 3.联网下载 4.同步 ) 2.通过p共享软件包存放的目录 3.将光盘中的软件包都拷贝至p的共享目录下 4. ...

  8. 02:H.264学习笔记

    H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...

  9. 利用Jenkins实现项目自动化部署

    1.安装Jenkins,参考上一篇博客:安装Jenkins 安装Java 安装tomcat 安装maven 2.全局工具配置,填写好后点击save 3.安装git plugin插件

  10. [c++] 面试题之犄角旮旯 第壹章

    记录C/C++语言相关的问题. 算法可视化:https://visualgo.net/en <data structure and algorithm in c++> By Adam 有免 ...