大发彩神大发云登录—彩神快3程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

  • 时间:
  • 浏览:2

对于上了床就再也大发彩神大发云登录—彩神快3不 想下来的人来说,关灯成为睡觉前面临的最大挑战!

然而这一届女前男友 永远不需要你还都都可以 失望,亲大发彩神大发云登录—彩神快3戚亲戚朋友开发出了各种关灯大法:

当然少不了憨豆先生最简单粗暴的关灯法律依据 :

然而,2个多多多多来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制一点人家的灯,整个过程利用2个多多多多神经网络实现,就像如此 :

下面是小哥哥写的教程,文摘菌在不改变原意的基础上进行了编译。

在今天的文章里,我将手把手教亲戚亲戚朋友训练2个多多多多神经网络模型,用来识别摄像头拍下的“舞步”,从而控制灯的开关。

亲戚亲戚朋友将在已有的OpenPose强度学习模型之上建立亲戚亲戚朋友一点人的模型来识别身体的位置,或者,亲戚亲戚朋友会建立一点样如此 代表各种身体的各种姿态。

当亲戚亲戚朋友建立好舞步(包括嘻哈超人舞步、T-Pose舞步)和一点身体姿态的样本后,亲戚亲戚朋友会清理数据集,或者利用哪些样例训练亲戚亲戚朋友的神经网络。

当神经网络训练好后后,亲戚亲戚朋友会用它来控制灯光。

今天的文章包括所以步骤,不过,所有的代码完整版都是Github上,上边还包括了我机会搜集到的原始数据样例。

GitHub链接:

https://github.com/burningion/dab-and-tpose-controlled-lights

编写“编写软件”的软件:要怎样训练你的神经网络?

首先也不 数据——大量数据。

亲戚亲戚朋友今天即将采用的神经网络模型卡内基梅隆大学的团队也如此 使用过,亲戚亲戚朋友用一点人的全景数据集来训练该模型。该数据集包括5个半小时的视频,视频中涵盖了3000万个手动加带的代表人体骨骼位置的标签。

整个全景工作室的圆屋顶上装有30000个摄像头,所有摄像头都对准人,不须同强度记录亲戚亲戚朋友的动作。

这一全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。

今天,亲戚亲戚朋友将在亲戚亲戚朋友的工作基础之上始于英文英文亲戚亲戚朋友的工作。

首先亲戚亲戚朋友会用亲戚亲戚朋友的工具来创建2个多多多多很小的数据集。亲戚亲戚朋友最终的神经网络只会使用172个多多多多姿态,包括记录的嘻哈超人舞步、T-Pose舞步和一点姿态。每2个多多多多姿态样例完整版都是从卡耐基梅隆大学已有的工作中提取出来的。

神经网络的2个多多多多好处完整版都是你还都都可以 使用别人机会建成的模型,或者加大发彩神大发云登录—彩神快3入一点新的神经网络层,以此来扩展该模型。这一过程被称之为迁移学习,或者亲戚亲戚朋友还都都可以 用有限的资源来进行迁移学习。

从技术上来说,亲戚亲戚朋友不需要在这一项目中使用迁移学习,机会亲戚亲戚朋友会对OpenPose的工作做一点细微的修改,或者创建2个多多多多独立的神经网络。

如此 难题来了,亲戚亲戚朋友该要怎样获取数据呢?

使用OpenPose的成果,亲戚亲戚朋友得到了25个代表人体骨骼架构的标签。亲戚亲戚朋友还都都可以 写2个多多多多tcp连接来控制网络摄像头,在图像上运行OpenPose,或者将动作与键盘上的按键相对应。

也也不 说,亲戚亲戚朋友做出2个多多多多T-Pose的动作,或者在键盘上点击m键,如此 这一动作就被归到T-Pose那一类里。亲戚亲戚朋友按照这一法律依据 去加带172个多多多多不同的姿势,如此 一来,亲戚亲戚朋友完整版都是数据训练神经网络了。以下是用于数据分类分类整理的代码的示例:

  1.  

或者用NumPy的数组来储存型态,并用np.save函数把型态保存为二进制文件以便后续使用。我一点人倾向于使用Jupyter notebook来观察和解决数据。

当数据分类分类整理好后后,亲戚亲戚朋友还都都可以 观察并清理数据以便更好地去训练模型。

观察数据、清理数据以及使用数据训练模型

这累积看上去很繁杂,或者通过使用Jupyter notebook、NumPy和Keras,亲戚亲戚朋友就还都都可以 很直观地去观察数据、清理数据,或者使用数据来训练神经网络。

根据亲戚亲戚朋友的截图,亲戚亲戚朋友还都都可以 发现npy文件中保存的数据和OpenPose模型一种生活就2个多多多多多维度,25个已知的身体位置坐标点,X、Y、以及Confidence。

亲戚亲戚朋友的模型训练工作非要用到confidence。机会某个身体位置坐标点被命名了,亲戚亲戚朋友就保留它,或者,亲戚亲戚朋友就直接让它为0。

亲戚亲戚朋友机会把(绝大累积)数据梳理好了,现在亲戚亲戚朋友还都都可以 把数据型态和标签结合起来。

亲戚亲戚朋友用0代表一点姿势,1代表嘻哈超人舞步、2代表T-Pose舞步。

  1. labels = np.zeros(len(otherDataset))labels = np.append(labels, np.full((len(dabDataset)), 1))labels = np.append(labels, np.full((len(tposeDataset)), 2))print(labels)print("%i total examples for training." % len(labels)) 

