电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>TensorFlow手势识别树莓派开源

TensorFlow手势识别树莓派开源

2022-11-09 | zip | 0.76 MB | 次下载 | 2积分

资料介绍

描述

该项目背后的想法是创建一个能够根据手指手势驱动执行器的设备。

该项目专门用于识别 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)

该模型的准确性非常好,特别是对于验证数据集(由没有可变性(数据增强)的真实图像组成)。

poYBAGNomOuAeyDhAAAoFrzMpfY303.png
 

一旦模型足够好,它就会被保存并导出。

model.save("C:\\gits_folders\\Tensorflow_Lite_embeded\\raspbery\\enzo_02")

到目前为止描述的所有步骤都在 Jupiter notebook 上,可在下面的链接中找到:

https://github.com/EnzoCalogero/Tensorflow_Lite_embeded/blob/main/raspbery/enzo_01/Enzo01%204%20elements.ipynb

将模型部署到 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']

完整的脚本可在链接中找到:

https://github.com/EnzoCalogero/Tensorflow_Lite_embeded/blob/main/raspbery/Enzo_mod_01/classify_picamera_servo.py

下面是一个如何午餐脚本的示例:

python3 classify_picamera_servo.py   --model ./enzo01_converted_model.tflite   --labels ./labels

电路概述

电路非常简单。带有摄像头的树莓派 4 是核心组件。他们收集视频流并使用部署的模型执行推理。然后,根据推理结果,一个信号被发送到 PCA9685,PCA9685 相应地操作 3 个伺服系统。

用于操作 3 个伺服系统的 PCA9685 工作负载由 9v 的外部电池支持。

 

pYYBAGNomO6AEwC2AANjaoySBu8574.jpg
简化电气
 

建立旗帜

这 3 个标志是使用 Polymorph 材料创建的。Polymorph 是一种特殊类型的塑料,其熔化温度约为 60˚C,用沸水加热即可成型为任何形状。一旦冷却,它就会变成一种非常坚韧的类似尼龙的聚合物。由于它是一种热塑性塑料,Polymorph 可以多次重新加热和热成型。

pYYBAGNomPGAJEYBAADoyn_IVKQ625.jpg
多晶型材料
 

它的使用非常简单,您只需将一些多晶型物放入一杯水中,在微波炉中加热几分钟(直到多晶型物变得透明)。

pYYBAGNomPSALibGAABeEnDRa8I404.jpg
沸水中的多晶型物
 

然后将其从水中取出并开始将其塑造成所需的形状。

poYBAGNomPeAdrgtAACSsFAut7g696.jpg
多晶型材料,同时是热的和可延展的
 

在这个项目中,多形体被赋予了标志形状并添加了一个伺服臂(对于 3 个标志中的每一个)。冷却后,他们创建了一个独特的结构,其中插入了服务器臂。因此,很容易将它们连接到伺服系统。

poYBAGNomP6AG4FDAA8P_vSUDsk075.jpg
创建旗帜的形状
 
pYYBAGNomQWAQTHQABETx0yjZqw625.jpg
最后的旗帜
 

我们通过添加彩色多形体来区分旗帜,因此每个旗帜都有不同的颜色。

3D 打印外壳和最终建筑

最终的建筑非常简单,使用附件部分的 .stl 文件 3D 打印伺服支架和 Raspberry PI/相机支架。将每个标志连接到一个伺服器,并将伺服器插入其支架。

然后,将 Raspberry Pi 及其摄像头插入外壳中。

pYYBAGNomQ2AafiFAA6WaXXZuwQ922.jpg
伺服箱内视图
 
poYBAGNomROAQrCRAAndbjsMdro797.jpg
树莓派相机外壳细节
 

 

 

poYBAGNomRiAKbotAApg3_v1q24851.jpg
设备准备就绪
 

 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费