【征稿计划第二期】车辆分割使用攻略
才能我浪费99 发布于2019-07 浏览:2864 回复:7
1
收藏
最后编辑于2022-04

【使用攻略】【车辆分割】

1.功能介绍:

传入单帧图像,检测图像中的车辆,以小汽车为主,识别车辆的轮廓范围,与背景进行分离,返回分割后的二值图、灰度图、前景抠图,支持多个车辆、车门打开、后备箱打开、机盖打开、正面、侧面、背面等各种拍摄场景。

2.平台接入

具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了:
http://ai.baidu.com/forum/topic/show/943327

3.调用攻略(Python3)及评测

3.1首先认证授权:

在开始调用任何API之前需要先进行认证授权,具体的说明请参考:

http://ai.baidu.com/docs#/Auth/top

具体Python3代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import urllib
import base64
import json
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取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

3.2车辆分割分析接口调用:

详细说明请参考: https://ai.baidu.com/docs#/ImageClassify-API/3e953ab4
API访问URL:https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_seg

具体参数如下:

 

Python3调用代码如下:

#保存图片
def save_base_image(img_str,filename):
img_data = base64.b64decode(img_str)
with open(filename, 'wb') as f:
f.write(img_data)

#车辆分割 #filename:原图片名(本地存储包括路径);dehazedfilename:处理后的文件保存名称 def vehicle_seg(filename,resultfilename): request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_seg" # 二进制方式打开图片文件 f = open(filename, 'rb') img = base64.b64encode(f.read()) params = dict() params['image'] = img params['type'] = 'foreground' params = urllib.parse.urlencode(params).encode("utf-8") #params = json.dumps(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: #print(content) content=content.decode('utf-8') #print(content) data = json.loads(content) #print(data) img_str=data['foreground'] save_base_image(img_str,resultfilename) vehicle_seg('../img/vehicle2.jpg','../img/vehicle2_seg.jpg')

4.功能评测:
4.1 测试内容

以下测试图片都取自网络。

1,户外,一辆车:

2,户外,2辆车:

3,科幻创作的车:

4,室内站台上的1辆车:

5,破损车:

6,户外公路上,很多车:

7,户外公路上,很多车,复杂情况(车祸):

8,打开车门:

4.2 测试结果分析
速度:包括图片上传下载,处理速度最快为1.06秒,最慢为5.49秒。主要和图片大小关系比较大,一般图片2秒左右都可以处理完毕。
效果:对于不同情况处理效果整体不错,在复杂的图片里,有部分边缘比较模糊。

5.测试结论及建议
通过测试可以发现,在各种情况下,百度车辆分割都比较准确,有很好的应用前景。
建议可以考虑针对以下一些内容进行优化或者开发:
1,有的分割图片边缘有点模糊有毛刺,最好能优化一下,更加锐利。
2,有的分割图片需要镂空(例如案例3)的地方,没有镂空,希望能优化一下。
3,最好能增加一些后处理参数,比如对图片边缘进行锐化,或者模糊处理等。
4,可以考虑增加返回车辆在原图片的位置和轮廓数据。

5,可以考虑增加返回每一辆车的选项,返回每一辆车的分割图。

6,可以考虑增加补全的选项,通过AI自动补全车辆被遮挡的部分轮廓。

5,6可以结合起来

收藏
点赞
1
个赞
共7条回复 最后由du4602回复于2022-04
#8才能我浪费99回复于2019-07
#7 人间月天回复
期待大佬的想法早点实现

一定会实现的

0
#7人间月天回复于2019-07
#5 才能我浪费99回复
要是能实现就太好了

期待大佬的想法早点实现

0
#6才能我浪费99回复于2019-07
#4 小雨青青润无声回复
自动补全功能太厉害了

我估计可以考虑用类似GAN的技术来实现

0
#5才能我浪费99回复于2019-07
#4 小雨青青润无声回复
自动补全功能太厉害了

要是能实现就太好了

0
#4小雨青青润无声回复于2019-07

自动补全功能太厉害了

0
#3小雨青青润无声回复于2019-07
#2 才能我浪费99回复
功能十分的强大

确实是,去背景的应用很广、很实用

0
#2才能我浪费99回复于2019-07

功能十分的强大

0
TOP
切换版块