Datawhale干货
作者:张强,Datawhale成员
训练目标检测模型并部署到你的嵌入式设备,让边缘设备长“眼睛”。
目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。目标检测已应用到诸多领域,比如如安防、无人销售、自动驾驶和军事等。在许多情况下,运行目标检测程序的设备并不是常用的电脑,而是仅包含必要外设的嵌入式设备。别看嵌入式设备简陋,但在上面照样能够跑程序,实现我们的想法。设计一个嵌入式AI产品产品,一般会首先考虑成本,在有限的成本内充分利用硬件的性能。因此,不同高低性能的硬件使用场景各不同。
上篇我们讲到如何部署一个基础CNN分类模型来识别数字,本篇更进一步,将带你训练一个手势检测器,并将其部署到嵌入式设备上。
本文思维导图如下:
01 数据集准备
我们使用一个开源数据集平台:https://gas.graviti.com/ ,网站汇总了AI开发者常见的公开数据集,针对我们特定任务,搜索对应的数据集即可,更方便一点,调用其SDK就能直接在线训练。
a. 打开本文对应数据集链接 https://gas.graviti.com/dataset/datawhale/HandPoseforK210
b. 右上角注册登录
c. fork数据集
d. 点击网页上方Developer Tools,获取使用SDK所需的AccessKey,获取到 AccessKey 后,将其存在项目根目录的gas_key.py
里:
KEY = "<Your-Key>"
然后即可以通过AccessKey可以上传数据、读取数据、使用数据,灵活对接模型开发和训练,与数据pipeline快速集成。
e. AccessKey写入后就可以自由读取数据了。读取前可以开启缓存功能,SDK会在读取data后将其自动缓存至指定路径,此处我们设置缓存路径为data
文件夹。
import numpy as np
from PIL import Image
from tensorbay import GAS
from tensorbay.dataset import Dataset
KEY = '复制你的ACCESSKEY替换'
def read_gas_image(data):
with data.open() as fp:
image = Image.open(fp)
image.load()
return np.array(image)
gas = GAS(KEY)
dataset = Dataset("HandPose", gas)
dataset.enable_cache("data")
segments = dataset.keys()
segment = dataset["train"]
for data in segment:
# 获取的Numpy格式的图片数据
image = read_gas_image(data)
# 标签数据
for label_box2d in data.label.bo