资料介绍
描述
该项目背后的想法是创建一个能够根据手指手势驱动执行器的设备。
该项目专门用于识别 raspberry-pi 相机拍摄的手部流图像。
用于训练模型的图像数据集是临时创建的,图像仅从 Raspberry 相机(而非其他设备)拍摄,具有中性背景。
该模型基于Inception v3模型的迁移学习,为处理项目需求而定制。最后一层从Inception v3模型中删除,并添加了几层以使用新数据集进行自定义,并仅提供四种情况的输出。
该模型使用先前在桌面(32 Gb ram + GPU)上收集和预分类的图像进行训练。一旦模型经过训练和测试,它就会被导出到 Raspberry Pi。
创建数据集
该项目的目的是确定我手指的位置。
因此,它创建了一个图像数据集,其中手指在四个不同的位置{'无'、'一根手指'、'多于一根手指'、'手闭合'}。
手的位置总是颠倒的。
创建模型
使用的模型基于称为迁移学习的威廉希尔官方网站 。从已经完全训练的预先存在的模型(Inception v3 模型)中删除了最后几层,并添加了额外的几个新层。
在代码下方自定义添加到模型的层。
last_layer = pre_trained_model.get_layer('mixed7')
last_output = last_layer.output
#creating a model using the previous model without the last few layers
x = layers.Flatten()(last_output)
# Add a fully connected layer with 100 hidden units and ReLU activation
x = layers.Dense(100, activation='relu')(x)
# Add a dropout rate of 0.2
x = layers.Dropout(0.2)(x)
# Add a final sigmoid layer for the classification of the 4 status
x = layers.Dense(4, activation='softmax')(x)
model = Model( pre_trained_model.input, x)
训练模型
训练仅基于图像的数据集,并添加了一些可变性以强制模型进行泛化。这种可变性或多样性(称为数据增强)允许人为地增加训练示例的数量并提高分类的质量。
training_datagen = ImageDataGenerator(
rescale = 1./255,
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
该模型仅拟合了 20 个 epoch,足以拟合模型并避免过度拟合。
history = model.fit(
train_generator,
validation_data = validation_generator,
steps_per_epoch = 5,
epochs = 20,
validation_steps = 5,
verbose = 2)
该模型的准确性非常好,特别是对于验证数据集(由没有可变性(数据增强)的真实图像组成)。
一旦模型足够好,它就会被保存并导出。
model.save("C:\\gits_folders\\Tensorflow_Lite_embeded\\raspbery\\enzo_02")
到目前为止描述的所有步骤都在 Jupiter notebook 上,可在下面的链接中找到:
将模型部署到 Raspberry PI
模型训练和测试由一个相当强大的桌面执行。完成这些步骤后,必须将最终结果移至 Raspberry PI。
Raspberry PI 应该仅执行从 Raspberry PI 相机拍摄的图像流中进行的推断(计算量如此之大,比训练密集得多)。
export_dir = "C:\\gits_folders\\Tensorflow_Lite_embeded\\raspbery\\enzo_02"
loaded = tf.saved_model.load(export_dir)
converter = tf.lite.TFLiteConverter.from_saved_model(export_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
tflite_model_file = 'enzo02_converted_model.tflite'
with open(tflite_model_file, "wb") as f:
f.write(tflite_model)
在代码之后,模型保存在一个文件(“enzo_02”)中,该文件可以轻松地从桌面复制到 Raspberry PI 文件系统。然后,它可以被运行在 Raspberry PI 上的 python 脚本读取。
from tflite_runtime.interpreter import Interpreter
....
interpreter = Interpreter(args.model)
interpreter.allocate_tensors()
_, height, width, _ = interpreter.get_input_details()[0]['shape']
完整的脚本可在链接中找到:
下面是一个如何午餐脚本的示例:
python3 classify_picamera_servo.py --model ./enzo01_converted_model.tflite --labels ./labels
电路概述
电路非常简单。带有摄像头的树莓派 4 是核心组件。他们收集视频流并使用部署的模型执行推理。然后,根据推理结果,一个信号被发送到 PCA9685,PCA9685 相应地操作 3 个伺服系统。
用于操作 3 个伺服系统的 PCA9685 工作负载由 9v 的外部电池支持。
建立旗帜
这 3 个标志是使用 Polymorph 材料创建的。Polymorph 是一种特殊类型的塑料,其熔化温度约为 60˚C,用沸水加热即可成型为任何形状。一旦冷却,它就会变成一种非常坚韧的类似尼龙的聚合物。由于它是一种热塑性塑料,Polymorph 可以多次重新加热和热成型。
它的使用非常简单,您只需将一些多晶型物放入一杯水中,在微波炉中加热几分钟(直到多晶型物变得透明)。
然后将其从水中取出并开始将其塑造成所需的形状。
在这个项目中,多形体被赋予了标志形状并添加了一个伺服臂(对于 3 个标志中的每一个)。冷却后,他们创建了一个独特的结构,其中插入了服务器臂。因此,很容易将它们连接到伺服系统。
我们通过添加彩色多形体来区分旗帜,因此每个旗帜都有不同的颜色。
3D 打印外壳和最终建筑
最终的建筑非常简单,使用附件部分的 .stl 文件 3D 打印伺服支架和 Raspberry PI/相机支架。将每个标志连接到一个伺服器,并将伺服器插入其支架。
然后,将 Raspberry Pi 及其摄像头插入外壳中。
- 树莓派接入点开源分享
- 树莓派家庭自动化开源
- 树莓派监视器开源项目
- 树莓派零UPS/NAS开源
- 树莓派移动电源开源分享
- 树莓派计算模块开源项目
- 树莓派4RGB帽子开源
- 树莓派ATEM Tally开源项目
- 树莓派4b原理图下载 118次下载
- 树莓派3和树莓派4的原理图免费下载 89次下载
- 树莓派3和树莓派4的原理图免费下载 222次下载
- 树莓派传感器的使用教程详细概述 27次下载
- 树莓派与51单片机和arduino与STM32的比较
- 树莓派是什么树莓派的简单介绍
- 树莓派传感器教程资料下载 31次下载
- 虹科工业树莓派应用小技巧 573次阅读
- dfrobotUSB/TTL树莓派GPS模块简介 3211次阅读
- dfrobotArduino 树莓派扩展板简介 2079次阅读
- 浅谈树莓派4的性能及配置 3.9w次阅读
- 浅谈香蕉派与树莓派的不同 2.5w次阅读
- 树莓派与nanopi的对比 5.3w次阅读
- 树莓派菜鸟入门攻略 6852次阅读
- 解答树莓派如何开启root账户 6378次阅读
- 浅谈树莓派与单片机的区别 7.3w次阅读
- 树莓派有什么用_树莓派能用来做啥_树莓派新手入门教程 3.3w次阅读
- 树莓派安装系统_树莓派系统安装教程 1.3w次阅读
- 树莓派用什么语言编程_树莓派python编程详解 3.8w次阅读
- 树莓派gpio接口及编程方法 6.4w次阅读
- 树莓派是什么_树莓派的发展历史及主要参数 1w次阅读
- DIY一个树莓派扩展板 7340次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多