一、整体方案:
思路:整合百度AI功能,通过百度AI解决、优化在公交运行过程中遇到的运营、管理、安全等方面的问题。具体如下:

安全方面:
通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警。 
通过人流量统计对车内人数进行跟踪,在人数过多的时候告警。
通过危险行为识别功能对驾驶室及车辆内部的危险行为进行识别,提出警告。并上传后台系统,启动安全预案,将危险控制在萌芽状态。

经营方面:
通过车内和车站人流量识别,判断车内乘客数量上传后台系统,对车辆调度计划进行优化。

整体方案如图所示:

二、相关功能介绍:
人流量统计
统计图像中的人体个数和流动趋势,以头肩为主要识别目标统计人数,无需正脸、全身照,适应人群密集、各种出入口场景,包括:
静态人流量统计:适用于3米以上的中远距离俯拍,以头部为识别目标统计图片中的瞬时人数;无人数上限,广泛适用于机场、车站、商场、展会、景区等人群密集场所
动态人流量统计:面向门店、通道等出入口场景,以头肩为识别目标,进行人体检测和追踪,根据目标轨迹判断进出区域方向,实现动态人数统计,返回区域进出人数
详细说明见:
https://ai.baidu.com/tech/body/num

驾驶行为分析:
针对车载场景,识别驾驶员使用手机、抽烟、不系安全带、双手离开方向盘等动作姿态,分析预警危险驾驶行为,提升行车安全性。可以针对出租车、客车、公交车、货车等各类营运车辆,实时监控车内情况,识别驾驶员抽烟、使用手机、未系安全带等危险行为,及时预警,降低事故发生率,保障人身财产安全
详细说明见:
https://ai.baidu.com/tech/body/driver

危险行为识别:
针对5s内的监控视频片段,识别行为类别,目前支持7类行为:单人-情绪性指人、单人-摔倒、单人-激烈抱怨、单人-砸东西、单人-正常、双人-危险(包含出拳/拉扯/推搡/激烈搂抱/砸按/踢踹等)、双人-正常。
详细说明见:
https://ai.baidu.com/tech/body/danger
文档:https://ai.baidu.com/docs#/Body-API/19f2f5e1
请求URL:https://aip.baidubce.com/rest/2.0/video-classify/v1/body_danger

三、关键调用代码(Python3)

#驾驶行为识别:
import urllib
import base64
import json
import time #client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id = 'XXXXXXXX'
client_secret = 'XXXXXXXXX' #获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content)
token_key = token_info['access_token']
return token_key #驾驶行为识别
def driver_behavior(filename):
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior"
print(filename)
# 二进制方式打开图片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read()) params = dict()
params['image'] = img
params = urllib.parse.urlencode(params).encode("utf-8") access_token = get_token()
begin = time.perf_counter()
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
end = time.perf_counter() print('处理时长:'+'%.2f'%(end-begin)+'秒') if content:
content=content.decode('utf-8')
data = json.loads(content)
print('人数:',data['person_num'])
persons=data['person_info']
print (persons) #人流量统计
def body_num(filename):
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_num" # 二进制方式打开图片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read()) params = dict()
params['image'] = img
params['show'] = 'true'
params = urllib.parse.urlencode(params).encode("utf-8")
#params = json.dumps(params).encode('utf-8') access_token = get_token()
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
person_num=0
if content:
#print(content)
content=content.decode('utf-8')
#print(content)
data = json.loads(content)
#print(data)
person_num=data['person_num']
print ('person_num',person_num)
return person_num
#危险行为识别
#filename:原图片名(本地存储包括路径)
def body_danger(filename):
request_url = "https://aip.baidubce.com/rest/2.0/video-classify/v1/body_danger" # 二进制方式打开图片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read()) params = dict()
params['data'] = img
params = urllib.parse.urlencode(params).encode("utf-8")
#params = json.dumps(params).encode('utf-8') access_token = get_token()
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
if content:
#print(content)
content=content.decode('utf-8')
#print(content)
data = json.loads(content)
print(data)
for item in data['result']:
print ('行为:',item['name'])
print ('分数:',item['score'])

