关于百度AI 图像识别 人体识别 调用API的简单实践

it2024-11-18  3


title: 关于百度AI 图像识别 人体识别 调用API的简单实践 author: HardyDragon tags:

图像识别

有关图像识别

来到控制台创建相关应用,有一些API每天有免费的调用次数。 下面来测试两个API调用使用的情况。一个人流量统计,一个果蔬识别。 他们各自的开发文档如下:

果蔬识别人流量统计 首先根据创建的应用生成的AppID和Key根据文档要求去获取 Access Token 鉴权参数。这里我们使用postman 来获取,相关请求文档 : 获取Access Token

根据文档要求填写: 随后将返回的 JSON 中的 Access Token 保存下来,一般有效持续时间一个月。 运用案例中的代码:

# encoding:utf-8 import requests import base64 ''' 人体检测和属性识别 ''' # https://aip.baidubce.com/rest/2.0/image-classify/v1/classify/ingredient 果蔬识别 或者使用组合API # https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr 人流量识别 request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr" # 二进制方式打开图片文件 f = open('people.jpg', 'rb') img = base64.b64encode(f.read()) params = {"image":img } print(len(params)) print(params.get("show")) access_token = 'xxx' request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) # print(type(image)) if response: print (response.json()) # print(type(response))

测试图片为:

返回的检测JSON结果:

