人脸检测
import sensor, image, lcd, time
import KPU as kpu
import gc, sys
def lcd_show_except(e):
import uio
err_str = uio.StringIO()
sys.print_exception(e, err_str)
err_str = err_str.getvalue()
img = image.Image(size=(224,224))
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0xff,0x00))
lcd.display(img)
#mnist.kmodel "/sd/mnist.kmodel" model_addr=0x300000
#
def main(model_addr="/sd/facedetect.kmodel", lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(sensor_hmirror)
sensor.set_vflip(sensor_vflip)
sensor.run(1)
lcd.init(type=1)
lcd.rotation(lcd_rotation)
lcd.clear(lcd.WHITE)
#task = kpu.load(model_addr)0x300000"/sd/mnist.kmodel"
task = kpu.load("/sd/facedetect.kmodel")
#"/sd/mnist.kmodel"
anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]
try:
while(True):
img = sensor.snapshot()
img.rotation_corr(x_rotation=180,y_rotation=180)#x_rotation=10,
t = time.ticks_ms()
objects = kpu.run_yolo2(task, img)
t = time.ticks_ms() - t
if objects:
for obj in objects:
img.draw_rectangle(obj.rect())
img.draw_string(0, 200, "t:%dms" %(t), scale=2)
lcd.display(img)
except Exception as e:
raise e
finally:
kpu.deinit(task)
if __name__ == "__main__":
try:
main( model_addr="/sd/facedetect.kmodel", lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False)
# main(model_addr="/sd/m.kmodel")
except Exception as e:
sys.print_exception(e)
lcd_show_except(e)
finally:
gc.collect()
模型文件
可以将模型直接烧录到内部0x300000地址下也可以放到内存卡中
facedetect.kmode
具体的烧录模型 安装MaixPy IDE 和固件下载固件 具体参考 https://cn.maixpy.sipeed.com/dev/zh
代码放在
固件
模型
只选择一个 带0x300000为下载到内部flash 中的