本文介绍如何将基于深度学习的目标检测算法应用到具体的项目开发中,体现深度学习技术在实际生产中的价值,算是AI算法的一个落地实现。本文算法部分可以参见前面几篇博客:

[AI开发]Python+Tensorflow打造自己的计算机视觉API服务

[AI开发]基于深度学习的视频多目标跟踪实现

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

[AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建

背景

交通领域是深度学习技术可以发挥强大作用的一个领域。道路交通的安全性要求比较高,道路监控设备比较完备,这些设备每天可以产生无数的视频数据,而这些数据非常有利于深度学习模型的训练。网上也可以下载到非常多的交通数据集,包括行人、车辆、道路两旁的基础设施比如路灯、信号灯、公交站牌等等。

如何利用交通监控设备产生的视频数据,来进行视频的自动分析呢?显然这是一个深度学习的应用场景。下面介绍,如何利用深度学习技术自动检测车辆交通事件,比如高速路上违规停车、逆行、闯入行人、占用应急车道等等事件。下面是最终的一个效果图:

对于一台主机设备,可同时实时检测8路高清监控视频,若有异常事件,会实时发出警告。

业务流程

整个系统构成非常简单,业务流程也相对简单。下面是两个主要的业务分支:

视频流分支

如上图所示,直接将跟踪得到的轨迹叠加到视频帧中,然后编码将其推到Nginx服务器中,供web播放器播放。

数据流分支

如上图所示,根据跟踪得到的轨迹,检测每辆车的交通事件,将其结果写入mysql数据库。另外一个服务模块定期统计数据,供web模块进行数据显示。

系统结构

服务器环境

1)centOS 7.5 (3.10.0内核);

2)Python 3.6 + tensorflow-gpu 1.9 + keras 2.2.2 + 各种python库;

3)CUDA 9.0 + CUDNN 7.1 + Nvidia显卡驱动384.130;

4)Tomcat + Mysql + Java;

5)i7 8核 + Nvidia GTX 1080显卡;

以上是服务器软硬件环境。

系统组成

下图是软件系统组成:

上图中最上部分是核心算法在整个系统中的位置。

模型训练

模型训练最主要的是要收集高质量、各种天气、各种视频角度、各种道路状况下的素材。下面是素材的一个简单分类,数量大约为10W+张。

按场景:

1)外场

2)隧道

按天气:

1)晴天

2)阴天

3)雨天

4)夜晚(红外)

按摄像机角度:

1)正前方

2)正后方

3)侧前方

4)侧后方

按目标类型:

1)行人

2)汽车

3)客车

4)货车

(高速摄像机一般安装太远,其他目标太小,因此不考虑其他目标)

按路况:

1)流畅

2)拥堵

3)严重拥堵

素材标注是个体力活,找个好用的标注工具可以事半功倍。自己写了一个标注工具,体验不是特别好,但是适合本项目素材的标注。相关连接参见这里:-------link--------------

事件类型/功能

由跟踪得到的轨迹,可以分别检测出道路面的异常事件,包括:

1)行人闯入事件

2)异常停车事件

3)逆行/倒车事件

4)占用应急车道事件

5)货车占用超车道

6)非机动车闯入事件

7)拥堵级别告警

8)车型计数

9)平均车速统计

本文没有源码,思路仅供参考。

[AI开发]将深度学习技术应用到实际项目的更多相关文章

  1. [AI开发]基于深度学习的视频多目标跟踪实现

    据我目前了解掌握,多目标跟踪大概有两种方式: Option1 基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪.这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出 ...

  2. AI面试必备/深度学习100问1-50题答案解析

    AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习   转载:https://blog.csdn.net ...

  3. Mol Cell Proteomics. | Prediction of LC-MS/MS properties of peptides from sequence by deep learning (通过深度学习技术根据肽段序列预测其LC-MS/MS谱特征) (解读人:梅占龙)

    通过深度学习技术根据肽段序列预测其LC-MS/MS谱特征 解读人:梅占龙  质谱平台 文献名:Prediction of LC-MS/MS properties of peptides from se ...

  4. 认识:人工智能AI 机器学习 ML 深度学习DL

    人工智能 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工智能是对人的意识. ...

  5. 【转载】如何自学深度学习技术,大神Yann LeCun亲授建议

    编者按:Quora 上有网友提问:自学机器学习技术,你有哪些建议?(What are your recommendations for self-studying machine learning), ...

  6. deeplearning.ai 神经网络和深度学习 week4 深层神经网络 听课笔记

    1. 计算深度神经网络的时候,尽量向量化数据,不要用for循环.唯一用for循环的地方是依次在每一层做计算. 2. 最常用的检查代码是否有错的方法是检查算法中矩阵的维度. 正向传播: 对于单个样本,第 ...

  7. 用深度学习技术FCN自动生成口红

    1 这个是什么?        基于全卷积神经网络(FCN)的自动生成口红Python程序. 图1 FCN生成口红的效果(注:此两张人脸图来自人脸公开数据库LFW) 2 怎么使用了?        首 ...

  8. deeplearning.ai 神经网络和深度学习 week4 深层神经网络

    1. 计算深度神经网络的时候,尽量向量化数据,不要用for循环.唯一用for循环的地方是依次在每一层做计算. 2. 最常用的检查代码是否有错的方法是检查算法中矩阵的维度. 正向传播: 对于单个样本,第 ...

  9. 【C/C++开发】值得学习的C语言开源项目

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

随机推荐

  1. 《嵌入式Linux内存使用与性能优化》笔记

    这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...

  2. util.go 源码阅读

        }     h := md5.New()     baseString, _ := json.Marshal(obj)     h.Write([]byte(baseString))      ...

  3. go语言nsq源码解读五 nsqlookupd源码registration_db.go

    本篇将讲解registration_db.go文件. 1234567891011121314151617181920212223242526272829303132333435363738394041 ...

  4. OpenCV-Python学习01

    import tensorflow as tf 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Tue Dec 31 19:16 ...

  5. 解决非root用户使用docker的办法

    通常我们使用Docker的时候都是使用的root,官方说法如下 The docker daemon binds to a Unix socket instead of a TCP port. By d ...

  6. 并发的核心:CAS 是什么?Java8是如何优化 CAS 的?

    大家可能都听说说 Java 中的并发包,如果想要读懂 Java 中的并发包,其核心就是要先读懂 CAS 机制,因为 CAS 可以说是并发包的底层实现原理. 今天就带大家读懂 CAS 是如何保证操作的原 ...

  7. GopherChina第二天小结

    GopherChina第二天小结 今天继续昨天的文章,参加了第二天的GopherChina,例行完成总结. 基于MINIO的对象存储方案在探探的实践 关于对象存储,之前用过seaweedfs,但是对M ...

  8. 哪些类继承了Collection接口

    Collection集合的基本结构:     1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和List, ...

  9. Bug的严重等级和优先级别与分类

    一. Bug的严重等级定义: 1. Blocker 即系统无法执行.崩溃或严重资源不足.应用模块无法启动或异常退出.无法测试.造成系统不稳定. 严重花屏 内存泄漏 用户数据丢失或破坏 系统崩溃/死机/ ...

  10. Jenkins配置从节点

    配置从节点步骤 在Master的站点上创建节点配置信息 在Slave访问Jenkins站点,然后下载运行服务Slave端必须安装Jdk 两种运行方式: windows 服务 运行jar包 成功后的节点 ...