接下来,亲戚亲戚朋友还都都可以 使用独热编码解决亲戚亲戚朋友的数字标签。也也不 说,亲戚亲戚朋友将标签0、1、2转加带[1,0,0]、[0,1,0]、[0,0,1]。后后,亲戚亲戚朋友还都都可以 使用sklearn的shuffle函数将数据标签和型态打乱(数据标签和型态仍保持原有的对应关系)

  1.  

亲戚亲戚朋友的输入数据代表着鼻子、手等等的位置,而它们的是介于0到720和0到123000之间的像素值,所以亲戚亲戚朋友还都都可以 把数据归一化。如此 一来,亲戚亲戚朋友还都都可以 重复使用亲戚亲戚朋友的模型而不需要考虑输入图片数据的分辨率。

  1. X1[:,:,0] = X1[:,:,0] / 720  

在最后一步中,亲戚亲戚朋友将把亲戚亲戚朋友的多维数据变成一维。亲戚亲戚朋友会分批向模型输入3000个位置信息(25个部位,每个部位的X和Y值)。

在Jupyter notebook中使用Keras还都都可以 把训练和测试神经网络模型的工作变得十分简单,这也是我最喜欢Keras的地方。

现在亲戚亲戚朋友的数据机会贴上标签准备就绪了,亲戚亲戚朋友还都都可以 始于英文英文训练2个多多多多简单的模型了,只还都都可以 几行代码。

现在亲戚亲戚朋友导入Keras库或者训练2个多多多多简单的神经网络模型。

  1. from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activation, Flattenfrom keras.optimizers import SGD 
  2. model = Sequential()model.add(Dense(128, activation='relu', input_shape=(3000,)))model.add(Dropout(0.5))model.add(Dense(128, activation='relu'))model.add(Dropout(0.5))model.add(Dense(y1.shape[1], activation='softmax'))model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])model.fit(X1, y1, epochs=30000,batch_size=25

追到!

这里有个稍微还都都可以 注意的地方,输入层的大小为3000,提醒亲戚亲戚朋友一下,这一数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。

最后亲戚亲戚朋友用到了Softmax层,它是用来分类的。亲戚亲戚朋友将y.shape[1]传入该层,如此 亲戚亲戚朋友的模型就知道不相似别的数量了。

最后的最后,亲戚亲戚朋友使用输入数据,用model.fit()的法律依据 去训练模型。这里,我机会做了30000次迭代(完整版样本训练一次为一次迭代)。30000次迭代貌似如此多怎样多了,30000次左右的迭代机会更好,机会迭代次数如此来越多机会使亲戚亲戚朋友的模型出先一点过拟合难题。或者不论是哪一种生活状况,你都还都都可以 经如此来越多次尝试来取舍迭代次数。

当亲戚亲戚朋友运行这段代码时,亲戚亲戚朋友会想看 准确度在提高。机会你看非要,请再次确认当你打乱数据时,数据标签和数据型态的对应关系是不变的。此外,也要确认数据里的数值是完整版都是在0到1之间。

最后,亲戚亲戚朋友还都都可以 保存训练后的模型,也还都都可以 使用样本数据集来测试该模型,保存模型的代码很简单:

  1. model.save('data/dab-tpose-other.h5' 
  2.  

亲戚亲戚朋友现在机会有了还都都可以 识别姿势的模型,接下来要做的也不 把这一模型和无线灯光控制关联起来就行了。

在我的这一例子中,我使用Aeotec Z-Stick来发送Z-Wave指令,并配2个多多多多多GE Z-Wave的室外开关。USB接口接入到NVIDIA TX2人工智能模块,我我我觉得NVIDIA的Jestson Nano都都可以 胜任,尽管Jetson Nano所能提供的分辨率要低于我样例中123000x720的分辨率。当Z-Stick插入到ARM设备后,你首先还都都可以 把开关调到Z-Wave模式,机会还都都可以 多按几下USB Stick上的按钮和灯的开关。

代码不须繁杂,基本上也不 训练环境加带带2个多多多多额外的步骤。现在,亲戚亲戚朋友导入Keras,或者使用清理过的数据训练模型。

  1. import cv2import pyopenpose as opfrom imutils import translate, rotate, resizeimport openzwavefrom openzwave.option import ZWaveOptionfrom openzwave.network import ZWaveNetwork 

到了这一步,工作基本上就算完成了!

亲戚亲戚朋友成功地训练了2个多多多多用于识别嘻哈超人舞步、T-Pose舞步的神经网络模型,或者亲戚亲戚朋友还都都可以 让它根据亲戚亲戚朋友的舞步来制造可互动的灯。

太棒了,给一点人点个赞!

所有代码、模型以及训练数据都免费发表声明在Github上。

我建议亲戚亲戚朋友在Jupyter notebook上试试这一项目。我的代码涵盖个漏洞,我突然无法从一点人的工作簿中找出来。这一漏洞意味我的原始的X和Y标签并如此 被正确地标记。机会你找到了解决这一漏洞的法律依据 ,记得在Github上创建2个多多多多Pull Request(PR)。

另外,亲戚亲戚朋友今天构建的基础模型还都都可以 用来训练所以类型的舞蹈动作。尽管我的模型每秒非要捕捉很少的画面,但亲戚亲戚朋友还都都可以 始于英文英文建立2个多多多多有关舞步的数据集,或者再构建2个多多多多能识别哪些不同舞步的神经网络模型。

【编辑推荐】

【责任编辑:

张燕妮

TEL:(010)684763006】



点赞 0