在線模型訓練
- 概念理解
- 準備工作
- 1 采集圖像
- 1.1 圖像要求
- 1.2 使用K210采集圖片
- 2 標注圖像
- 3 打包數據集
- 4 上傳數據
- 4.1創建項目
- 4.1.1圖像分類創建項目
- 4.1.2圖像檢測創建項目
- 4.2上傳數據
- 4.2.1分類檢測上傳數據
- 4.2.2圖像檢測上傳數據
- 5 訓練模型
- 6 部署模型以及測試
- 7 測試效果
- 7.1圖像檢測
- 7.2 圖像分類
- 8 齊護編程 程序
- 8.1圖像檢測
- 8.2 圖像分類
- 9.課程資源下載
- 9-1 程序
- 9-2 模型
- 聯系我們
我們可以通過Maixhub網站提供的模型訓練功能,來實現分類模型和目標檢測模型的訓練,需要準備好需要訓練的數據集。
概念理解
首先我們要理解兩個應用概念:
目標分類: 識別圖片所屬的種類,返回的數據只有類別和概率值。
目標檢測:識別目標,返回數據有物品的種類、概率值,以及位置信息等
簡單理解,如果不需要檢測物體坐標輸出的, 用目標分類, 需要坐標則目標檢測。
準備工作
請先下載要使用的工具 下載
1 采集圖像
1.1 圖像要求
采集的圖像分辨率為:224x224
采集圖像數量
- 目標分類: 每類圖片數量不低于40張
- 目標檢測: 每類圖片數量不低于100張
1.2 使用K210采集圖片
使用以下腳本下載到AIstart k210主板內,復制到文本文件,然后存成main.py放入到SD卡內。
這是一個拍照存到SD卡的程序,對著我們要識別的物體拍照,盡量多角度的拍,跟后面實際要識別的角度、環境光等越接近拍下來,后面就識別精度越高,自動存在AIstart的SD卡內,后面我們要用到。
def capture_main(key):def draw_string(img, x, y, text, color, scale, bg=None , full_w = False):if bg:if full_w:full_w = img.width()else:full_w = len(text)*8*scale+4img.draw_rectangle(x-2,y-2, full_w, 16*scale, fill=True, color=bg)img = img.draw_string(x, y, text, color=color,scale=scale)return imgdef del_all_images():os.chdir("/sd")images_dir = "cap_images"if images_dir in os.listdir():os.chdir(images_dir)types = os.listdir()for t in types:os.chdir(t)files = os.listdir()for f in files:os.remove(f)os.chdir("..")os.rmdir(t)os.chdir("..")os.rmdir(images_dir)# del_all_images()os.chdir("/sd")dirs = os.listdir()images_dir = "cap_images"last_dir = 0for d in dirs:if d.startswith(images_dir):if len(d) > 11:n = int(d[11:])if n > last_dir:last_dir = nimages_dir = "{}_{}".format(images_dir, last_dir+1)print("save to ", images_dir)if images_dir in os.listdir():img = image.Image()img = draw_string(img, 2, 200, "please del cap_images dir", color=lcd.WHITE,scale=1, bg=lcd.RED)lcd.display(img)sys.exit(1)os.mkdir(images_dir)last_cap_time = 0last_btn_status = 1save_dir = 0save_count = 0os.mkdir("{}/{}".format(images_dir, save_dir))while(True):img0 = sensor.snapshot()if set_windowing:img = image.Image()img = img.draw_image(img0, (img.width() - set_windowing[0])//2, img.height() - set_windowing[1])else:img = img0.copy()# img = img.resize(320, 240)if key.value() == 0:time.sleep_ms(30)if key.value() 0 and (last_btn_status 1) and (time.ticks_ms() - last_cap_time > 500):last_btn_status = 0last_cap_time = time.ticks_ms()else:if time.ticks_ms() - last_cap_time > 5000:img = draw_string(img, 2, 200, "release to change type", color=lcd.WHITE,scale=1, bg=lcd.RED)else:img = draw_string(img, 2, 200, "release to capture", color=lcd.WHITE,scale=1, bg=lcd.RED)if time.ticks_ms() - last_cap_time > 2000:img = draw_string(img, 2, 160, "keep push to change type", color=lcd.WHITE,scale=1, bg=lcd.RED)else:time.sleep_ms(30)if key.value() 1 and (last_btn_status 0):if time.ticks_ms() - last_cap_time > 5000:img = draw_string(img, 2, 200, "change 齊護編程ject type", color=lcd.WHITE,scale=1, bg=lcd.RED)lcd.display(img)time.sleep_ms(1000)save_dir += 1save_count = 0dir_name = "{}/{}".format(images_dir, save_dir)os.mkdir(dir_name)else:draw_string(img, 2, 200, "capture image {}".format(save_count), color=lcd.WHITE,scale=1, bg=lcd.RED)lcd.display(img)f_name = "{}/{}/{}.jpg".format(images_dir, save_dir, save_count)img0.save(f_name, quality=95)save_count += 1last_btn_status = 1img = draw_string(img, 2, 0, "will save to {}/{}/{}.jpg".format(images_dir, save_dir, save_count), color=lcd.WHITE,scale=1, bg=lcd.RED, full_w=True)lcd.display(img)del imgdel img0def main():try:capture_main(key)except Exception as e:print("error:", e)import uios = uio.StringIO()sys.print_exception(e, s)s = s.getvalue()img = image.Image()img.draw_string(0, 0, s)lcd.display(img)
main()
使用請參考這里
使用讀卡器從SD拷貝文件,刪除掉無效圖片。這里我拍了兩種物體,分別是我們的C02mini和TFT模塊,每種大概有100張左右。
2 標注圖像
打開我們剛才下好的工具軟件,進行標注。
分類圖像不需要操作此步。
-
選擇一個需要標類別圖片的目錄
-
選擇輸出標文件的目錄
-
點標注,框住要識別的物體如圖所示
-
輸入標簽名之后點OK,然后點保存。
-
通過切換圖片對目錄下所有圖片進行標注。
3 打包數據集
分類圖像不需要操作此步。
將圖片和標數據打包成zip文件
文件格式為 zip 壓縮包,大小500M以內
- 數據集格式:同 Pascal VOC 數據集
- 圖片數量限制為2000張,超出該數量的圖片會被忽略
- 壓縮包內應包含 images 文件夾和 xml 文件夾;一張圖片對應一個名字相同的 xml 標注文件
- 目錄結構:
標結果打包成兩個zip文件
4 上傳數據
4.1創建項目
4.1.1圖像分類創建項目
打開MaixHub,登錄后點擊模型訓練。填入項目名稱以及項目類型。根據自己需要選擇正確的項目類型。
進入項目后進行數據采集
4.1.2圖像檢測創建項目
創建時選擇項目類型為圖像檢測即可.
4.2上傳數據
4.2.1分類檢測上傳數據
創建親的數據集,標類型選擇分類。
點擊查看后采集數據
- 為分類添加標簽名
- 選中一個標簽為該標簽上傳圖片。
- 選擇該分類所有圖片
- 上傳圖片
再次點數據集,查看剛剛創建的數據集是否正確。
切換標簽,檢查一下選擇的圖片是否正確。
4.2.2圖像檢測上傳數據
上傳2~3步制作的zip數據包即可。
同樣也可以查看是否正確。
5 訓練模型
在數據集中選擇數據然后確定。
部署平臺選擇nncase
點擊,
輸入訓練名稱開始訓練。
等待模型訓練完成。
6 部署模型以及測試
點部署模型后選擇手動部署,下載對應模型。
下載解壓后得到三個文件
-
main.py 用于測試的程序文件
-
.kmodel模型文件,拷貝到SD卡內。
-
report.json 報告文件,內含錨點數據。
將.kmodel和main文件復制到SD卡進行測試。記得修改攝像頭垂直和水平鏡像
7 測試效果
7.1圖像檢測
7.2 圖像分類
8 齊護編程 程序
8.1圖像檢測
8.2 圖像分類
9.課程資源下載
9-1 程序
下載
9-2 模型
下載
聯系我們
掃碼或者點這里加群了解更多!
Created by qdprobot