学习记录之学习总结openmv

发布于:2022-12-08 ⋅ 阅读:(641) ⋅ 点赞:(0)

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()

本文含有隐藏内容,请 开通VIP 后查看

微信公众号

今日签到

点亮在社区的每一天
去签到