1. 程式人生 > >瞭解人工智慧?-百度AI

瞭解人工智慧?-百度AI

瞭解人工智慧?
什麼是人工智慧?
由人創造的"智慧能力",同樣具備智慧生物的能力

耳朵=傾聽=麥克風=語音識別 ASR Automatic Speech Recognition

嘴巴=訴說=揚聲器=語音合成 TTS Text To Speech

眼睛=觀察=攝像頭=影象識別 IR Image Recognition

思考=理解=邏輯處理=自然語言處理 NLP Natural Language Processing

目前的人工智慧做了哪些?
語音識別、合成:
小米的小愛同學

蘋果的Siri

微軟的Cortana, 聲波的轉寫和拼接

影象識別:
交通攝像頭拍違章,刷臉解鎖手機等

視訊識別:
抖音內容稽核,視訊社交APP的稽核機制

文字識別:
從身份證照片提取身份證號碼,掃一掃翻譯

自然語言處理:
智慧問答機器人,也包含小米的小愛同學,蘋果的siri

我們身邊的人工智慧
銀行辦卡刷臉就ok 人臉識別+身份認證

車輛違章有牌兒就跑不了 影象識別+拍照識別

違法犯罪路過天眼,等於自投羅網 影象採集+人臉識別

“小愛同學”,“哎~”,"開啟電視",“好的!” 語音識別+語音和成+自然語音處理

“歡迎使用10010智慧語音系統”,“我還有多少話費?” “您的話費餘額為0.01” 語音識別+語音合成+自然語言處理

掃一掃翻譯看不懂的文字 文字識別+機器翻譯

我們與人工智慧的故事

瞭解百度AI開放平臺--------百度大腦
官網:http://ai.baidu.com/

Python SDK
pip install baidu-aip

新建AipSpeech
from aip import AipSpeech

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
語音合成
https://ai.baidu.com/ai-doc/SPEECH/7k38y8ier

合成文字長度必須小於1024位元組,如果本文長度較長,可以採用多次請求的方式。文字長度不可超過限制

舉例,要把一段文字合成為語音檔案:
result = client.synthesis('你好百度', 'zh', 1, {
'vol': 5,
})

識別正確返回語音二進位制 錯誤則返回dict 參照下面錯誤碼

if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
引數 型別 描述 是否必須
tex String 合成的文字,使用UTF-8編碼, 請注意文字長度必須小於1024位元組 是
cuid String 使用者唯一標識,用來區分使用者, 填寫機器 MAC 地址或 IMEI 碼,長度為60以內 否
spd String 語速,取值0-9,預設為5中語速 否
pit String 音調,取值0-9,預設為5中語調 否
vol String 音量,取值0-15,預設為5中音量 否
per String 發音人選擇, 0為女聲,1為男聲, 3為情感合成-度逍遙,4為情感合成-度丫丫,預設為普通女 否
語音識別
將人類的語音中的詞彙內容轉換為計算機可讀的輸入,例如按鍵、二進位制編碼或者字元序列

支援的語音格式
原始 PCM 的錄音引數必須符合 16k 取樣率、16bit 位深、單聲道,支援的格式有:pcm(不壓縮)、wav(不壓縮,pcm編碼)、amr(壓縮格式)。

注意事項
如果需要使用實時識別、長語音、喚醒詞、語義解析等其它語音功能,請使用Android或者iOS SDK 或 Linux C++ SDK 等。

請嚴格按照文件裡描述的引數進行開發,特別請關注原始錄音引數以及語音壓縮格式的建議,否則會影響識別率,進而影響到產品的使用者體驗。

目前系統支援的語音時長上限為60s,請不要超過這個長度,否則會返回錯誤。

介面描述
向遠端服務上傳整段語音進行識別

請求說明
舉例,要對段儲存有一段語音的語音檔案進行識別:

讀取檔案

def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

識別本地檔案

client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
'dev_pid': 1536,
})
引數 型別 描述 是否必須
speech Buffer 建立包含語音內容的Buffer物件, 語音檔案的格式,pcm 或者 wav 或者 amr。不區分大小寫 是
format String 語音檔案的格式,pcm 或者 wav 或者 amr。不區分大小寫。推薦pcm檔案 是
rate int 取樣率,16000,固定值 是
cuid String 使用者唯一標識,用來區分使用者,填寫機器 MAC 地址或 IMEI 碼,長度為60以內 否
dev_pid Int 不填寫lan引數生效,都不填寫,預設1537(普通話 輸入法模型),dev_pid引數見本節開頭的表格 否
lan(已廢棄) String 歷史相容引數,請使用dev_pid。如果dev_pid填寫,該引數會被覆蓋。語種選擇,輸入法模型,預設中文(zh)。 中文=zh、粵語=ct、英文=en,不區分大小寫。 否
dev_pid 引數列表

dev_pid 語言 模型 是否有標點 備註
1536 普通話(支援簡單的英文識別) 搜尋模型 無標點 支援自定義詞庫
1537 普通話(純中文識別) 輸入法模型 有標點 支援自定義詞庫
1737 英語 無標點 不支援自定義詞庫
1637 粵語 有標點 不支援自定義詞庫
1837 四川話 有標點 不支援自定義詞庫
1936 普通話遠場 遠場模型 有標點 不支援
語音識別 返回資料引數詳情

引數 型別 是否一定輸出 描述
err_no int 是 錯誤碼
err_msg int 是 錯誤碼描述
sn int 是 語音資料唯一標識,系統內部產生,用於 debug
result int 是 識別結果陣列,提供1-5 個候選結果,string 型別為識別的字串, utf-8 編碼
返回樣例:

// 成功返回
{
"err_no": 0,
"err_msg": "success.",
"corpus_no": "15984125203285346378",
"sn": "481D633F-73BA-726F-49EF-8659ACCC2F3D",
"result": ["北京天氣"]
}

// 失敗返回
{
"err_no": 2000,
"err_msg": "data empty.",
"sn": null
}
FFmpeg音訊轉碼工具
這個工具可以將wav wma mp3 等音訊檔案轉換為 pcm 無壓縮音訊檔案