{ 'log_id': 1318840485002870784, 'person_num': 4, 'person_info': [{ 'attributes': { 'orientation': { 'score': 0.8239220380783081, 'name': '正面' }, 'gender': { 'score': 0.9816263914108276, 'name': '男性' }, 'umbrella': { 'score': 0.999974250793457, 'name': '未打伞' }, 'lower_color': { 'score': 0.9990122318267822, 'name': '不确定' }, 'face_mask': { 'score': 0.9977385997772217, 'name': '无口罩' }, 'smoke': { 'score': 0.9811328053474426, 'name': '未吸烟' }, 'bag': { 'score': 0.9983456134796143, 'name': '无背包' }, 'upper_wear': { 'score': 0.8399361968040466, 'name': '短袖' }, 'is_human': { 'score': 0.7448535561561584, 'name': '正常人体' }, 'vehicle': { 'score': 0.9998051524162292, 'name': '无交通工具 '}, ' glasses ': {' score ': 0.6016136407852173, ' name ': ' 无眼镜 '}, ' headwear ': {' score ': 0.9966179728507996, ' name ': ' 无帽 '}, ' upper_wear_fg ': {' score ': 0.5699024796485901, ' name ': ' T恤 '}, ' upper_wear_texture ': {' score ': 0.8492799401283264, ' name ': ' 纯色 '}, ' upper_cut ': {' score ': 0.9516725540161133, ' name ': ' 无上方截断 '}, ' occlusion ': {' score ': 0.9857353568077087, ' name ': ' 无遮挡 '}, ' lower_cut ': {' score ': 0.9901379346847534, ' name ': ' 有下方截断 '}, ' cellphone ': {' score ': 0.9536620378494263, ' name ': ' 未使用手机 '}, ' carrying_item ': {' score ': 0.5485064387321472, ' name ': ' 不确定 '}, ' age ': {' score ': 0.6583583354949951, ' name ': ' 青年 '}, ' lower_wear ': {' score ': 0.9987112283706665, ' name ': ' 不确定 '}, ' upper_color ': {' score ': 0.6912911534309387, ' name ': ''}}, ' location ': {' score ': 0.8422502875328064, ' top ': 282, ' left ': 1, ' width ': 293, ' height ': 480}}, { 'attributes': { 'orientation': { 'score': 0.9994237422943115, 'name': '正面' }, 'gender': { 'score': 0.8718311190605164, 'name': '女性' }, 'umbrella': { 'score': 0.9990148544311523, 'name': '未打伞' }, 'lower_color': { 'score': 0.4517084956169128, 'name': '不确定' }, 'face_mask': { 'score': 0.9998911619186401, 'name': '无口罩' }, 'smoke': { 'score': 0.9995483756065369, 'name': '未吸烟' }, 'bag': { 'score': 0.9495512247085571, 'name': '无背包' }, 'upper_wear': { 'score': 0.9687395095825195, 'name': '长袖' }, 'is_human': { 'score': 0.9533928632736206, 'name': '正常人体' }, 'vehicle': { 'score': 0.9992865920066833, 'name': '无交通工具' }, 'glasses': { 'score': 0.7265676856040955, 'name': '无眼镜' }, 'headwear': { 'score': 0.9999989867210388, 'name': '普通帽' }, 'upper_wear_fg': { 'score': 0.5585871338844299, 'name': '夹克' }, 'upper_wear_texture': { 'score': 0.6421158313751221, 'name': '纯色' }, 'upper_cut': { 'score': 0.9911790490150452, 'name': '无上方截断' }, 'occlusion': { 'score': 0.991990864276886, 'name': '无遮挡' }, 'lower_cut': { 'score': 0.9263451099395752, 'name': '有下方截断' }, 'cellphone': { 'score': 0.9921301007270813, 'name': '未使用手机' }, 'carrying_item': { 'score': 0.6592147350311279, 'name': '无手 提物 '}, ' age ': {' score ': 0.9973815083503723, ' name ': ' 青年 '}, ' lower_wear ': {' score ': 0.5314904451370239, ' name ': ' 长裤 '}, ' upper_color ': {' score ': 0.8935678601264954, ' name ': ''}}, ' location ': {' score ': 0.7922436594963074, ' top ': 320, ' left ': 271, ' width ': 320, ' height ': 443}}, {' attributes ': {' orientation ': {' score ': 0.9793257713317871, ' name ': ' 正面 '}, ' gender ': {' score ': 0.7787915468215942, ' name ': ' 女性 '}, ' umbrella ': {' score ': 0.999876856803894, ' name ': ' 未打伞 '}, ' lower_color ': {' score ': 0.6322993636131287, ' name ': ''}, ' face_mask ': {' score ': 0.9998067021369934, ' name ': ' 无口罩 '}, ' smoke ': {' score ': 0.9999783039093018, ' name ': ' 未吸烟 '}, ' bag ': {' score ': 0.9874754548072815, ' name ': ' 无背包 '}, ' upper_wear ': {' score ': 0.8676489591598511, ' name ': ' 短袖 '}, ' is_human ': {' score ': 0.9938058853149414, ' name ': ' 正常人体 '}, ' vehicle ': {' score ': 0.9993371367454529, ' name ': ' 无交通工具 '}, ' glasses ': {' score ': 0.6367518305778503, ' name ': ' 无眼镜 '}, ' headwear ': {' score ': 0.9999989867210388, ' name ': ' 普通帽 '}, ' upper_wear_fg ': {' score ': 0.6964966058731079, ' name ': ' T恤 '}, ' upper_wear_texture ': {' score ': 0.5135453343391418, ' name ': ' 纯色 '}, ' upper_cut ': {' score ': 0.9986061453819275, 'name': '无上方截断' }, 'occlusion': { 'score': 0.8701527714729309, 'name': '无遮挡' }, 'lower_cut': { 'score': 0.9687526226043701, 'name': '有下方截断' }, 'cellphone': { 'score': 0.9996531009674072, 'name': '未使用手机' }, 'carrying_item': { 'score': 0.8517513871192932, 'name': '无手提物' }, 'age': { 'score': 0.9983052015304565, 'name': '青年' }, 'lower_wear': { 'score': 0.3245735764503479, 'name': '长裤' }, 'upper_color': { 'score': 0.8795125484466553, 'name': '白' } }, 'location': { 'score': 0.7626785635948181, 'top': 286, 'left': 516, 'width': 274, 'height': 468 } }, { 'attributes': { 'orientation': { 'score': 0.5822940468788147, 'name': '左侧面' }, 'gender': { 'score': 0.944637656211853, 'name': '男性' }, 'umbrella': { 'score': 0.9998570680618286, 'name': '未打伞' }, 'lower_color': { 'score': 0.9880756139755249, 'name': '不确定' }, 'face_mask': { 'score': 0.9726091623306274, 'name': '无口罩' }, 'smoke': { 'score': 0.9893223643302917, 'name': '未吸烟' }, 'bag': { 'score': 0.9984421133995056, 'name': '无背包' }, 'upper_wear': { 'score': 0.9205195307731628, 'name': '短袖' }, 'is_human': { 'score': 0.7452386021614075, 'name': '正常人体' }, 'vehicle': { 'score': 0.9989739656448364, 'name': '无交通工具' }, 'glasses': { 'score': 0.9243654608726501, 'name': '无眼镜' }, 'headwear': { 'score': 0.9998006224632263, 'name': '无帽' }, 'upper_wear_fg': { 'score': 0.8709577918052673, 'name': 'T恤' }, 'upper_wear_texture': { 'score': 0.8579536080360413, 'name': '纯色' }, 'upper_cut': { 'score': 0.9772676229476929, 'name': '无上方截断' }, 'occlusion': { 'score': 0.5079278349876404, 'name': '无遮挡' }, 'lower_cut': { 'score': 0.9900505542755127, 'name': '有下方截断' }, 'cellphone': { 'score': 0.9524904489517212, 'name': '未使用手机' }, 'carrying_item': { 'score': 0.5464341640472412, 'name': '无手提物' }, 'age': { 'score': 0.945330023765564, 'name': '青年' }, 'lower_wear': { 'score': 0.9898276329040527, 'name': '不确定' }, 'upper_color': { 'score': 0.9708309769630432, 'name': '白' } }, 'location': { 'score': 0.4577412903308868, 'top': 237, 'left': 633, 'width': 383, 'height': 527 } }] }

同样的果蔬识别:

返回结果:

{ "log_id": 2559876887441567829, "result_num": 5, "result": [{ "score": 0.5100684762001038, "name": "长茄" }, { "score": 0.4879534840583801, "name": "茄子" }, { "score": 0.0019078468903899193, "name": "园茄" }, { "score": 1.3075176866550464e-05, "name": "板栗" }, { "score": 6.971192760829581e-06, "name": "栗子" }] }

补充

生成识别后的渲染图,保存。

总结

利用百度AI的相关API可以快速的实现一些图像识别功能。

最新回复(0)