K210 Xiaobai の使用開始 — マスク認識を例に挙げて

実験の事前効果:マスク着用の判断を実現

実験装置の準備: k210 マイクロコントローラー、カメラ、スクリーン。

実験原理の分析:マスク認識モデルをK210に焼き付けて、人がマスクを着用しているかどうかを判断し、

  1. MaixHub 公式 Web サイトのモデル ライブラリでモデルを検索する

  1. マシンコードを取得する

  1. kflash_gui でのモデルの書き込み

MaixHub公式 Web サイトのモデル ライブラリでマスク認識のモデルをダウンロードします(<--ここをクリック)

このモデルは暗号化モデルのため、独自のID取得モデルであるk210マシンコードを入力する必要があります。

マシンコードの取得方法:

(kflash_gui 書き込みソフトウェアと MaixPy IDE プログラミング環境はデフォルトでインストールされています)

K210 は、マシン コードの取得に特別に使用されるファームウェア key_gen_v1.2.bin を公式に提供しています。このファームウェアをここからダウンロードします: Download Station - Sipeed

key_gen_v1.2.bin ファイルを最初のアドレス 0x00000 に書き込みます。

ダウンロードが成功したことが示されたら、MaixPy IDE を開き、ツールを選択し、ターミナルを開き、新しいターミナルを開きます。

独自の k210 のマシン コードを取得できます。

注:先ほど最初のアドレスのマシンコードを取得するためにファームウェアを書き込んだため、最初のアドレスのファームウェアが使用されています。元のファームウェアがなければ、k210 に接続することはできませ固有のマシン コード。次回使用するために携帯電話で写真を撮り、元のファームウェアに焼き戻します。k210 データ パッケージの 02 サンプル プログラム --- 03 関連ファームウェアで、このファームウェアを最初のアドレスに焼き戻します。 0x00000。

マシンコードを取得した後、マスク認識モデルを取得できます

ダウンロード後、解凍して解凍します。

2つのファイルを取得しました

1.マスクはmain関数のコードです

2.mask.smodelは売春のモデルです

コードを MaixPy IDE に貼り付けてコピーします。

import sensor, image, lcd, time
import KPU as kpu

color_R = (255, 0, 0)
color_G = (0, 255, 0)
color_B = (0, 0, 255)


class_IDs = ['no_mask', 'mask']


def drawConfidenceText(image, rol, classid, value):
    text = ""
    _confidence = int(value * 100)

    if classid == 1:
        text = 'mask: ' + str(_confidence) + '%'
        color_text=color_G
    else:
        text = 'no_mask: ' + str(_confidence) + '%'
        color_text=color_R
    image.draw_string(rol[0], rol[1], text, color=color_text, scale=2.5)



lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)

sensor.set_auto_exposure(1)
sensor.set_auto_gain(1)
sensor.set_vflip(1)
sensor.set_hmirror(1)
sensor.run(1)



task = kpu.load(0x300000)


anchor = (0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423, 5.6823)
_ = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
img_lcd = image.Image()

clock = time.clock()
while (True):
    clock.tick()
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)
    if code:
        totalRes = len(code)

        for item in code:
            confidence = float(item.value())
            itemROL = item.rect()
            classID = int(item.classid())

            if confidence < 0.52:
                _ = img.draw_rectangle(itemROL, color=color_B, tickness=5)
                continue

            if classID == 1 and confidence > 0.65:
                _ = img.draw_rectangle(itemROL, color_G, tickness=5)
                if totalRes == 1:
                    drawConfidenceText(img, (0, 0), 1, confidence)
            else:
                _ = img.draw_rectangle(itemROL, color=color_R, tickness=5)
                if totalRes == 1:
                    drawConfidenceText(img, (0, 0), 0, confidence)

    _ = lcd.display(img)

    print(clock.fps())

_ = kpu.deinit(task)

kpu.load() 関数はトレーニング モデルの実行に使用されます。モデルは 0x300000 に配置されます。主にモデルのサイズに応じて自分で設定できます。最大アドレスは 0x800000 に配置できると記憶しています。

如果报错“memory not enough! ”就是空间不够了,可在下载站中找一个适当的固件,或者使用SD卡存放模型。

对摄像头Sensor的配置做了一些修改,之前的摄像头和显示屏角度老是别扭。

于是我们将第二个模型文件,烧录在0x300000地址:(如果弹出下载失败,拔掉重新插线试一试)

现象:

おすすめ

転載: blog.csdn.net/qq_62262788/article/details/129335714