新增環境變數:
H:\Python3全棧開發\Baidu_AI\音訊轉碼工具\ffmpeg-20200131-62d92a8-win64-static\bin

image-20200201194941721

常用命令
.pcm
os.system('ffmpeg -y -i wyn.m4a -acodec pcm_s16le -f s16le -ac 1 -ar 16000 wyn.m4a.pcm') # 將.m4a檔案轉為.pcm
播放MP3檔案
os.system('ffplay auido.mp3') #播放MP3檔案
影象識別
介面能力
影象識別介面一覽表

介面名稱 介面能力簡要描述
影象主體檢測 識別影象中的主體具體座標位置。
通用物體和場景識別高階版 識別圖片中的場景及物體標籤,支援10w+標籤型別。
菜品識別 檢測使用者上傳的菜品圖片,返回具體的菜名、卡路里、置信度資訊。
自定義菜品識別 入庫自定義的單菜品圖,實現上傳多菜品圖的精準識別,返回具體的菜名、位置、置信度資訊
logo商標識別 識別圖片中包含的商品LOGO資訊,返回LOGO品牌名稱、在圖片中的位置、置信度。
動物識別 檢測使用者上傳的動物圖片,返回動物名稱、置信度資訊。
植物識別 檢測使用者上傳的植物圖片,返回植物名稱、置信度資訊。
花卉識別 檢測使用者上傳的花卉圖片,返回花卉名稱、置信度資訊。
果蔬食材識別 檢測使用者上傳的果蔬類圖片,返回果蔬名稱、置信度資訊。
地標識別 檢測使用者上傳的地標圖片,返回地標名稱。
紅酒識別 識別影象中的紅酒標籤,返回紅酒名稱、國家、產區、酒莊、型別、糖分、葡萄品種、酒品描述等資訊。
貨幣識別 識別影象中的貨幣型別,返回貨幣名稱、程式碼、面值、年份資訊,可識別百餘種國內外常見貨幣。
車輛分析介面一覽表

介面名稱 介面能力簡要描述
車型識別 檢測使用者上傳的車輛圖片,識別所屬車型,包括車輛品牌及具體型號、顏色、年份、位置資訊。
版本更新記錄
上線日期 版本號 更新內容
2019.6.6 2.2.17 新增紅酒,貨幣,花卉,蔬菜識別
2018.12.7 2.2.10 新增地標識別介面
2018.4.9 2.2.2 新增通用物體識別介面
2017.12.22 2.0.0 SDK程式碼重構
2017.9.27 1.6.6 影象識別服務新增動物識別,植物識別介面
2017.9.7 1.6.5 新增影象識別服務
安裝影象識別 Python SDK
影象識別 Python SDK目錄結構

├── README.md
├── aip //SDK目錄
│ ├── init.py //匯出類
│ ├── base.py //aip基類
│ ├── http.py //http請求
│ └── imageclassify.py //影象識別
└── setup.py //setuptools安裝
支援Python版本:2.7.+ ,3.+

安裝使用Python SDK有如下方式:

如果已安裝pip,執行pip install baidu-aip即可。

如果已安裝setuptools,執行python setup.py install即可。

新建AipImageClassify
AipImageClassify是影象識別的Python SDK客戶端,為使用影象識別的開發人員提供了一系列的互動方法。

參考如下程式碼新建一個AipImageClassify:

from aip import AipImageClassify

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
在上面程式碼中,常量APP_ID在百度智慧雲控制檯中建立,常量API_KEY與SECRET_KEY是在建立完畢應用後,系統分配給使用者的,均為字串,用於標識使用者,為訪問做簽名驗證,可在AI服務控制檯中的應用列表中檢視。

注意:如您以前是百度智慧雲的老使用者,其中API_KEY對應百度智慧雲的“Access Key ID”,SECRET_KEY對應百度智慧雲的“Access Key Secret”。

配置AipFace
如果使用者需要配置AipFace的網路請求引數(一般不需要配置),可以在構造AipFace之後呼叫介面設定引數,目前只支援以下引數:

