女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

立創(chuàng)·梁山派開發(fā)板-21年電賽F題-送藥小車-K210的KPU數(shù)字識別訓(xùn)練

jf_31863339 ? 來源:jf_31863339 ? 作者:jf_31863339 ? 2023-07-31 10:29 ? 次閱讀

送藥小車代碼倉庫:https://gitee.com/lcsc/medical_car

更好的觀看體驗請去:12_K210的KPU數(shù)字識別訓(xùn)練

送藥小車立創(chuàng)開源平臺資料:https://oshwhub.com/li-chuang-kai-fa-ban/21-dian-sai-f-ti-zhi-neng-song-yao-xiao-che

K210的KPU數(shù)字識別訓(xùn)練

K210自帶 KPU(通用的神經(jīng)網(wǎng)絡(luò)處理器),非常適合用來作數(shù)字識別。要采集的數(shù)據(jù)集圖像尺寸為 224*224(這是目前最常用的網(wǎng)絡(luò)數(shù)據(jù)大小),為了讓結(jié)果更準確,所以要訓(xùn)練的數(shù)據(jù)集要盡可能多,每種數(shù)字的數(shù)據(jù)量盡可能相等。但 k210 的算力也是有限的,他所能運行的模型也是有限的,對于 k210:運行 c 代碼時最大可以加載 6MB 左右的模型,運行 maixpy 的最小固件時,能加載 3MB 左右的模型,運行 maixpy 的最大固件時,能夠加載約 2MB 左右的模型。(值得注意的一點,模型大小和數(shù)據(jù)集沒有必然關(guān)系,所以不用擔(dān)心數(shù)據(jù)集采集太多導(dǎo)致K210的內(nèi)存裝載不下的問題,選好Alpha參數(shù)就能確定模型的大小)

簡單來說,實現(xiàn)K210的數(shù)字識別就是三步:

采集數(shù)據(jù)集

對數(shù)據(jù)集進行標注

開始訓(xùn)練并得到

采集數(shù)據(jù)集

因為我們運算是在 K210 本地的,圖像來源也是 K210 自帶的攝像頭,為了讓結(jié)果更準確,可以用 python 編寫一個 K210 的拍照程序,采集固定的 224*224 圖像并保存到 TF 卡里面。最好是搭好小車框架后,選好攝像頭的安裝位置和角度,將拍照程序保存到 K210 的運行 sd 卡里面。當按下按鈕的時候就進行當前圖像的保存。

拍照的代碼如下所示(具體代碼在2_Code->application->sensor->k210->pyconde-take_picture.py):

import sensor, image, time, lcd, struct, ustruct, _thread
from maix import KPU,GPIO, I2S, FFT
import gc,os
from machine import Timer,PWM,I2C
from fpioa_manager import fm

lcd.init()                          # Init lcd display
lcd.clear(lcd.RED)                  # Clear lcd screen.

sensor.reset()                      # Reset and initialize the sensor.
sensor.reset(freq=24000000, dual_buff=1)                # 設(shè)置攝像頭頻率 24M 開啟雙緩沖模式 會提高幀率 但內(nèi)存占用增加
sensor.set_auto_exposure(1)         # 設(shè)置自動曝光
sensor.set_auto_gain(False) # 顏色跟蹤必須關(guān)閉自動增益
sensor.set_auto_whitebal(False) # 顏色跟蹤必須關(guān)閉白平衡
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)

sensor.set_windowing((224,224)) # 分辨率為B224X224

sensor.set_vflip(1)

sensor.skip_frames(time = 2000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.

#要拍攝不同的數(shù)字就切換這里的數(shù)字
need_number_ficture= 1
#保存文件名計數(shù)
save_count =0

#注冊IO,注意高速GPIO口才有中斷
fm.register(35, fm.fpioa.GPIO0)
fm.register(16, fm.fpioa.GPIOHS0)
#構(gòu)建案件對象
KEY=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)

#按鍵標志位
key_node = 0
key_press_long = 0

