齊護K210系列教程(三十二)_在線模型訓練

在線模型訓練

  • 概念理解
  • 準備工作
  • 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 標注圖像

打開我們剛才下好的工具軟件,進行標注。

分類圖像不需要操作此步。
在這里插入圖片描述

  1. 選擇一個需要標類別圖片的目錄

  2. 選擇輸出標文件的目錄

  3. 點標注,框住要識別的物體如圖所示
    在這里插入圖片描述

  4. 輸入標簽名之后點OK,然后點保存。

  5. 通過切換圖片對目錄下所有圖片進行標注。

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分類檢測上傳數據

創建親的數據集,標類型選擇分類。
在這里插入圖片描述

點擊查看后采集數據
在這里插入圖片描述

  1. 為分類添加標簽名
  2. 選中一個標簽為該標簽上傳圖片。
  3. 選擇該分類所有圖片
  4. 上傳圖片
    在這里插入圖片描述

再次點數據集,查看剛剛創建的數據集是否正確。

切換標簽,檢查一下選擇的圖片是否正確。
在這里插入圖片描述

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14927.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 152. 乘積最大子數組

. - 力扣(LeetCode) 給你一個整數數組 nums ,請你找出數組中乘積最大的非空連續 子數組 (該子數組中至少包含一個數字),并返回該子數組所對應的乘積。 測試用例的答案是一個 32-位 整數。 示例 1: 輸入…

MongoDB關系處理:優化數據管理、提升性能的最佳實踐

MongoDB 是一種 NoSQL 數據庫,它使用文檔模型來存儲數據,這與關系型數據庫(RDBMS)有顯著不同。本文將詳細介紹 MongoDB 中的關系處理,包括基本語法、命令、示例、應用場景、注意事項和總結。 基本語法 文檔和集合 M…

30.靜態代碼分析工具clang-tidy

文章目錄 基本介紹安裝clang-tidy使用clang-tidy配置文件和格式文件配置文件格式文件使用配置文件和格式化文件 在代碼中設置排除clang-tidy檢測reference 歡迎訪問個人網絡日志🌹🌹知行空間🌹🌹 基本介紹 clang-tidy 是一個基于…

JDBC總結

目錄 JDBC(java database connection) JDBC連接數據庫步驟: 1. 在項目中添加jar文件,如圖所示 2.加載驅動類 向數據庫中插入數據代碼示例: 第一種: 第二種: 查詢操作 : 第一種: 第二種: JDBC(java database connection) java數據庫連接.api(應用程序編程接口) ,可…

Java中的垃圾回收機制

在Java編程語言中,垃圾回收(Garbage Collection, GC)機制是內存管理的一個核心部分。它的主要目標是自動釋放那些不再被程序使用的對象所占用的內存空間,從而防止內存泄漏,并確保程序的穩定運行。下面,我將…

一文講清!傳統企業的進銷存管理難題該怎么解決?

有沒有開源的進銷存軟件啊? 確實,市面上存在不少開源的進銷存軟件。但客觀地講,開源軟件往往面臨著安全隱患,因為代碼公開,容易成為黑客攻擊的目標。此外,開源軟件的功能模塊通常較為固定,難以…

初出茅廬的小李博客之MQTT.fx客戶端接入EMQX Platform

EMQX Platform 概覽 EMQX Platform 是 EMQ 推出的一款面向物聯網領域的 MQTT 消息中間件產品。作為全球首個 MQTT 5.0 消息云服務,EMQX Platform 提供了一站式運維代管、獨有隔離環境的 MQTT 消息服務。在萬物互聯的時代,EMQX Platform 可以幫助您快速構…

python數據類型之列表

目錄 1.創建列表 2.列表基礎操作 常用操作 對列表元素順序隨機打亂 列表下標和切片 字符串分割為列表 列表位移 列表切片替換 3.列表內置方法 4.列表排序 簡單排序 使用key參數按指定規則排序 二維列表排序 自定義排序規則函數 5.列表排序算法 選擇排序 柱狀圖…

C# 利用Xejen框架源碼,我們來開發一個基于Dapper技術的數據庫通用的幫助訪問類,通過Dapper的增刪改查,可以訪問Sqlite數據庫