介面 說明
setConnectionTimeoutInMillis 建立連線的超時時間(單位:毫秒
setSocketTimeoutInMillis 通過開啟的連線傳輸資料的超時時間(單位:毫秒)
通用物體識別
該請求用於通用物體及場景識別,即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中的多個物體及場景標籤。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫通用物體識別 """
client.advancedGeneral(image);

""" 如果有可選引數 """
options = {}
options["baike_num"] = 5

""" 帶引數呼叫通用物體識別 """
client.advancedGeneral(image, options)
通用物體識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
通用物體識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 唯一的log id,用於問題定位
result_num 是 unit32 返回結果數目,及result陣列中的元素個數
result 是 arrry(object) 標籤結果陣列
+keyword 是 string 圖片中的物體或場景名稱
+score 是 float 置信度,0-1
+root 是 string 識別結果的上層標籤,有部分錢幣、動漫、菸酒等tag無上層標籤
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
通用物體識別 返回示例

{
"log_id": 327863200205075661,
"result_num": 5,
"result": [{
"score": 0.967622,
"root": "公眾人物",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E6%96%B0%E5%9E%A3%E7%BB%93%E8%A1%A3/8035884",
"image_url": "http://imgsrc.baidu.com/baike/pic/item/91ef76c6a7efce1b27893518a451f3deb58f6546.jpg",
"description": "新垣結衣(Aragaki Yui),1988年6月11日出生於沖繩縣那霸市。日本女演員、歌手、模特。畢業於日出高中。2001年,參加《nicola》模特比賽並獲得最優秀獎。2005年,因出演現代劇《澀谷15》而作為演員出道。2006年,參演校園劇《我的老大,我的英雄》;同年,她還出版了個人首本寫真集《水漾青春》。2007年,她從日出高校畢業後開始專注於演藝發展,並發表個人首張音樂專輯《天空》;同年,新垣結衣還主演了愛情片《戀空》,而她也憑藉該片獲得了多個電影新人獎項。2010年,主演愛情片《花水木》。2011年,主演都市劇《全開女孩》。2012年,相繼參演現代劇《Legal High》、劇情片《劇場版新參者:麒麟之翼》。2013年,主演都市劇《飛翔情報室》。2014年,她主演了劇情片《黎明的沙耶》。2016年,主演愛情喜劇《逃避雖可恥但有用》,並憑藉該劇獲得了多個電視劇女主角獎項。2017年,主演愛情片《戀愛迴旋》,憑藉該片獲得第60屆藍絲帶獎最佳女主角;同年11月,她還憑藉醫療劇《Code Blue 3》獲得第94屆日劇學院賞最佳女配角。"
},
"keyword": "新垣結衣"
},
{
"score": 0.716067,
"root": "人物-人物特寫",
"keyword": "頭髮"
},
{
"score": 0.421281,
"root": "商品-穿戴",
"keyword": "圍巾"
},
{
"score": 0.22347,
"root": "商品-五金",
"keyword": "拉鍊"
},
{
"score": 0.028031,
"root": "商品-穿戴",
"keyword": "脖套"
}]
}
菜品識別
該請求用於菜品識別。即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片的菜品名稱、卡路里資訊、置信度。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫菜品識別 """
client.dishDetect(image);

""" 如果有可選引數 """
options = {}
options["top_num"] = 3
options["filter_threshold"] = "0.7"
options["baike_num"] = 5

""" 帶引數呼叫菜品識別 """
client.dishDetect(image, options)
菜品識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
top_num 否 string 返回預測得分top結果數,預設為5
filter_threshold 否 string 預設0.95,可以通過該引數調節識別效果,降低非菜識別率.
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
菜品識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 唯一的log id,用於問題定位
result_num 否 unit32 返回結果數目,及result陣列中的元素個數
result 否 array() 菜品識別結果陣列
+name 否 string 菜名,示例:魚香肉絲
+calorie 否 float 卡路里,每100g的卡路里含量
+probability 否 float 識別結果中每一行的置信度值,0-1
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
菜品識別 返回示例

{
"log_id": 7357081719365269362,
"result_num": 5,
"result": [
{
"calorie": "119",
"has_calorie": true,
"name": "酸湯魚",
"probability": "0.396031"
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E9%85%B8%E6%B1%A4%E9%B1%BC/1754055",
"description": "酸湯魚,是黔桂湘交界地區的一道侗族名菜,與侗族相鄰的苗、水、瑤等少數民族也有相似菜餚,但其中以貴州侗族酸湯魚最為有名,據考證此菜餚最早源於黎平縣雷洞鎮牙雙一帶。製作原料主要有魚肉、酸湯、山倉子等香料。成菜後,略帶酸味、幽香沁人、鮮嫩爽口開胃,是貴州“黔系”菜餚的代表作之一。這道菜通常先自制酸湯,之後將活魚去掉內臟,入酸湯煮制。"
}
},
{
"calorie": "38",
"has_calorie": true,
"name": "原味黑魚煲",
"probability": "0.265432",

},
{
"calorie": "144",
"has_calorie": true,
"name": "椒魚片",
"probability": "0.0998993"
},
{
"calorie": "98",
"has_calorie": true,
"name": "酸菜魚",
"probability": "0.0701917"
},
{
"calorie": "257.65",
"has_calorie": true,
"name": "檸檬魚",
"probability": "0.0471465"
}]
}
車輛識別
該請求用於檢測一張車輛圖片的具體車型。即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片的車輛品牌及型號。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫車輛識別 """
client.carDetect(image);

""" 如果有可選引數 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5

""" 帶引數呼叫車輛識別 """
client.carDetect(image, options)
車輛識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
top_num 否 string 返回預測得分top結果數,預設為5
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
車輛識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 否 uint64 唯一的log id,用於問題定位
color_result 是 string 顏色
result 否 car-result() 車型識別結果陣列
+name 否 string 車型名稱,示例:寶馬x6
+score 否 double 置信度,示例:0.5321
+year 否 string 年份
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
location_result 否 string 車在圖片中的位置資訊
車輛識別 返回示例

{
"log_id": 4086212218842203806,
"location_result": {
"width": 447,
"top": 226,
"height": 209,
"left": 188
},
"result": [{
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
"description": "布加迪Chiron是法國跑車品牌布加迪出品的豪華超跑車。配置四渦輪增壓發動機,420 公里每小時,有23種顏色的選擇,售價高達260萬美元。"
},
"score": 0.98793351650238,
"name": "布加迪Chiron",
"year": "無年份資訊"
},
{
"score": 0.0021970034576952,
"name": "奧迪RS5",
"year": "2011-2017"
},
{
"score": 0.0021096928976476,
"name": "奧迪RS4",
"year": "無年份資訊"
},
{
"score": 0.0015581247862428,
"name": "奧迪RS7",
"year": "2014-2016"
},
{
"score": 0.00082337751518935,
"name": "布加迪威航",
"year": "2004-2015"
}],
"color_result": "顏色無法識別"
}
logo商標識別
該請求用於檢測和識別圖片中的品牌LOGO資訊。即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中LOGO的名稱、位置和置信度。當效果欠佳時,可以建立子庫(在控制檯建立應用並申請建庫)並通過呼叫logo入口介面完成自定義logo入庫,提高識別效果。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫logo商標識別 """
client.logoSearch(image);

""" 如果有可選引數 """
options = {}
options["custom_lib"] = "true"

""" 帶引數呼叫logo商標識別 """
client.logoSearch(image, options)
logo商標識別 請求引數詳情

引數名稱 是否必選 型別 可選值範圍 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
custom_lib 否 string true - 返回自定義庫 false - 返回自定義庫+預設庫的識別結果 false 是否只使用自定義logo庫的結果,預設false:返回自定義庫+預設庫的識別結果
logo商標識別 返回資料引數詳情

引數 型別 是否必須 說明 示例
log_id number 是 請求標識碼,隨機數,唯一 507499361
result_num number 是 返回結果數目,即:result陣列中元素個數 2
result array 是 返回結果陣列,每一項為一個識別出的logo -
+location object 是 位置資訊(左起畫素位置、上起畫素位置、畫素寬、畫素高) {"left": 100,"top":100,"width":10,"height":10}
++left number 是 左起畫素位置 100
++top number 是 上起畫素位置 100
++width number 是 畫素寬 100
++height number 是 畫素高 100
+name string 是 識別的品牌名稱 京東
+probability number 是 分類結果置信度(0--1.0) 0.8
+type number 是 type=0為1千種高優商標識別結果;type=1為2萬類logo庫的結果;其它type為自定義logo庫結果 1 (2萬類的結果)
logo商標識別 返回示例

{
"log_id": 843411868,
"result_num": 1,
"result": [
{
"type": 0,
"name": "科顏氏",
"probability": 0.99998807907104,
"location": {
"width": 296,
"top": 20,
"height": 128,
"left": 23
}
}
]
}
logo商標識別—新增
使用入庫介面請先在控制檯建立應用並申請建庫,建庫成功後方可正常使用。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')
brief = "{"name": "寶馬","code":"666"}"

""" 呼叫logo商標識別—新增 """
client.logoAdd(image, brief);
logo商標識別—新增 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
brief 是 string brief,檢索時帶回。此處要傳對應的name與code欄位,name長度小於100B,code長度小於150B
logo商標識別—新增 返回資料引數詳情

引數 型別 是否必須 說明 示例
log_id number 是 請求標識碼,隨機數,唯一 507499361
cont_sign string 是 輸入圖片簽名,可用於刪除 -
logo商標識別—新增 返回示例

{
"log_id": 972934653,
"cont_sign": "217113248,419422301"
}
logo商標識別—刪除
使用刪除介面請先在控制檯建立應用並申請建庫,建庫成功後先呼叫入庫介面完成logo圖片入庫,刪除介面使用者在已入庫的logo圖片中刪除圖片。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫刪除logo商標,傳入引數為圖片 """
client.logoDeleteByImage(image);