#中斷回調(diào)函數(shù)
def fun(KEY):
    global state,key_node,need_number_ficture
    temp_count = 0

    time.sleep_ms(10) #消除抖動
    while KEY.value()== 0:
        key_node = 1
        time.sleep_ms(10) #長按延時
        #長按檢測計數(shù)
        temp_count=temp_count+1
    if temp_count >= 50:
        key_node = 0

        beep.duty(50)
        time.sleep_ms(500)
        beep.duty(0)
        time.sleep_ms(100)

        need_number_ficture=need_number_ficture+1
        if(need_number_ficture == 9):
            need_number_ficture=0



#開啟中斷,下降沿觸發(fā)
KEY.irq(fun, GPIO.IRQ_FALLING)

#先把文件路徑切換到文件卡里面
os.chdir("/sd")
#os.mkdir("img/0")
#os.mkdir("img/1")
#os.mkdir("img/2")
#os.mkdir("img/3")
#os.mkdir("img/4")
#os.mkdir("img/5")
#os.mkdir("img/6")
#os.mkdir("img/7")
#os.mkdir("img/8")




#PWM通過定時器配置,接到IO15引腳
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
beep = PWM(tim, freq=1000, duty=0, pin=9)


clock = time.clock()                # 創(chuàng)建一個clock對象,用來計算幀率
while True:
    clock.tick()                    # 更新計算幀率的clock
    img=sensor.snapshot()
    #按鍵按下進入
    if key_node == 1:

        save_count=save_count+1
        img.save("img/"+str(need_number_ficture)+"/"+str(save_count)+".jpg")

        beep.duty(50)
        time.sleep_ms(100)
        beep.duty(0)
        time.sleep_ms(100)

        key_node = 0 #清除按鍵標志位
    # 在圖像上畫字符串
    img.draw_string(0, 10,str(need_number_ficture)+"/"+str(save_count)+".jpg", color = (200, 0, 0), scale = 2, mono_space = False,
                    char_rotation = 0, char_hmirror = False, char_vflip = False,
                    string_rotation = 0, string_hmirror = False, string_vflip = False)
    lcd.display(img)

下面來解釋一下上面這段代碼做了什么:

導(dǎo)入必要的庫:導(dǎo)入需要的庫和模塊(就像C語言的.h頭文件一樣),如sensor, image, time, lcd, GPIO, Timer, PWM, I2C等。

初始化LCD屏幕:使用lcd.init()初始化LCD屏幕,并使用lcd.clear(lcd.RED)清空屏幕,防止出現(xiàn)誤顯示問題。

設(shè)置攝像頭:使用sensor.reset()重置攝像頭并進行初始化。然后,設(shè)置攝像頭的相關(guān)參數(shù),比如時鐘頻率、設(shè)置雙緩沖來增加幀率,關(guān)閉自動曝光、關(guān)閉自動增益、關(guān)閉自動白平衡、設(shè)置像素格式、幀大小、窗口大小、垂直翻轉(zhuǎn)(這個和用的攝像頭有關(guān))等。

初始化變量:初始化必要的變量,如當前拍攝的數(shù)字(need_number_ficture)、保存計數(shù)(save_count)、按鍵標志位(key_node)等。

設(shè)置GPIO和按鍵中斷:注冊GPIO,并創(chuàng)建一個按鍵對象KEY。定義一個中斷回調(diào)函數(shù)fun(KEY),用于在按鍵按下時改變當前拍攝的數(shù)字。最后,配置按鍵中斷,使其在下降沿觸發(fā)。

設(shè)置蜂鳴器:使用Timer和PWM初始化蜂鳴器,并連接到指定的引腳。

主循環(huán):在主循環(huán)中,首先更新幀率計算的clock。然后,從攝像頭捕獲一幀圖像。如果按鍵被按下(key_node為1),則將當前幀圖像保存到SD卡的相應(yīng)目錄(對應(yīng)于當前拍攝的數(shù)字)。同時,蜂鳴器發(fā)出提示音(提示我們拍照OK了)。最后,在圖像上繪制當前拍攝數(shù)字和已保存的圖片計數(shù),并將圖像顯示在LCD屏幕上,方便提示我們拍攝下一張照片。