四、相关功能测试:

4.1 安全管理

(一)首先是驾驶行为分析,针对驾驶员的抽烟,打手机等不规范行为:

人数: 1
使用手机: 0.10
抽烟: 0.40
未系安全带: 0.81
双手离开方向盘: 0.24
视角未看前方: 0.16
警告:未系安全带

人数: 1
使用手机: 0.95
抽烟: 0.01 
未系安全带: 0.80
双手离开方向盘: 0.95 
视角未看前方: 0.98
警告:使用手机 未系安全带 双手离开方向盘 视角未看前方

(二)然后是针对驾驶室的危险行为,尤其是针对驾驶员的各种危险行为。这里以前一段时间的重庆万州的公交事故的驾驶室监控视频为例。因为社区不支持视频,所以使用图片示意。

大家可以通过微博地址查看视频:http://t.cn/EwM3WqQ

识别的速度很快,识别的内容如下:

行为: 双人-危险
分数: 0.954391598701477

可以发现,百度AI快速的识别了危险行为,而且危险分数很高。在系统的支持下,在自动报警的同时,通过语音合成技术大声语音警告:“对公共车辆驾驶员的暴力行为是违法的,为了所有人的安全请立刻停止!!!”

4.2 运营管理

对车辆内部及车站人数的统计,进而对车辆调度进行优化,同时也可以防止车辆过于拥挤产生踩踏事故。例如对下图的识别。

人数:6,未超过最大载荷。车内安全。

车站人数:8,很准确(右上角有一个穿白衣服人的背影)

结合车辆人的数量和车站人的数量就可以进行科学调度,对于这个例子来说,可以适当增加下一辆公交的发车时间了。

五、测试结论及展望:
通过对百度AI功能进行测试,发现识别的效果都很好。百度AI能快速、准确的识别各种风险,对人数的统计也非常的准确。针对现在公共出行的安全和管理的痛点进行了很好的解决,现在可以直接落地的技术包括:

安全方面:通过驾驶员检测+语音合成,对驾驶员状态进行实时检测,跟踪,告警;通过人流量统计对车内人数进行跟踪,在人数过多的时候告警;通过危险行为识别功能对驾驶室及车辆内部的危险行为进行识别,提出警告。并上传后台系统,启动安全预案,将危险控制在萌芽状态。

经营方面:通过车内和车站人流量识别,判断车内乘客数量上传后台系统,对车辆调度计划进行优化。

再配套开发对应的管理平台等平台结合起来就可以形成一整套的公交安全运营解决方案,对于提高公交运营的安全性和运营效率会有非常的的帮助。结合百度云技术、AI技术与开发平台,实现端云结合,让应用快速落地。在结合未来的全自动AI驾驶,百度城市大脑,相信公共出行会越来越安全、便捷。

作者:worddict