contSign = "8cnn32frvrr2cd901"

""" 呼叫刪除logo商標,傳入引數為圖片簽名 """
client.logoDeleteBySign(contSign);
logo商標識別—刪除 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
cont_sign 是 string 圖片簽名(和image二選一,image優先順序更高)
logo商標識別—刪除 返回資料引數詳情

引數 型別 是否必須 說明 示例
log_id number 是 請求標識碼,隨機數,唯一 507499361
logo商標識別—刪除 返回示例

{
"log_id": 50488417
}
動物識別
該請求用於識別一張圖片。即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出動物識別結果

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫動物識別 """
client.animalDetect(image);

""" 如果有可選引數 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5

""" 帶引數呼叫動物識別 """
client.animalDetect(image, options)
動物識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
top_num 否 string 6 返回預測得分top結果數,預設為6
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
動物識別 返回資料引數詳情

引數 型別 是否必須 說明
log_id uint64 是 唯一的log id,用於問題定位
result arrry(object) 是 識別結果陣列
+name string 是 動物名稱,示例:蒙古馬
+score uint32 是 置信度,示例:0.5321
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
動物識別 返回示例

{
"log_id": 7392482912853822863,
"result": [{
"score": "0.993811",
"name": "叉角羚",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%8F%89%E8%A7%92%E7%BE%9A/801703",
"description": "叉角羚(學名:Antilocapra americana):在角的中部角鞘有向前伸的分枝,故名。體型中等,體長1-1.5米,尾長7.5-10釐米,肩高81-104釐米,成體重36-60千克,雌體比雄體小;背面為紅褐色,頸部有黑色鬃毛,腹部和臀部為白色,頰面部和頸部兩側有黑色塊斑;毛被下面為絨毛,上覆以粗糙、質脆的長毛,由於某些面板肌的作用,能使其毛被呈不同角度,以利於保暖或散熱。植食。叉角羚奔跑速度非常快,最高時速達100千米。一次跳躍可達3.5-6米。善游泳。夏季組成小群活動,冬季則集結成上百隻的大群。為尋找食物和水源,一年中常進行幾次遷移。性機警,視覺敏銳,能看到數千米外的物體。遇險時,臀部的白色毛能立起,向同伴告警。分佈於北美洲。"
}
},
{
"score": "0.000289439",
"name": "印度羚"
},
{
"score": "0.000186248",
"name": "藏羚羊"
},
{
"score": "0.000147176",
"name": "跳羚"
},
{
"score": "0.000134434",
"name": "馴鹿"
},
{
"score": "9.86555e-05",
"name": "高鼻羚羊"
}]
}
植物識別
該請求用於識別一張圖片。即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出植物識別結果。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫植物識別 """
client.plantDetect(image);

""" 如果有可選引數 """
options = {}
options["baike_num"] = 5

""" 帶引數呼叫植物識別 """
client.plantDetect(image, options)
植物識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
植物識別 返回資料引數詳情

引數 型別 是否必須 說明
log_id uint64 是 唯一的log id,用於問題定位
result arrry(object) 是 植物識別結果陣列
+name string 是 植物名稱,示例:吉娃蓮
+score uint32 是 置信度,示例:0.5321
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
植物識別 返回示例

{
"log_id": 1705495792822072357,
"result": [{
"score": 0.99979120492935,
"name": "蓮",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E8%8E%B2/2717141",
"description": "蓮(Nelumbo nucifera),又稱荷、荷花、蓮花、芙蕖、鞭蓉、水芙蓉、水芝、水芸、水旦、水華等,溪客、玉環是其雅稱,未開的花蕾稱菡萏,已開的花朵稱鞭蕖,蓮科,屬多年生水生宿根草本植物,其地下莖稱藕,能食用,葉入藥,蓮子為上乘補品,花可供觀賞。是我國十大名花之一。是印度的國花。蓮,雙子葉植物,睡蓮科。多年生挺水草本植物。根狀莖橫走,粗而肥厚,節間膨大,內有縱橫通氣孔道,節部縊縮。葉基生,挺出水面,盾形,直徑30-90cm,波狀邊緣,上面深綠色,下面淺綠色。葉柄有小刺,長1-2m,挺出水面。花單生,直徑10-25cm,橢圓花瓣多數,白色或粉紅色;花柄長1-2m。花托在果期膨大,直徑5-10cm,海綿質。堅果橢圓形和卵圓形,長1.5-2.0cm,灰褐色。種子卵圓形,長1.2-1.7cm,種皮紅棕色。生於池塘、淺湖泊及稻田中。中國南北各省有自生或栽培,經濟價值高。人們習慣上稱種子為“蓮子”、地下莖為“藕”、花托為“蓮蓬”、葉為“荷葉”。"
}
},
{
"score": 0.00015144718054216,
"name": "紅睡蓮"
},
{
"score": 1.2172759852547e-05,
"name": "白睡蓮"
},
{
"score": 6.305016540864e-06,
"name": "延藥睡蓮"
},
{
"score": 3.6133328649157e-06,
"name": "華夏慈姑"
}]
}
影象主體檢測
使用者向服務請求檢測影象中的主體位置。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫影象主體檢測 """
client.objectDetect(image);

