1. 創建模型
瀏覽器打開
https://ai.baidu.com/easydl/image_classification
點擊開始訓練,然後點擊創建模型,選擇公司或個人,填寫對應資料,如下圖:
點擊下一步,可以看到模型已經創建成功
2.創建數據集
點擊我的數據集——>創建數據集
輸入數據集名稱,然後上傳壓縮包,圖片和壓縮包需要遵守右邊的規定。
然後點擊上傳壓縮包——>保存
然後等待數據集處理完成,這個時間非常短。
可以看到上傳了54張圖
3.訓練模型
點擊訓練模型——>選擇剛纔創建好的模型——>勾選雲服務
這裏根據自己的需求選擇算法和訓練方式,對應的算法和訓練方式後面會有詳細的說明。
調參功能需要先申請開通權限才能使用。
還可以勾選離線服務,可以在無網絡的情況下使用模型
然後點擊添加訓練數據,選擇訓練集,添加標籤。
可以看到底部已經顯示:已經選擇1個數據集的2個分類。這裏還可以從其他數據中添加標籤。
添加完成後點擊取消,回到之前的頁面,如果有需要,可以添加識別結果爲其他的分類,當檢測到的結果不在分類標籤中,都會歸爲【其他】分類。從之後的實測檢驗情況來看,建議最好不要勾選。
然後點擊開始訓練,這樣就開始訓練了。
4.校驗
等待訓練結束後,如下圖所示:
點擊校驗——>啓動模型校驗服務
等待一會,進入到如下界面:
點擊添加圖片,然後選擇校驗圖片,可以看到下圖:
分類結果不正確的情況下,點擊糾正識別結果,把圖片放到對應的分類和數據集中,然後提交。
5.上線
當模型經過自測檢驗,能達到預期的識別率的時候,可以點擊申請上線的的按鈕。
填寫服務名稱與接口地址,然後點擊提交申請。
可以看到狀態爲審覈中,等待審覈通過。
期間可以在 我的模型全部版本中進行查看
可以看到申請狀態爲審覈成功
點擊服務詳情,再點擊立即使用
進入到如下頁面
點擊創建應用,然後填入名稱和描述,如下圖:
點擊立即創建,創建成功後再點擊返回應用列表,回到如下界面:
可以看到API Key和Secret Key
6.獲取access_token
使用get請求,通過下面的鏈接可以拿到access_token
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【API Key】&client_secret=【Secret Key】
返回結果:
{
"refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",
"expires_in": 2592000,
"scope": "public wise_adapt",
"session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",
"access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",
"session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"
}
access_token: 要獲取的Access Token
expires_in: Access Token的有效期(秒爲單位,一般爲1個月)
7.進行圖像分類
import requests
import time
import base64
access_token = "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074"
request_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/tools?access_token={0}".format(access_token)
with open('test_dao.jpg', 'rb') as f:
image_base64 = base64.b64encode(f.read())
image_base64_data = image_base64.decode()
data = {
"image":image_base64_data,
"top_num":"5"
}
start = time.time()
result = requests.post(request_url, json=data).text
end = time.time()
print('耗時====',end - start)
print(result)
輸出結果如下:
耗時==== 2.406568765640259
{"log_id":8743601095974003063,"results":[{"name":"[default]","score":0.8629010319709778},{"name":"knife","score":0.12168608605861664},{"name":"screwdriver","score":0.015412857756018639}]}
name是圖像分類名稱
score是可信度