【搬运】StickV(UnitV)+StickC进行自我学习实现移动侦测
本帖最后由 vany5921 于 2020-1-8 15:36 编辑此项目通过StickV的自我学习进行图像判断,发现异常后发送图像到line平台达到报警作用。
原文地址 https://m5stack.hackster.io/anoken2017/mimamori-alert-for-your-home-security-098b12
主要处理过程如下:
①首先,利用Mobilnet的神经网络计算特征向量。 Mobilnet使用Keras和NNcase创建了V1权重为0.5。 NNCASE是Kendryte工具。
task = kpu.load(0x200000)
fmap = kpu.forward(task, img)
new_data = np.array(fmap[:])
②将神经网络获得的特征向量在时间序列方向上进行滤波,得到加权平均值。向量运算使用Numpy。
#Feature Vector Update
def update(capture,new_data,weight):
new_data= new_data*weight+capture*(1.0-weight)
return new_data
new_data=update(capture,new_data,cap_weight)
③计算当前时间的平均向量与特征向量之间的距离。这等同于找到运动。如果移动,则距离较大,如果静态,则距离较小。
Feature Vector Compare
def get_dis(new_data,master_data):
dist = np.sum((new_data-master_data)*(new_data-master_data))
return dist
dist=get_dis(new_data,master_data)
④检测波形的上升沿并通过UART发送数据。将上升沿与时间序列中的先前数据进行比较
if dist > dist_thresh:
if dist_old <= dist_thresh:
img_buf = img.copy()
img_buf.compress(quality=70)
img_size1 = (img_buf.size()& 0xFF0000)>>16
img_size2 = (img_buf.size()& 0x00FF00)>>8
img_size3 = (img_buf.size()& 0x0000FF)>>0
data_packet = bytearray()
uart_Port.write(data_packet)
uart_Port.write(img_buf)
time.sleep(1.0)
print("image send,data_packet")
⑤M5StickC通过UART的通知将图像和消息发送到LINE。 M5StickC是使用ArduinoIDE开发的。
此源代码需要MixPy选项配置Numpy。自定义二进制文件存储在Github中。而且,神经网络需要权重为0.5的MobileNetV1。该Kmodel文件也存储在Github中。使用Kflash GUI工具写入M5StickV / UnitV
你这个是k210的芯片吧! 点击小子 发表于 2020-1-8 17:45
你这个是k210的芯片吧!
是的
页:
[1]