""" 如果有可選引數 """
options = {}
options["with_face"] = 0

""" 帶引數呼叫影象主體檢測 """
client.objectDetect(image, options)
影象主體檢測 請求引數詳情

引數名稱 是否必選 型別 可選值範圍 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
with_face 否 string 0 - 不帶人臉區域 1 - 帶人臉區域 1 如果檢測主體是人,主體區域是否帶上人臉部分,0-不帶人臉區域,其他-帶人臉區域,裁剪類需求推薦帶人臉,檢索/識別類需求推薦不帶人臉。預設取1,帶人臉。
影象主體檢測 返回資料引數詳情

引數 型別 是否必須 說明 示例
log_id number 是 唯一的log id,用於問題定位 507499361
result object 是 裁剪結果 -
+left number 是 表示定位位置的長方形左上頂點的水平座標 50
+top number 是 表示定位位置的長方形左上頂點的垂直座標 60
+width number 是 表示定位位置的長方形的寬度 200
+height number 是 表示定位位置的長方形的高度 200
影象主體檢測 返回示例

{
"log_id": 895582300,
"result": {
"width": 486,
"top": 76,
"left": 134,
"height": 394
}
}
地標識別
該請求用於識別地標,即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中的地標識別結果。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫地標識別 """
client.landmark(image);
地標識別 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
地標識別 返回資料引數詳情

引數 型別 是否必須 說明 示例
log_id number 是 唯一的log id,用於問題定位 507499361
result object 是 裁剪結果 -
+landmark string 是 地標名稱,無法識別則返回空字串 獅身人面像
地標識別 返回示例

{
"log_id": 3450013152046070669,
"result":
{
"landmark": "獅身人面像"
}
}
花卉識別
檢測使用者上傳的花卉圖片,輸出圖片的花卉識別結果名稱及對應的概率打分。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫花卉識別 """
client.flower(image);

""" 如果有可選引數 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5

""" 帶引數呼叫花卉識別 """
client.flower(image, options)
花卉識別 請求引數詳情

引數名稱 是否必選 型別 預設值 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
top_num 否 string 5 返回預測得分top結果數,預設為5
baike_num 否 string 0 返回百科資訊的結果數,預設不返回
花卉識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 唯一的log id,用於問題定位
result_num 否 uint32 返回結果數目,及result陣列中的元素個數
result 否 object() 標籤結果陣列
+name 否 string 花卉名稱
+score 否 double 置信度,0-1
+baike_info object 否 對應識別結果的百科詞條名稱
++baike_url string 否 對應識別結果百度百科頁面連結
++image_url string 否 對應識別結果百科圖片連結
++description string 否 對應識別結果百科內容描述
花卉識別 返回示例

{
"log_id": 2233046923807801461,
"result": [{
"score": 0.79123616218567,
"name": "荷花",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E8%8D%B7%E8%8A%B1/158674",
"description": "荷花(Lotus flower)屬山龍眼目,蓮科,是蓮屬二種植物的通稱。又名蓮花、水芙蓉等。是蓮屬多年生水生草本花卉。地下莖長而肥厚,有長節,葉盾圓形。花期6至9月,單生於花梗頂端,花瓣多數,嵌生在花托穴內,有紅、粉紅、白、紫等色,或有彩紋、鑲邊。堅果橢圓形,種子成卵形。荷花種類很多,分觀賞和食用兩大類。原產亞洲熱帶和溫帶地區,中國早在周朝就有栽培記載。荷花全身皆寶,藕和蓮子能食用,蓮子、根莖、藕節、荷葉、花及種子的胚芽等都可入藥。其出汙泥而不染之品格恆為世人稱頌。“接天蓮葉無窮碧,映日荷花別樣紅”就是對荷花之美的真實寫照。荷花“中通外直,不蔓不枝,出淤泥而不染,濯清漣而不妖”的高尚品格,歷來為古往今來詩人墨客歌詠繪畫的題材之一。1985年5月荷花被評為中國十大名花之一。荷花是印度,越南的國花。"
}
},
{
"score": 0.16631570458412,
"name": "蓮"
},
{
"score": 0.015812600031495,
"name": "非花"
},
{
"score": 0.0058604963123798,
"name": "碗蓮"
},
{
"score": 0.0039983494207263,
"name": "並蒂蓮"
}]
}
食材識別
該請求用於識別果蔬類食材,即對於輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中的果蔬食材結果。

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫食材識別 """
client.ingredient(image);

""" 如果有可選引數 """
options = {}
options["top_num"] = 3

""" 帶引數呼叫食材識別 """
client.ingredient(image, options)
食材識別 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
top_num 否 string 返回預測得分top結果數,如果為空或小於等於0預設為5;如果大於20預設20
食材識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 唯一的log id,用於問題定位
result 是 object() 識別結果
result_num 否 uint32 識別結果數
+name 否 string 影象中的食材名稱
+score 否 double 得分,0-1
食材識別 返回示例

