一、功能介紹:json
EasyDL平臺支持定製圖像分類、物體檢測、圖像分割三類模型。三類模型的功能區別以下:安全
圖像分類:識別一張圖中是不是某類物體/狀態/場景,適用於圖片內容單1、須要給整張圖片分類的場景併發
物體檢測:檢測圖中每一個物體的位置、名稱。適合圖中有多個主體要識別、或要識別主體位置及數量的場景app
圖像分割:對比物體檢測,支持用多邊形標註訓練數據,模型可像素級識別目標。適合圖中有多個主體、需識別其位置或輪廓的場景機器學習
二、訓練及目標檢測:高併發
目標工具
本案例中使用EasyDL物體檢測智能標註郵車。學習
2.1 上傳並標註數據測試
首先須要創建郵車數據集,步驟以下動畫
① 設計標籤
在上傳以前肯定想要識別哪幾種物體,並上傳含有這些物體的圖片。每一個標籤對應想要在圖片中識別出的一種物體。在本例中只有一個標籤,就是郵車。
② 準備圖片
基於設計好的標籤準備圖片:
每種要識別的物體在全部圖片中出現的數量最好大於50
若是某些標籤的圖片具備類似性,須要增長更多圖片
一個模型的圖片總量限制4張~10萬張
圖片格式要求:
一、目前支持圖片類型爲png、jpg、bmp、jpeg,圖片大小限制在4M之內
二、圖片長寬比在3:1之內,其中最長邊小於4096px,最短邊大於30px
圖片內容要求:
一、訓練圖片和實際場景要識別的圖片拍攝環境一致,舉例:若是實際要識別的圖片是攝像頭俯拍的,那訓練圖片就不能用網上下載的目標正面圖片
二、每一個標籤的圖片須要覆蓋實際場景裏面的可能性,如拍照角度、光線明暗的變化,訓練集覆蓋的場景越多,模型的泛化能力越強
本例中從網上找了20多張不一樣角度的郵車圖片。
③上傳和標註圖片
先在【建立數據集】頁面建立數據集:
若是訓練數據須要多人分工標註,能夠建立多個數據集。將訓練數據分批上傳到這些數據集後,再將數據集"共享"給本身的小夥伴,同步進行標註。
再進入【數據標註/上傳】:
一、選擇數據集
二、上傳已準備好的圖片
三、在標註區域內進行標註
首先在標註框上方找到工具欄,點擊標註按鈕在圖片中拖動畫框,圈出要識別的目標
而後在右側的標籤欄中,增長新標籤,或選擇已有標籤
2.二、建立模型
在導航【建立模型】中,填寫模型名稱、聯繫方式、功能描述等信息,便可建立模型。
模型建立成功後,能夠在【個人模型】中看到剛剛建立的模型。
目前單個用戶在每種類型的模型下最多可建立10個模型,每一個模型均支持屢次訓練。
2.3 訓練模型
數據提交後,能夠在導航中找到【訓練模型】,啓動模型訓練:
① 選擇模型
選擇這次訓練的模型
② 添加訓練數據
先選擇數據集,再按標籤選擇數據集裏的圖片。可從多個數據集選擇圖片(相同標籤的訓練圖片會被合併)
訓練時間與數據量大小有關,1000張圖片可能須要幾個小時訓練,請耐心等待
2.4 校驗模型效果
可經過模型評估報告或模型校驗瞭解模型效果:
模型評估報告:訓練完成後,能夠在【個人模型】列表中看到模型效果,以及詳細的模型評估報告。若是單個標籤的圖片量在100張之內,這個數據基本參考意義不大
模型在線校驗:實際效果能夠在左側導航中找到【校驗模型】功能校驗,或者發佈爲接口後測試。
若是對模型效果不滿意,能夠經過擴充數據、調整標註等方法進行模型迭代
2.5 發佈模型—在線API
發佈模型生成在線API
訓練完畢後就能夠在左側導航欄中找到【發佈模型】,發佈模型表單頁面須要自定義接口地址後綴、服務名稱,便可申請發佈
申請發佈後,一般的審覈週期爲T+1,即當天申請次日能夠審覈完成。
2.6 接口賦權
在正式使用以前,還須要作的一項工做爲接口賦權,須要登陸EasyDL控制檯中建立一個應用,得到由一串數字組成的appid,而後就能夠參考接口文檔正式使用了
同時支持在EasyDL控制檯-雲服務權限管理中爲第三方用戶配置權限
調用代碼以下:
def youche(filename):
request_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/detection/youche"
# 二進制方式打開圖片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read())
params = dict()
params['image'] = img
params = urllib.parse.urlencode(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)
三、測試及結論:
經過測試發現總體識別效率很快,準確性也很好。
EasyDL對比傳統的圖像語義分割方式具備以下一些優點:
訓練模型:無需機器學習專業知識,只需提供含目標物體的圖片並用多邊形標註物體便可訓練模型,自動識別圖中全部目標物體的名稱、位置及輪廓
校驗模型:支持上傳圖片校驗模型效果、查看詳細的效果評估報告,進而分析模型分割有誤的圖片並有針對性地補充訓練數據
發佈模型:可將模型以雲端API發佈後集成使用,具備完善的鑑權、流控等安全機制,GPU集羣穩定承載高併發請求
能夠應用於專業場景的圖像分析,好比在衛星圖像中識別建築、道路、森林,或在醫學圖像中定位病竈、測量面積等。