對數(shù)據(jù)集進行標注

這個就需要用到一個大神開發(fā)的軟件了(現(xiàn)在最新版自帶Python環(huán)境,無需麻煩的環(huán)境配置了),下載地址,找下面的百度網(wǎng)盤下載鏈接,找到里面的V4.0.0下載下來安裝后就可以使用了。用讀卡器把 K210的TF 卡里面采集到的訓(xùn)練集保存到電腦上。

打開Mx-yolo里面工具集中的圖片標注助手,打開保存采集數(shù)據(jù)的文件夾。詳細教程請查看這個鏈接。

wKgZomTHHGyAApMZADK_clcRy0o342.jpg

開始訓(xùn)練

訓(xùn)練可以選在線的也可以用本地的,但是如果像是電賽這種時間很緊張的比賽,為了防止到時候千軍萬馬過獨木橋,導(dǎo)致你的訓(xùn)練任務(wù)一直在排隊,最好先設(shè)置好自己的本地環(huán)境。按照上面的介紹安裝mx-yolo。

wKgaomTHHG6AVderAEV1KUc0F4w635.jpg

模型訓(xùn)練的次數(shù)需要在保證模型收斂的前提下進行合理的選擇。如果訓(xùn)練次數(shù)過少,可能會導(dǎo)致模型欠擬合,無法很好地擬合訓(xùn)練數(shù)據(jù)。如果訓(xùn)練次數(shù)過多,可能會導(dǎo)致模型過擬合,無法很好地泛化到新的數(shù)據(jù)。因此,需要根據(jù)具體的問題和數(shù)據(jù)集進行調(diào)整。一般來說,可以通過觀察模型在訓(xùn)練集和驗證集上的表現(xiàn)來確定合適的訓(xùn)練次數(shù)。當模型在驗證集上的表現(xiàn)不再提升時,可以停止訓(xùn)練,以避免過擬合。

Alpha 主要影響所生成模型的大小,選 0.25 模型大小約 219k,選 0.5 模型大小約 831k,選 0.75 模型大小約 1.85M,選 1.0 模型大小約 3.24M。當運行 maixpy 的最大固件時,k210 最大只能加載約 2MB 左右的模型,所以選 0.75 就行了。

Batch Size 一般選 8 就行了。這個參數(shù)是指每次迭代訓(xùn)練時,所選取的樣本數(shù)。Batch Size 的大小會影響模型訓(xùn)練的速度和穩(wěn)定性。較大的 Batch Size 可以加快模型訓(xùn)練的速度,因為每次迭代處理的樣本數(shù)量更多。但是,如果 Batch Size 過大,可能會導(dǎo)致內(nèi)存不足或顯存不足的問題。此外,較大的 Batch Size 還可能導(dǎo)致模型過度擬合訓(xùn)練數(shù)據(jù)。較小的 Batch Size 可以提高模型訓(xùn)練的穩(wěn)定性,因為每次迭代處理的樣本數(shù)量較少,可以更好地避免過擬合。但是,較小的 Batch Size 也會導(dǎo)致訓(xùn)練時間變長,因為需要更多次迭代才能處理完所有樣本。

數(shù)據(jù)增強建議開啟,他主要是做了一些隨機裁剪,隨機旋轉(zhuǎn),縮放,翻轉(zhuǎn)等。

訓(xùn)練結(jié)束后他會自動把模型轉(zhuǎn)換為K210能使用的模型,主要文件都在result_root_dirdetector_result目錄下面,它還會給一張測試報告,確保模型損失已經(jīng)到了0.1以下。在測試報告中,epoch代表訓(xùn)練次數(shù),model loss是模型損失,train代表訓(xùn)練集,是用來訓(xùn)練模型的數(shù)據(jù)集。valid代表驗證集,是用來評估模型性能和調(diào)整超參數(shù)的數(shù)據(jù)集。這兩條線越來越往下就是越來越好了。