{
"log_id": 1091287364,
"result_num": 20,
"result": [
{
"name": "非果蔬食材",
"score": 0.99999988079071
},
{
"name": "油菜",
"score": 1.1175458780599e-8
},
{
"name": "蛇果",
"score": 7.2776291659693e-9
},
{
"name": "國光蘋果",
"score": 5.6971951600815e-9
},
{
"name": "海棗",
"score": 4.2508210285064e-9
},
{
"name": "瓊瑤漿葡萄",
"score": 4.1451895249622e-9
},
{
"name": "京銳號辣椒",
"score": 3.9915102334476e-9
},
{
"name": "冬瓜",
"score": 3.3611948779821e-9
},
{
"name": "長江豆",
"score": 2.9944848822794e-9
},
{
"name": "黑加侖",
"score": 2.7750137743254e-9
},
{
"name": "麵包果",
"score": 2.3357531464541e-9
},
{
"name": "椰子",
"score": 1.9741890344704e-9
},
{
"name": "美人瓜",
"score": 1.9319581490151e-9
},
{
"name": "蓮藕",
"score": 1.759222323372e-9
},
{
"name": "黑奧林",
"score": 1.7266311713726e-9
},
{
"name": "芥菜",
"score": 1.6180708994895e-9
},
{
"name": "樣芹菜",
"score": 1.5472728653876e-9
},
{
"name": "篙巴",
"score": 1.4084827748562e-9
},
{
"name": "花生",
"score": 1.3972580870103e-9
},
{
"name": "魁綠獼猴桃",
"score": 1.3920842256709e-9
}
]
}
紅酒識別
該服務用於識別紅酒標籤,即對於輸入的一張圖片(可正常解碼,長寬比適宜,且酒標清晰可見),輸出圖片中的紅酒名稱、國家、產區、酒莊、型別、糖分、葡萄品種、酒品描述等資訊。可識別數十萬中外常見紅酒。 注意:圖片中酒標要清晰可見,示例圖片如下