Dapper 是一個輕量級的對象關系映射(ORM)工具,適用于 .NET 平臺。它由 Stack Overflow 團隊開發,旨在提供簡單、高效的數據訪問功能。與其他重量級 ORM(如 Entity Framework)相比,Dapper 更加輕…

基于Python圖像增強算法:低光增強+圖像修復+超分辨率重建

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 在圖像處理與計算機視覺領域,圖像增強技術是提高圖像質量和可用性的重要手段。在實…

單片機io擴展

輸入輸出擴展 i2c擴展 方案1:PCF8575 PCF8575雙向IO口擴展模塊 16位輸入輸出I2C通訊 單片機級聯擴展板 方案2:PCA955A 輸出擴展 74HC595 io口擴展模塊輸出口擴展 參考鏈接 中微愛芯發[2004] 1號           簽發人: (szlcsc.com)https://…

? Vscode和Idea都可以使用的-AI插件(官方-百度出的)

? Vscode和Idea都可以使用的-AI插件(官方-百度出的) 最新AI特別火,給大家推薦一下最新出的VScode插件,輔助我們寫代碼! 1、下載地址: > https://comate.baidu.com/zh/shopping?inviteCodefkzlak8f …

jmeter中Ultimate Thread Group設計梯度壓測場景

Ultimate Thread Group Ultimate Thread Group 線程組是模擬波浪式壓測或者階梯式負載壓測 1、Start Threads Count:線程數量 2、Initial Delay,sec:每組開始添加到測試執行之前的延遲(xx秒開始啟動線程) 3、Startu…

python中的線程并行

文章目錄 1. 單線程2. 線程池ThreadPoolExecutor 1. 單線程 現在有1154張圖片需要順時針旋轉后保存到本地,一般使用循環1154次處理,具體代碼如下所示,img_paths中存儲1154個圖片路徑,該代碼段耗時約用97ms。 t1time.time() for …

Python筑基之旅-MySQL數據庫(四)

目錄 一、數據表操作 1、新增記錄 1-1、用mysql-connector-python庫 1-2、用PyMySQL庫 1-3、用PeeWee庫 1-4、用SQLAlchemy庫 2、刪除記錄 2-1、用mysql-connector-python庫 2-2、用PyMySQL庫 2-3、用PeeWee庫 2-4、用SQLAlchemy庫 3、修改記錄 3-1、用mysql-conn…

Java輕松轉換Markdown文件到Word和PDF文檔

Markdown 憑借其簡潔易用的特性,成為創建和編輯純文本文檔的常用選擇。但某些時候我們需要更加精致的展示效果,例如在專業分享文檔或打印成離線使用的紙質版時,就需要將Markdown文件以其他固定的文檔格式呈現。通過將 Markdown 轉換為 Word 和…

OpenHarmony實戰開發——網絡組件axios可以在OpenHarmony上使用了

什么是axios 上古瀏覽器頁面在向服務器請求數據時,因為返回的是整個頁面的數據,頁面都會強制刷新一下,這對于用戶來講并不是很友好。并且我們只是需要修改頁面的部分數據,但是從服務器端發送的卻是整個頁面的數據,十分…

高效寫代碼java-推薦插件1(格式轉化 ConverterX )-日后待更新

ConverterX 主要功能:格式轉化 字符串格式轉換 日期轉換 Json格式轉義 字符格式 快捷鍵 ctrl shiftS Upper(CODEEASE)字符串全部變成大寫Lower(codeease)字符串全部變成小寫Camel(codeEase)字符串變成小駝峰ClassCaemel(CodeEase)字符串變成大駝峰UnderlineUpper(CODE_EAS…

項目管理:Jira,禪道,GitHub Issues對比

Jira、禪道(ZenTao)和GitHub Issues都是項目管理工具,但它們在功能、適用場景和特性上有所不同。以下是它們之間的對比: 功能: Jira:是一款強大的項目管理工具,適用于各種項目,尤其…

Vue3組件間通信通過回調函數傳遞數據

Vue3組件間通信通過回調函數傳遞數據 一、前言1、使用場景2、實現方法1. 父組件中定義回調方法2. 子組件中觸發回調方法 二、結論 一、前言 在 Vue 3 中,組件之間的通信是一個重要的主題。在許多情況下,你可能需要從子組件向父組件傳遞數據或觸發父組件…