edge impulse
添加训练数据—选择模型—设置训练参数—开始训练—训练结果准确度达到要求—生成相关模型
(新建一个project、通过上传图片进行目标点检测、上传图像(自动分训练集和测试集)、标注出目标
选择模型(分辨率96*96,根据短边剪切)……)
FOMO(更快的对象,更多的对象)是一个用于实时对象检测的神经网络
Mobile Net v2 0.35训练模型(针对移动端的模型)—>低延迟、高速度、低内存—>缺点:精度略小
生成的.py文件的解析
clock:计算摄像头的每秒帧数
clock.tick() 开始追踪运行时间
clock.fps() 停止追踪运行时间,并返回当前的FPS(每秒传输帧数)
导入需要的库(sensor, image, time, os, tf, math, uos, gc)
初始化传感器:sensor.reset()
设置图像色彩格式为RGB:sensor.set_pixformat(sensor.RGB565)
设置每帧图像大小(320*240):sensor.set_framesize(sensor.QVGA)
在当前画面中取一块要处理的区域roi:sensor.set_windowing((240, 240))(w,h)
摄像头初始化后等待时间:sensor.skip_frames(time=2000)
设置输出汉字:output={}
要导入的模型文件和标签文件均为空:net = None labels = None
设置最小置信度:min_confidence = 0.5(准确率达到百分之几,标记为识别成功)
添加模型文件trained.tflite:如果模型文件>堆栈(减去64K后),不能放在堆栈里,放入openmv内置U盘(free buf帧缓冲区-flash)里,同时返回错误—>是否把.tflite和labels.txt文件放入openmv内置U盘(raise Exception())
net = tf.load("trained.tflite", load_to_fb=uos.stat('trained.tflite')[6] > (gc.mem_free() - (64*1024))
添加标签文件:labels = [line.rstrip('\n') for line in open("labels.txt")](在.txt文件里是一个列表,对列表的每一行进行切割,以\n为结束符,每一行内容为一个标签)
设置颜色:colors = [](一个个颜色是背景色,按标签顺序来)
创建一个时钟对象来跟踪FPS帧率:clock = time.clock()
设置参数上次识别结果和识别次数均为0:last_output=0 rec=0
循环输出识别结果:while(True):
开始追踪运行时间:clock.tick()
拍一张照片并返回图像: img = sensor.snapshot()
用神经网络模型检测图像中的目标能否匹配:net.detect(img, thresholds=[(math.ceil(min_confidence * 255), 255)])(thresholds阈值,判断当前检测的图像快与模型的匹配程度,math.ceil取整,min_confidence最小置信度,255最大,在127-255内即可)
对识别到的结果循环枚举:for i, detection_list in enumerate(result):(i是枚举结果)
如果i == 0,识别到背景;结束到下一层
如果len(detection_list) == 0,没有识别到目标,结束到下一层
如果i>0,因为第一个是
停止追踪运行时间,并返回当前的FPS(每秒传输帧数):clock.fps()