img

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫紅酒識別 """
client.redwine(image);
紅酒識別 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
紅酒識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 請求標識碼,隨機數,唯一
result 是 dict 識別結果
+hasdetail 是 unit 判斷是否返回詳細資訊(除紅酒中文名之外的其他欄位),含有返回1,不含有返回0
+wineNameCn 是 string 紅酒中文名,無法識別返回空,示例:波斯塔瓦經典赤霞珠品麗珠半甜紅葡萄酒
+wineNameEn 否 string 紅酒英文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Bostavan Classic Cabernet
+countryCn 否 string 國家中文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:摩爾多瓦
+countryEn 否 string 國家英文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Moldova
+regionCn 否 string 產區中文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:波爾多
+regionEn 否 string 產區英文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Bordeaux
+subRegionCn 否 string 子產區中文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:梅多克
+subRegionEn 否 string 子產區英文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Medoc
+wineryCn 否 string 酒莊中文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:波斯塔瓦酒莊
+wineryEn 否 string 酒莊英文名,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Vinaria Bostavan
+classifyByColor 否 string 酒型別,hasdetail = 0時,表示無法識別,該欄位不返回,示例:紅葡萄酒
+classifyBySugar 否 string 糖分型別,hasdetail = 0時,表示無法識別,該欄位不返回,示例:半甜型
+color 否 string 色澤,hasdetail = 0時,表示無法識別,該欄位不返回,示例:寶石紅色
+grapeCn 否 string 葡萄品種,可能有多種葡萄,hasdetail = 0時,表示無法識別,該欄位不返回,示例:品麗珠;赤霞珠
+grapeEn 否 string 葡萄品種英文名,可能有多種葡萄,hasdetail = 0時,表示無法識別,該欄位不返回,示例:Cabernet Franc;Cabernet Sauvignon
+tasteTemperature 否 string 品嚐溫度,hasdetail = 0時,表示無法識別,該欄位不返回,示例:6-11℃
+description 否 string 酒品描述,hasdetail = 0時,表示無法識別,該欄位不返回,示例:葡萄酒呈深寶石紅色,具有香料、香草和新鮮水果的果香,酒體分明,口感暢順,果香橫溢,單寧軟化程度高,讓你回味無窮
紅酒識別 返回示例

僅識別出紅酒名稱,hasdetail = 0:

{
"log_id": 3450013152046070669,
"result":
{
"wineNameCn": "銀色高地闕歌乾紅",
"hasdetail":0
}
}
識別出詳細資訊,hasdetail = 1:

{
"log_id": 2495538539661269738,
"result": {
"classifyByColor": "紅葡萄酒/Red Wine",
"subRegionCn": "梅多克",
"wineNameCn": "拉圖嘉利莊園紅葡萄酒(正牌)",
"subRegionEn": "Medoc",
"regionEn": "Bordeaux",
"color": "深紫紅色/Dark Violet",
"wineNameEn": "Chateau La Tour Carnet",
"hasdetail": 1,
"wineryCn": "拉圖嘉利莊園",
"classifyBySugar": "幹型/Dry",
"tasteTemperature": "16-18℃",
"regionCn": "波爾多",
"wineryEn": "Chateau La Tour-Carnet",
"grapeCn": "",
"grapeEn": "",
"countryCn": "法國",
"countryEn": "France",
"description": "此酒充滿紅果和黑果味道,並帶有礦物質和花香(紫羅蘭,玫瑰),混合些許香草氣息,單寧柔軟,餘香悠長。在口中留下清新的味道,香料和香草味道縈繞口中。"
}
}
貨幣識別
識別影象中的貨幣型別,以紙幣為主,正反面均可準確識別,介面返回貨幣的名稱、程式碼、面值、年份資訊;可識別各類近代常見貨幣,如美元、歐元、英鎊、法郎、澳大利亞元、俄羅斯盧布、日元、韓元、泰銖、印尼盧比等。

注意:圖片中貨幣要清晰可見,示例圖片如下

img

""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

image = get_file_content('example.jpg')

""" 呼叫貨幣識別 """
client.currency(image);
貨幣識別 請求引數詳情

引數名稱 是否必選 型別 說明
image 是 string 影象資料,base64編碼,要求base64編碼後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/png/bmp格式
貨幣識別 返回資料引數詳情

欄位 是否必選 型別 說明
log_id 是 uint64 請求標識碼,隨機數,唯一
result 是 dict 識別結果
+hasdetail 是 unit 判斷是否返回詳細資訊(除貨幣名稱之外的其他欄位),含有返回1,不含有返回0
+currencyName 是 string 貨幣名稱,無法識別返回空,示例:新加坡元
+currencyCode 否 string 貨幣程式碼,hasdetail = 0時,表示無法識別,該欄位不返回,示例:SGD
+currencyDenomination 否 string 貨幣面值,hasdetail = 0時,表示無法識別,該欄位不返回,示例:50元
+year 否 string 貨幣年份,hasdetail = 0時,表示無法識別,該欄位不返回,示例:2004年
貨幣識別 返回示例

{
"log_id": 4247844653395235754,
"result": {
"currencyName": "美元",
"hasdetail": 1,
"currencyCode": "USD",
"year": "2001年",
"currencyDenomination": "50美元"
}
}
人臉識別
人臉檢測
能力介紹
介面能力

人臉檢測:檢測圖片中的人臉並標記出位置資訊;

人臉關鍵點:展示人臉的核心關鍵點資訊,及150個關鍵點資訊。

人臉屬性值:展示人臉屬性資訊,如年齡、性別等。

人臉質量資訊:返回人臉各部分的遮擋、光照、模糊、完整度、置信度等資訊。

業務應用

典型應用場景:如人臉屬性分析,基於人臉關鍵點的加工分析,人臉營銷活動等。

說明:檢測響應速度,與圖片中人臉數量相關,人臉數量較多時響應時間會有些許延長。

質量檢測

如果需要判斷一張圖片中的人臉,是否符合後續識別或者對比的條件,可以使用此介面,在請求時在face_field引數中請求quality。基於返回結果quality中,以下欄位及對應閾值,進行質量檢測的判斷,以保證人臉質量符合後續業務操作要求。

指標 欄位與解釋 推薦數值界限
遮擋範圍 occlusion,取值範圍[0~1],0為無遮擋,1是完全遮擋 含有多個具體子欄位,表示臉部多個部位 通常用作判斷頭髮、墨鏡、口罩等遮擋 left_eye : 0.6, #左眼被遮擋的閾值 right_eye : 0.6, #右眼被遮擋的閾值 nose : 0.7, #鼻子被遮擋的閾值 mouth : 0.7, #嘴巴被遮擋的閾值 left_cheek : 0.8, #左臉頰被遮擋的閾值 right_cheek : 0.8, #右臉頰被遮擋的閾值 chin_contour : 0.6, #下巴被遮擋閾值
模糊度範圍 blur,取值範圍[0~1],0是最清晰,1是最模糊 小於0.7
光照範圍 illumination,取值範圍[0~255] 臉部光照的灰度值,0表示光照不好 以及對應客戶端SDK中,YUV的Y分量 大於40
姿態角度 Pitch:三維旋轉之俯仰角度[-90(上), 90(下)] Roll:平面內旋轉角[-180(逆時針), 180(順時針)] Yaw:三維旋轉之左右旋轉角[-90(左), 90(右)] 分別小於20度
人臉完整度 completeness(0或1),0為人臉溢位影象邊界, 1為人臉都在影象邊界內 視業務邏輯判斷
人臉大小 人臉部分的大小 建議長寬畫素值範圍:8080~200200 人臉部分不小於100*100畫素
呼叫方式
請求URL資料格式

向API服務地址使用POST傳送請求,必須在URL中帶上引數access_token,可通過後臺的API Key和Secret Key生成,具體方式請參考“Access Token獲取”。

示例程式碼

Bash

PHP

JAVA

Python

Cpp

C#

Node

!/bin/bash

curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度雲應用的AK】&client_secret=【百度雲應用的SK】'
注意:access_token的有效期為30天,切記需要每30天進行定期更換,或者每次請求都拉取新token;

例如此介面,使用HTTPS POST傳送:

https://aip.baidubce.com/rest/2.0/face/v1/merge?access_token=24.f9ba9c5341b67688ab4added8bc91dec.2592000.1485570332.282335-8574074
POST中Body的引數,按照下方請求引數說明選擇即可。

提示:如果您為百度雲老使用者,正在使用其他非AI的服務,可以參考百度雲AKSK鑑權方式傳送請求,雖然請求方式和鑑權方法和本文所介紹的不同,但請求引數和返回結果一致。

請求說明
注意事項:

請求體格式化:Content-Type為application/json,通過json格式化請求體。

Base64編碼:請求的圖片需經過Base64編碼,圖片的base64編碼指將圖片資料編碼成一串字串,使用該字串代替影象地址。您可以首先得到圖片的二進位制,然後用Base64格式編碼即可。需要注意的是,圖片的base64編碼是不包含圖片頭的,如data:image/jpg;base64,

圖片格式:現支援PNG、JPG、JPEG、BMP,不支援GIF圖片

人臉識別介面分為V2和V3兩個版本,本文件為V3版本介面的說明文件,請確認您在百度雲後臺獲得的是V3版本介面許可權,再來閱讀本文件。

辨別介面版本的方法是:在百度雲後臺進入【應用列表】,點選【應用名稱】,在【API列表】中可以看到【請求地址】,若請求地址中帶有【v3】標識,則您具有的是v3許可權,可以閱讀本文件;若請求地址中帶有【v2】標識,則您具有的是v2許可權,應該去閱讀v2文件。

請求示例

HTTP方法:POST

請求URL: https://aip.baidubce.com/rest/2.0/face/v3/detect

URL引數:

引數 值
access_token 通過API Key和Secret Key獲取的access_token,參考“Access Token獲取”
Header:

引數 值
Content-Type application/json
Body中放置請求引數,引數詳情如下:

請求引數

引數 必選 型別 說明
image 是 string 圖片資訊(總資料大小應小於10M),圖片上傳方式根據image_type來判斷
image_type 是 string 圖片型別 BASE64:圖片的base64值,base64編碼後的圖片資料,編碼後的圖片大小不超過2M; URL:圖片的 URL地址( 可能由於網路等原因導致下載圖片時間過長); FACE_TOKEN: 人臉圖片的唯一標識,呼叫人臉檢測介面時,會為每個人臉圖片賦予一個唯一的FACE_TOKEN,同一張圖片多次檢測得到的FACE_TOKEN是同一個。
face_field 否 string 包括age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,race,quality,eye_status,emotion,face_type資訊 逗號分隔. 預設只返回face_token、人臉框、概率和旋轉角度
max_face_num 否 uint32 最多處理人臉的數目,預設值為1,僅檢測圖片中面積最大的那個人臉;最大值10,檢測圖片中面積最大的幾張人臉。
face_type 否 string 人臉的型別 LIVE表示生活照:通常為手機、相機拍攝的人像圖片、或從網路獲取的人像圖片等 IDCARD表示身份證晶片照:二代身份證內建晶片中的人像照片 WATERMARK表示帶水印證件照:一般為帶水印的小圖,如公安網小圖 CERT表示證件照片:如拍攝的身份證、工卡、護照、學生證等證件圖片 預設LIVE
liveness_control 否 string 活體控制 檢測結果中不符合要求的人臉會被過濾 NONE: 不進行控制 LOW:較低的活體要求(高通過率 低攻擊拒絕率) NORMAL: 一般的活體要求(平衡的攻擊拒絕率, 通過率) HIGH: 較高的活體要求(高攻擊拒絕率 低通過率) 預設NONE
說明:face_field引數,預設只返回人臉框、概率和旋轉角度,age等更多屬性,請在此引數中新增。

示例程式碼

提示一:使用示例程式碼前,請記得替換其中的示例Token、圖片地址或Base64資訊。

提示二:部分語言依賴的類或庫,請在程式碼註釋中檢視下載地址。

Bash

PHP

JAVA

Python

Cpp

C#

人臉檢測與屬性分析
curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=【呼叫鑑權介面獲取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","image_type":"FACE_TOKEN","face_field":"faceshape,facetype"}' -H 'Content-Type:application/json; charset=UTF-8'
返回說明
返回引數

返回結果

欄位 必選 型別 說明
face_num 是 int 檢測到的圖片中的人臉數量
face_list 是 array 人臉資訊列表,具體包含的引數參考下面的列表。
+face_token 是 string 人臉圖片的唯一標識
+location 是 array 人臉在圖片中的位置
++left 是 double 人臉區域離左邊界的距離
++top 是 double 人臉區域離上邊界的距離
++width 是 double 人臉區域的寬度
++height 是 double 人臉區域的高度
++rotation 是 int64 人臉框相對於豎直方向的順時針旋轉角,[-180,180]
+face_probability 是 double 人臉置信度,範圍【0~1】,代表這是一張人臉的概率,0最小、1最大。
+angle 是 array 人臉旋轉角度引數
++yaw 是 double 三維旋轉之左右旋轉角[-90(左), 90(右)]
++pitch 是 double 三維旋轉之俯仰角度[-90(上), 90(下)]
++roll 是 double 平面內旋轉角[-180(逆時針), 180(順時針)]
+age 否 double 年齡 ,當face_field包含age時返回
+beauty 否 int64 美醜打分,範圍0-100,越大表示越美。當face_fields包含beauty時返回
+expression 否 array 表情,當 face_field包含expression時返回
++type 否 string none:不笑;smile:微笑;laugh:大笑
++probability 否 double 表情置信度,範圍【0~1】,0最小、1最大。
+face_shape 否 array 臉型,當face_field包含face_shape時返回
++type 否 double square: 正方形 triangle:三角形 oval: 橢圓 heart: 心形 round: 圓形
++probability 否 double 置信度,範圍【0~1】,代表這是人臉形狀判斷正確的概率,0最小、1最大。
+gender 否 array 性別,face_field包含gender時返回
++type 否 string male:男性 female:女性
++probability 否 double 性別置信度,範圍【0~1】,0代表概率最小、1代表最大。
+glasses 否 array 是否帶眼鏡,face_field包含glasses時返回
++type 否 string none:無眼鏡,common:普通眼鏡,sun:墨鏡
++probability 否 double 眼鏡置信度,範圍【0~1】,0代表概率最小、1代表最大。
+eye_status 否 array 雙眼狀態(睜開/閉合) face_field包含eye_status時返回
++left_eye 否 double 左眼狀態 [0,1]取值,越接近0閉合的可能性越大
++right_eye 否 double 右眼狀態 [0,1]取值,越接近0閉合的可能性越大
+emotion 否 array 情緒 face_field包含emotion時返回
++type 否 string angry:憤怒 disgust:厭惡 fear:恐懼 happy:高興 sad:傷心 surprise:驚訝 neutral:無表情 pouty: 撅嘴 grimace:鬼臉
++probability 否 double 情緒置信度,範圍0~1
+face_type 否 array 真實人臉/卡通人臉 face_field包含face_type時返回
++type 否 string human: 真實人臉 cartoon: 卡通人臉
++probability 否 double 人臉型別判斷正確的置信度,範圍【0~1】,0代表概率最小、1代表最大。
+landmark 否 array 4個關鍵點位置,左眼中心、右眼中心、鼻尖、嘴中心。face_field包含landmark時返回
+landmark72 否 array 72個特徵點位置 face_field包含landmark72時返回
+landmark150 否 array 150個特徵點位置 face_field包含landmark150時返回
+quality 否 array 人臉質量資訊。face_field包含quality時返回
++occlusion 否 array 人臉各部分遮擋的概率,範圍[0~1],0表示完整,1表示不完整
+++left_eye 否 double 左眼遮擋比例,[0-1] ,1表示完全遮擋
+++right_eye 否 double 右眼遮擋比例,[0-1] , 1表示完全遮擋
+++nose 否 double 鼻子遮擋比例,[0-1] , 1表示完全遮擋
+++mouth 否 double 嘴巴遮擋比例,[0-1] , 1表示完全遮擋
+++left_cheek 否 double 左臉頰遮擋比例,[0-1] , 1表示完全遮擋