wKgZomTHHG-AbCRaAADMLSPglSg618.jpg

文件下的boot.py是他給的測試程序,labels.txt是標簽順序,mx.kmodel是K210實際要用的模型文件(這個文件在使用的時候需要保存到K210要使用的TF卡里面)。簡單來說,把boot.py,lables.txt,mx.kmodel一起放到K210的sd卡里,重新上電就可以運行了。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5503

    瀏覽量

    102204
  • 數(shù)字識別
    +關(guān)注

    關(guān)注

    2

    文章

    19

    瀏覽量

    10218
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    創(chuàng)·梁山開發(fā)板-21F-送藥小車-K210更換固件-運行基礎(chǔ)顏色識別例程

    K210更換固件,他的IDE叫CanMV,看起來應(yīng)該是官方合作出品的。但是實際使用的時候發(fā)現(xiàn)他里面的函數(shù)都比較老舊,連接IDE的時候經(jīng)常性出現(xiàn)連不上或者連上很久之后才有反應(yīng)。而且對機器視覺的適配沒有Maixpy好,所以開始之前我們先給這個K210
    的頭像 發(fā)表于 07-28 11:27 ?1787次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創(chuàng)</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-<b class='flag-5'>K210</b>更換固件-運行基礎(chǔ)顏色<b class='flag-5'>識別</b>例程

    創(chuàng)·梁山開發(fā)板-21F-送藥小車-K210功能實現(xiàn)代碼講解

    關(guān)鍵的注釋都添加了,可以幫助理解代碼,這段代碼同時實現(xiàn)了尋紅線和數(shù)字識別,但是還做不到同時運行,在尋紅線的時候沒法數(shù)字識別,這兩個狀態(tài)之間的切換可以通過長按
    的頭像 發(fā)表于 08-01 09:49 ?1421次閱讀

    開發(fā)板-21F-送藥小車-小車尋紅線環(huán)的調(diào)試與實現(xiàn)

    PID控制來說,測量值是紅線相較屏幕中線的偏移,目標值是想讓紅線偏移為0,輸出值是電機的速度。 根據(jù)14_創(chuàng)梁山K210串口通信協(xié)議
    的頭像 發(fā)表于 08-03 10:10 ?1675次閱讀

    創(chuàng)·梁山開發(fā)板-21F-送藥小車實現(xiàn)思路

    基本要求 1. 根據(jù)走廊上的標識信息自動識別,尋徑將藥品送到指定病房,投影要在門口區(qū)域內(nèi), 2. 到了指定病房后,點亮紅色指示燈,等待卸載藥品。 3. 人工卸掉藥品后,小車自動熄滅紅色指示燈,開始返回。 4. 自動返回藥房,點亮綠色指示燈。
    的頭像 發(fā)表于 08-08 09:44 ?1098次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創(chuàng)</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>實現(xiàn)思路

    怎樣去設(shè)計一個智能送藥小車

    2021F智能送藥小車原文鏈接:openmv巡線代碼:
    發(fā)表于 01-07 08:19

    如何去實現(xiàn)基于K210的MNIST手寫數(shù)字識別

    基于K210的MNIST手寫數(shù)字識別硬件平臺采用Maixduino開發(fā)板在sipeed官方有售軟件平臺使用MaixPy環(huán)境進行單片機的編程 官方資源可在這里下載 鏈接: [link]h
    發(fā)表于 02-17 07:35

    K210開發(fā)板部署到開發(fā)板上后,會提示“Out of Memory”無法完成檢測任務(wù)如何解決?

    您好,我想問一下嘉楠官方有沒有出一套基于K210開發(fā)板進行目標檢測的訓(xùn)練流程呢?我想訓(xùn)練自己的數(shù)據(jù)集并部署到亞博智能K210
    發(fā)表于 09-14 08:35

    Kendryte K210開發(fā)板使用說明書

    本文檔是 Kendryte K210 開發(fā)板使用說明書,型號是 KD233,描述了開發(fā)板資源、建立軟件開發(fā)環(huán)境、使用 SDK 在開發(fā)板上執(zhí)行
    發(fā)表于 05-28 10:09 ?64次下載

    亞博智能K210開發(fā)板學(xué)習(xí)筆記

    亞博智能K210開發(fā)板學(xué)習(xí)筆記
    發(fā)表于 12-08 15:06 ?47次下載
    亞博智能<b class='flag-5'>K210</b><b class='flag-5'>開發(fā)板</b>學(xué)習(xí)筆記

    基于K210的MNIST手寫數(shù)字識別

    基于K210的MNIST手寫數(shù)字識別硬件平臺 采用Maixduino開發(fā)板 在sipeed官方有售軟件平臺 使用MaixPy環(huán)境進行單片機的編程 官方資源可在這里下載 鏈接: [
    發(fā)表于 12-22 18:44 ?28次下載
    基于<b class='flag-5'>K210</b>的MNIST手寫<b class='flag-5'>數(shù)字</b><b class='flag-5'>識別</b>

    使用K210和Arduino IDE/Micropython進行圖像識別

    電子發(fā)燒友網(wǎng)站提供《使用K210和Arduino IDE/Micropython進行圖像識別.zip》資料免費下載
    發(fā)表于 06-25 11:02 ?6次下載
    使用<b class='flag-5'>K210</b>和Arduino IDE/Micropython進行圖像<b class='flag-5'>識別</b>

    梁山開發(fā)板-21F-送藥小車-分析

    全國產(chǎn)開源開發(fā)板,基于GD32F4系列,21F
    的頭像 發(fā)表于 07-31 10:13 ?1642次閱讀
    <b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-<b class='flag-5'>賽</b><b class='flag-5'>題</b>分析

    創(chuàng)梁山開發(fā)板-21F-送藥小車-小車角度環(huán)的調(diào)試與實現(xiàn)

    來達到目標值。 第二種是在實現(xiàn)小車輪子位置環(huán)的基礎(chǔ)上,控制兩邊輪子同時向不同的方向旋轉(zhuǎn)一定的圈數(shù)(編碼器脈沖),在小車輪子不打滑的情況下轉(zhuǎn)過的角度就是一個確定的值,在送藥小車的地圖中
    的頭像 發(fā)表于 07-27 10:18 ?1225次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-<b class='flag-5'>小車</b>角度環(huán)的調(diào)試與實現(xiàn)

    創(chuàng)·梁山開發(fā)板-21F-送藥小車-與K210串口通信協(xié)議框架搭建

    K210可以識別到色塊和識別數(shù)字后,就需要把這些信息傳遞給創(chuàng)梁山派了。而立
    的頭像 發(fā)表于 08-02 10:57 ?970次閱讀

    創(chuàng)·梁山開發(fā)板-21F-送藥小車數(shù)據(jù)的發(fā)布與訂閱

    推薦或不建議使用全局變量來傳遞信息的原因主要有以下幾點: 1. 競爭條件:在多任務(wù)環(huán)境下,全局變量會面臨競爭條件的問題。當多個任務(wù)同時讀寫同一個全局變量時,會導(dǎo)致數(shù)據(jù)的不一致性和錯誤的結(jié)果。這是因為任務(wù)的執(zhí)行是并發(fā)的,無法控制它們的執(zhí)行順序。 2. 數(shù)據(jù)共享和保護:全局變量被所有任務(wù)共享,這意味著多個任務(wù)可以同時訪問和修改該變量。如果沒有正確的數(shù)據(jù)保護機制,可能會導(dǎo)致數(shù)據(jù)損壞或沖突。 3. 可維護性和調(diào)試困難:使用全局變量傳遞信息可能導(dǎo)致代碼的可維護性和調(diào)試的困難。由于全局變量可以被任何任務(wù)修改,追蹤問題的根源和調(diào)試錯誤可能會變得更加困難。
    的頭像 發(fā)表于 08-07 09:55 ?692次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創(chuàng)</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>數(shù)據(jù)的發(fā)布與訂閱