采集数据
根据它云训练平台的要求,它要求的图片格式必须是224*224的(重点之重点),所以可以利用K210跑脚本直接采集数据。
数据采集脚本
'''
main.py
实验名称:照相机
说明:通过按键拍照并在LCD上显示(本实验需要SD卡)。
'''
import sensor, lcd, utime
from Maix import GPIO
from fpioa_manager import fm
#注册KEY的外部IO
fm.register(16, fm.fpioa.GPIOHS0, force=True)
fm.register(18, fm.fpioa.GPIOHS1, force=True)
#构建KEY对象
KEY1=GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
KEY2=GPIO(GPIO.GPIOHS1, GPIO.IN, GPIO.PULL_UP)
#摄像头初始化
set_windowing = (224, 224) #采集图片的格式
sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
sensor.set_framesize(sensor.QVGA) # or sensor.QVGA (or others)
sensor.set_windowing(set_windowing)
sensor.skip_frames(30) # Let new settings take affect.
flag=1
sensor.set_vflip(flag) #摄像头后置模式
#LCD初始化
lcd.init()
key_num = 0 #按键标志位
name_num = 0 #照片名字
##############################################
# 按键和其回调函数
##############################################
def fun1(KEY1):
global key_num
utime.sleep_ms(10) #消除抖动
if KEY1.value()==0: #确认按键被按下
key_num = 1
def fun2(KEY2):
global key_num
utime.sleep_ms(10) #消除抖动
if KEY2.value()==0: #确认按键被按下
key_num = 2
#开启中断,下降沿触发
KEY1.irq(fun1, GPIO.IRQ_FALLING)
KEY2.irq(fun2, GPIO.IRQ_FALLING)
while True:
lcd.display(sensor.snapshot()) # LCD实时显示
if key_num==1: #按键1被按下
key_num = 0 #清空按键标志位
#拍照并保存
lcd.display(sensor.snapshot().save("/sd/"+str(name_num)+".jpg"))
name_num=name_num+1 #名字编码加1
print("Done! Reset the camera to see the saved image.")
lcd.draw_string(100,100,"Tu_Pian_Yi_Bao_Cun!!!",lcd.RED,lcd.WHITE)
#延时3秒,观看拍摄图片
utime.sleep_ms(1000)
elif key_num==2:#更换摄像头模式
key_num=0
if flag==1:
flag=0
sensor.set_vflip(flag)
elif flag==0:
flag=1
sensor.set_vflip(flag)
处理数据
搭建环境
软件
环境
安装相关依赖,输入下面即可:
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成:
使用
1.文件预处理
建好如下的文件目录,图片放到images文件夹中。
datasets
|
|----images
| |
| |---0.jpg
| |
| |---1.jpg
|
|------xml
|
|----labels.txt
labels.txt文件里写上需要的标签。(重点重点重点)如下所示:
2.软件处理
进入datasets文件夹,复制该目录的路径
win+R,输入cmd,进入终端,进入到该目录下
继续输入下面命令行
labelimg images labels.txt
#这里应该是打开images文件夹和labels.txt文件的意思
这里需要对软件进行一些调整
这个是保存xml文件的路径一定要优先选好路径,就把路径放到xml文件夹里,如下图。
上图无须更改,直接VOC即可。
上图一定要勾选上,打标签的时候会方便很多。
上图是打错标签的时候可用,选中打好标签的区域,按下del键即可删除。下图所示。
3.快捷键
A:切换到上一张图片
D:切换到下一张图片
W:调出标注十字架
del :删除标注框框
上图,十字架被调出。
上图,框出关键区域后,会自动弹出标签可供选择,这些标签就是labels.txt里面的内容,选中相应的标签,点击“OK”,一张图片的标签就打完了。按下“D”,继续打一张图片的标签。
(注意,每一类的图片数量一定要超过40张,云训练硬性要求,数据图片每一张都要打标签,别想着偷懒,重点重点重点)
打包数据
数据打好标签后,对datasets文件夹进行压缩。
文件结构
datasets.zip
|
|----datasets
|
|----images
| |
| |---0.jpg
| |
| |---1.jpg
|
|------xml
| |
| |---0.xml
| |
| |---1.xml
|
|----labels.txt
上传数据
云训练平台
MaixHub提供数据采集、在线AI模型训练、模型部署到设备完整生态,快速实现 tinyML 和 AIOT 应用https://www.maixhub.com/
选择“模型训练”,选择“物体检测”,不管是啥,都是这样选。
点击“下一个”
上传打包好的数据压缩包文件,点击“下一个”,就等它平台训练完就行了。
下载模型文件
训练完后,下载按钮会变成蓝色,点击就会下载。
下载好后,解压出来就有kmodel模型文件,这样就可以直接在本地进行识别了