K210 – это микроконтроллер, выпущенный компанией Canaan. Он оснащен аппаратным ускорителем нейронной сети собственной разработки KPU, который может выполнять операции нейронной сети с высокой производительностью. В общем данный контроллер предназначен специально для использования в нейронной сети.
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
- Данный микроконтроллер имеет двухъядерный 64-битный процессор RISC-v с FPU.
- Распознавание изображений: QVGA : 60 кадров в секунду / VGA: 30 кадров в секунду.
Такое устройство можно приобрести тут: http://alii.pub/5t709l
Разные модели с k210 тут: http://alii.pub/5t70ay
Конкретно у модуля UnitV от M5stack установлена камера OV7740, слот под microsd карточку и светодиод ws2812 и еще 2 кнопки.
Программируется данный микроконтроллер языком программирования micropython. Для этого есть специальная IDE для разработки MaixPyIDE. Которую можно скачать тут: https://dl.sipeed.com/shareURL/MAIX/MaixPy/ide/v0.2.5
Теперь давайте попробуем запустить первую программу. Поуправляем встроенным светодиодом.
Программа выглядит следующим образом:
from modules import ws2812
from fpioa_manager import *
fm.register(8)
class_ws2812 = ws2812(8,100)
r=0
dir = True
while True:
if dir:
r += 5
else:
r -= 5
if r>=255:
r = 255
dir = False
elif r<0:
r = 0
dir = True
for i in range(100):
a = class_ws2812.set_led(i,(r,0,0))
a=class_ws2812.display()
Скачать скрипт можно от сюда:https://disk.yandex.ru/d/du3kRjFOWNLbww
Здесь нас интересует строчка
a = class_ws2812.set_led(i,(r,0,0))
Собственно в ней меняя значения в скобках мы будем зажигать разный цвет светодиода. Тоесть например если мы в скобках введем (255,0,0) то у нас будет гореть красный светодиод. Если (0,255,0) то зеленый ну и если последний октет 255 то это будет синий.
Также здесь присутствует еще функция. У нас яркость определяется значением в скобках от 0 до 255 – где 255 самый яркое значение. А 0 это диод погашен.
И собственно если мы в скобках вобьем значение “r” вместо цифр. То получится что этот цвет где стоит буква r. Будет плавно загораться и тускнеть. С разницей в 5 значений.
Второй пример работы. Это распознавание лиц.
Чтоб данный способ заработал. Нам необходимо сначала скачать специально обученную модель face_model_at_0x300000.kfpkg . Ее можно скачать отсюда: https://disk.yandex.ru/d/f7dGHWvvaCJinA
Данная модель в формате .kfpkg ЧТоб ее загрузить в микроконтроллер, нужна специальная утилита kflash. Которую можно скачать отсюда: https://github.com/Sipeed/kflash_gui/releases
После загрузки данной модели. Необходимо запустить скрипт:
import sensor
import image
import KPU as kpu
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
task = kpu.load(0x300000)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while(True):
img = sensor.snapshot()
code = kpu.run_yolo2(task, img)
if code:
for i in code:
print(i)
a = img.draw_rectangle(i.rect())
a = kpu.deinit(task)
Он очень маленький. Все это потому что мы здесь не описываем модель. А просто обращаемся к ней.
Данный скетч можно скачать от сюда: https://disk.yandex.ru/d/zXw710cstI04yQ
Ну и бонусом. На основе этой же модели распознавания лиц создали скрипт социальной дистанции. Который определяет как далеко находятся люди друг от друга. И если они находятся слишком близко, то на изображении помечает крестиком лица.
Скачать такой скрипт можно тут: https://disk.yandex.ru/d/Gqp29lGVDwwBgQ
Или с оригинальной статьи отсюда: https://m5stack.hackster.io/ruvic101/social-distancing-using-face-detection-web-stream-4e24bd
Также его работа показана в видео ниже: