加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动 > 正文

程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

发布时间:2019-07-25 13:03:47 所属栏目:移动 来源:啤酒泡泡、曹培信编译
导读:副标题#e# 对于上了床就再也不想下来的人来说,关灯成为睡觉前面临的最大挑战! 然而这一届网友永远不会让人失望,他们开发出了各种关灯大法: 当然少不了憨豆先生最简单粗暴的关灯方式: 然而,一个来自意大利拉不勒斯的小哥哥,决定利用舞步(身体姿势)

这部分看上去很复杂,但是通过使用Jupyter notebook、NumPy和Keras,我们就可以很直观地去观察数据、清理数据,并且使用数据来训练神经网络。

程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

根据我们的截图,我们可以发现npy文件中保存的数据和OpenPose模型本身都有三个维度,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. # now, let's shuffle labels and the array, the same wayfrom sklearn.utils import shuffleX1, y1 = shuffle(dataset, labels)# now let's label them for 'one hot'from keras.utils.np_utils import to_categoricaly1 = to_categorical(y1, 3) # we have 3 categories, dab, tpose, otherprint(y1.shape[1)] 

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

  1. X1[:,:,0] = X1[:,:,0] / 720 # I think the dimensions are 1280 x 720 ?X1[:,:,1] = X1[:,:,1] / 1280 # let's see?X1 = X1[:,:,1:]print(X1.shape)X1 = X1.reshape(len(X1), 50) # we got rid of confidence percentage 

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

构建并训练我们的模型

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读