【行业案例】【图像识别】智能车辆追踪系统
wangwei8638 发布于2019-05 浏览:4394 回复:5
1
收藏
最后编辑于2022-04

1 需求分析

各种涉车类案件时有发生,如何利用现代化科技手段遏制交通违法,保障交通安全与畅通,提高案件侦破效率,成为亟待解决的问题。随着AI技术的发展,通过利用现有城市治安监控(天网)安装的高清视频采集设备,在指挥中心进行软件的部署安装,大范围实时采集城市高精度的车辆通行记录,对监控视频进行二次分析,利用车牌识别、车型识别、车辆属性分析等技术,迅速定位违法车辆,有效打击违法行为。 

2 系统搭建

2.1总体方案

系统综合运用文字识别、图像识别、人脸识别、图像搜索等AI智能识别技术,需要在百度AI开放平台申请车牌识别、车型识别、车辆属性分析API接口,以及人脸检测、人脸比对、人脸搜索等API接口。

首先通过车辆抓拍图片,进行初步分析。识别出车牌、车型、颜色等,为车辆画像。根据车牌号,通过检索判断是否为涉案车辆,如果不是,则进行司机人脸识别,判断是否为涉案人员。如果不是,则继续抓拍。一旦满足涉案人员或涉案车辆任意一条,立即进行密切跟踪锁定,记录车辆轨迹、出现消失时间,启动预警,利用天网系统进行布控。

然后对抓拍图像作进一步分析。通过提取的车牌号,检索车辆所有人的身份证号、照片、住址、手机等详细信息;通过人脸比对,检索驾驶人的身份证号、照片、住址、手机等详细信息(驾驶人与车主可能不是同一人)。根据掌握信息,对涉案机动车进行布控追捕。

2.2平台接入

1.打开https://ai.baidu.com/

  进入控制台,选择“图像识别”。

2.创建服务,如图示:

3.输入应用名称、描述,并选择应用类型,这里勾选文字识别和人脸识别下的服务,之后点击“立即创建”按钮。

4.创建完毕,点击“返回应用列表”。

5.此处显示AK,SK,后面程序中会用到

 2.3 接口API

程序中用到的API接口文档如下:
1)车牌识别
https://ai.baidu.com/docs#/OCR-API/5116ac95
使用攻略见帖子:https://ai.baidu.com/forum/topic/show/943028
2)车型识别:
https://ai.baidu.com/docs#/ImageClassify-API/fe686c3a
使用攻略见帖子:https://ai.baidu.com/forum/topic/show/943031
3)车辆属性识别:
https://ai.baidu.com/docs#/ImageClassify-API/29196fe3
使用攻略见帖子:https://ai.baidu.com/forum/topic/show/943601
3.核心代码

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import urllib

import urllib.parse

import urllib.request

import base64

import json

#client_id 为官网获取的AK, client_secret 为官网获取的SK

client_id = '******************'

client_secret = '**********************'



#获取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.decode("utf-8"))

        token_key = token_info['access_token']

    return token_key



     # 读取图片

def get_file_content(filePath):

    with open(filePath, 'rb') as fp:

        return fp.read()





#获取车牌号信息

def get_chepai(path):

    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate"

   

    f = get_file_content(path)

    access_token=get_token()

    img = base64.b64encode(f)

    params = {"custom_lib": False, "image": img}

    params = urllib.parse.urlencode(params).encode('utf-8')

    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:

        license_plates = json.loads(content.decode("utf-8"))

        strover = '车牌识别结果: \n '

        words_result = license_plates['words_result']

        number = words_result['number']

        strover += '  车牌号:{} \n '.format(number)

#        print (content)

        print (strover)

        return content

    else:

        return ''



#获取汽车型号信息

def get_chexing(path):

    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/car"

   

    f = get_file_content(path)

    access_token=get_token()

    img = base64.b64encode(f)

    params = {"top_num":1, "image": img,'baike_num':5}

    params = urllib.parse.urlencode(params).encode('utf-8')

    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.decode("utf-8"))

        cars = json.loads(content.decode("utf-8"))

        strover = '车型识别结果: \n '

        i = 1

        for car in cars['result']:

            strover += '  车型:{} \n   年份:{}\n   准确率:{}\n'.format(car['name'],car['year'],car['score'])

            i += 1

        color_result = cars['color_result']

        strover += '   车辆颜色:  {} \n'.format(color_result)

        print (strover)

        return content

    else:

        return ''





#获取车辆属性信息

def get_cheshuxing(path):

    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_attr"

   

    f = get_file_content(path)

    access_token=get_token()

    img = base64.b64encode(f)

    params = {'image': img}

    params = urllib.parse.urlencode(params).encode('utf-8')

    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.decode("utf-8"))

        cars = json.loads(content.decode("utf-8"))

#        print (cars)       

        strover = '车辆属性识别结果: \n '

        vehicle_info = cars['vehicle_info']

        strover += '   车辆类型:  {} \n '.format(vehicle_info[0]['attributes']['vehicle_type']['name'])

        strover += '   是否系安全带:  {} \n '.format(vehicle_info[0]['attributes']['driver_belt']['score'])

        print (strover)

        return content

    else:

        return ''



image_path='F:\paddle\car\s9hc.jpeg'

get_chepai(image_path)

get_chexing(image_path)

get_cheshuxing(image_path)

4.测试结果

采用下图模拟抓拍图片进行测试,测试图片来自网络合成(车牌号为非真实,请勿对号入座)。

车辆相关信息检测结果:

    借助高清摄像机抓拍图片,进行人脸检测,人脸检测结果自动和公安机关的可疑人员资料库对比(需要相关权限),发现 相似度高于一定程度,立刻向监控中心报警。在茫茫人海中只要是出现在监控摄像画面中的人脸,通过比对的方式即可在短时间内找到这个人,大大减轻管理人员的工作负荷,同时也进一步的增强了智能化应用的效果。

 

 

收藏
点赞
1
个赞
共5条回复 最后由用户已被禁言回复于2022-04
#6wangwei8638回复于2020-06

天网系统已经在应用了

0
#5wangwei8638回复于2019-11
#4 宿命的牵绊A回复
嚯,居然和我想到一块去了

是否已有实现

0
#4宿命的牵绊A回复于2019-11

嚯,居然和我想到一块去了

0
#3wangwei8638回复于2019-08

互联需要更多的权限

0
#2wangwei8638回复于2019-05

各位有好的想法可以加入

0
TOP
切换版块