综合5项百度大脑AI技术,快速构建智能交通方案的更多相关文章

  1. 如何快速将百度大脑AI技术内置智能小程序中

    实现效果: 该AI智能小程序目前集成了百度AI开放平台数十个AI服务产品功能,包括人脸识别.文字识别.表格识别.红酒识别.货币识别.地标识别.手势识别.商标识别.果蔬识别.菜品识别等图片识别功能,以及 ...

  2. AI+教育落地,百度大脑如何让校园更智能?

    人工智能作为影响社会底层技术革命逐渐向传统行业渗透,“AI+”已经替代“互联网+”成为创业创新的新引擎,出人意料的是,在AI在教育业的率先落地并且相当火爆. 现在,人工智能教育已成为从业者心目中的“教 ...

  3. python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别

    百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...

  4. 使用百度大脑iOCR,快速自定义机票行程单模板识别

    1. 功能介绍百度已经推出了iOCR财会票据识别,针对财会报销场景提出的专项解决方案,可对各类财务票据.报销单.银行回单.对账单进行自动分类及结构化识别,并支持用户为固定版式的新票据/单据自定义结构化 ...

  5. 全面解析百度大脑发布“AI开发者‘战疫’守护计划”

    即日起,百度大脑发布“AI开发者战疫守护计划” 大疫当前,人人有责,携手开发者共同出击抗击疫情 基于百度大脑AI开放平台和飞桨深度学习平台,积极运用算法.算力.软件等“武器”助力抗疫!   谁能参与计 ...

  6. 百度大脑发布“AI开发者‘战疫’守护计划”,AI支援抗疫再升级

    面对新冠肺炎疫情,AI开发者们正在积极运用算法.算力.软件等“武器”助力抗疫.针对开发者们在疫情防控期间的开发与学习需求,2月6日,百度大脑推出“AI开发者‘战疫’守护计划”, 正在进行疫情防控相关应 ...

  7. 发布AI芯片昆仑和百度大脑3.0、L4自动驾驶巴士量产下线,这是百度All in AI一年后的最新答卷...

    机器之心报道,作者:李泽南. 去年的 7 月 5 日,百度在北京国际会议中心开办了首届「AI 开发者大会」.在会上,百度首次喊出了「All in AI」的口号.一年的时间过去了,今天在同样地点举行的第 ...

  8. 百度大脑UNIT3.0智能对话技术全面解析

    智能客服.智能家居.智能助手.智能车机.智能政务……赋予产品智能对话能力是提升产品智能化体验.高效服务的重要手段,已经开始被越来越多的企业关注并布局.然而,智能对话系统搭建涉及NLP.知识图谱.语音等 ...

  9. 快速上手百度大脑EasyDL专业版·物体检测模型(附代码)

    作者:才能我浪费991.    简介:1.1.    什么是EasyDL专业版EasyDL专业版是EasyDL在2019年10月下旬全新推出的针对AI初学者或者AI专业工程师的企业用户及开发者推出的A ...

随机推荐

  1. 在linux和windows中使用selenium

     在linux和windows中使用selenium 一. selenium(浏览的人你们多大呀?是AI?) selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法 ...

  2. P1035 级数求和

    题目描述 已知:S_n= 1+1/2+1/3+…+1/nSn​=1+1/2+1/3+…+1/n.显然对于任意一个整数KK,当nn足够大的时候,S_nSn​大于KK. 现给出一个整数KK(1 \le k ...

  3. 深入浅出-iOS程序性能优化

    iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象.还记得12306么,那个速度,相信大家都受不 ...

  4. 西瓜哥:公有云也“All-Flash”?

    本文转载自 高端存储知识 Gartner在2018年Market Insight: Preparing for the SSD Rise and HDD Demise一文中指出:当闪存介质降到HDD每 ...

  5. Python微信公众号教程基础篇——收发文本消息

    1. 概述: 在本篇教程中,你将学会使用华为云弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果 ...

  6. Springboot整合webservice

    Springboot整合webservice 2019-12-10 16:34:42 星期二 WebService是什么 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,服务之间的 ...

  7. v-bind和v-model的本质区别和作用域

    每篇一句 一场寂寞凭谁诉.算前言,总轻负. Vue视图数据展示方式和彼此的区别: {{插值表达式}} {{}}插值表达式里面 只能写表达式,不能写语句 文本输出,不会解析标签 不能作用在标签的属性上, ...

  8. 求亿级记录中搜索次数Top N的搜索词(MapReduce实现)

    程序事例: 日志信息: 二手车 1345 二手房 3416 洗衣机 2789 输入: N=2 输出: 二手房 洗衣机 map函数如下: import java.io.IOException; impo ...

  9. 【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程

    CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer ...

  10. React-Native项目在Android真机上调试

    目录 1.确保你的设备已经成功连接.可以终端输入adb devices来查看: 2.终端运行npm start 开启本地服务,成功后运行react-native run-android来在设备上安装并 ...