質問編集履歴

1

自分なりに進めていたら変更点があった

2020/12/13 07:36

投稿

huton
huton

スコア30

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,19 @@
6
6
 
7
7
  このモデルと取得した手の関節のデータを使って[このサイト](https://blog.amedama.jp/entry/2018/05/08/033909)内の`学習済みモデルを復元する`に書かれているようなラベルの識別をリアルタイムでやってみたいと考えています。
8
8
 
9
- なので模様見まねでやってみたのですが以下ようなエラーが発生してしまいました。そのようにしたら学習済みモデルと取得した指の関節のデータからリアルタイムに識別を行えるでしょうか?
9
+ なので模様見まねでやってみたのですがサイト
10
+
11
+ ```
12
+
13
+ >>> clf.predict([X_last])
14
+
15
+ array([2])
16
+
17
+ ```
18
+
19
+ ように文字が表示されません。
20
+
21
+ これは識別が行えているのでしょうか?
10
22
 
11
23
 
12
24
 
@@ -26,10 +38,16 @@
26
38
 
27
39
  from keras.models import load_model
28
40
 
29
- date=[]
41
+
30
42
 
31
43
  controller = Leap.Controller()
32
44
 
45
+
46
+
47
+ date=np.arange(63,dtype = 'float64')#配列作成
48
+
49
+
50
+
33
51
  class frameframe():
34
52
 
35
53
  finger_names = ['Thumb', 'Index', 'Middle', 'Ring', 'Pinky']
@@ -42,7 +60,7 @@
42
60
 
43
61
  for hand in f.hands:
44
62
 
45
- arm = hand.arm
63
+  self.arm = hand.arm
46
64
 
47
65
  direction = hand.direction
48
66
 
@@ -56,49 +74,41 @@
56
74
 
57
75
               if self.finger_names[finger.type] == 'Thumb':
58
76
 
59
- if self.bone_names[bone.type] == 'Metacarpal':
77
+   if self.bone_names[bone.type] == 'Metacarpal':
60
-
78
+
61
- date.append(bone.direction.x)
79
+   self.Thumb_meta_x=bone.direction.x
62
-
80
+
63
- date.append(bone.direction.y)
81
+   self.Thumb_meta_y=bone.direction.y
64
-
82
+
65
- date.append(bone.direction.z)
83
+   self.Thumb_meta_z=bone.direction.z
66
-
84
+
67
- if self.bone_names[bone.type] == 'Proximal':
85
+   if self.bone_names[bone.type] == 'Proximal':
68
-
86
+
69
- date.append(bone.direction.x)
87
+    self.Thumb_prox_x=bone.direction.x
70
-
88
+
71
- date.append(bone.direction.y)
89
+    self.Thumb_prox_y=bone.direction.y
72
-
90
+
73
- date.append(bone.direction.z)
91
+    self.Thumb_prox_z=bone.direction.z
74
-
75
- if self.bone_names[bone.type] == 'Intermediate':
76
-
77
- date.append(bone.direction.x)
78
-
79
- date.append(bone.direction.y)
80
-
81
- date.append(bone.direction.z)
82
-
83
- if self.bone_names[bone.type] == 'Distal':
84
-
85
- date.append(bone.direction.x)
86
-
87
- date.append(bone.direction.y)
88
-
89
- date.append(bone.direction.z)
90
92
 
91
93
  ------------------------------省略-------------------------------------
92
94
 
95
+ if self.bone_names[bone.type] == 'Intermediate':
96
+
97
+ self.Pinky_inter_x=bone.direction.x
98
+
99
+ self.Pinky_inter_y=bone.direction.y
100
+
101
+ self.Pinky_inter_z=bone.direction.z
102
+
103
+ if self.bone_names[bone.type] == 'Distal':
104
+
93
- date.append(arm.direction.x)
105
+ self.Pinky_dist_x=bone.direction.x
94
-
106
+
95
- date.append(arm.direction.y)
107
+ self.Pinky_dist_y=bone.direction.y
96
-
108
+
97
- date.append(arm.direction.z)
109
+ self.Pinky_dist_z=bone.direction.z
98
-
99
-
100
-
101
-
110
+
111
+
102
112
 
103
113
  model = load_model("save_model.h5") # 学習済みモデルをロード
104
114
 
@@ -122,38 +132,72 @@
122
132
 
123
133
  if not f.hands.is_empty:#手をかざしているとき
124
134
 
135
+ print("not hand")
136
+
125
137
  test.onframe()#関数を読んで手の関数のデータの取得を行う
126
138
 
139
+      
140
+
141
+     #取得したデータを配列に当てはめる
142
+
143
+ date[0]=test.Index_dist_x
144
+
145
+ date[1]=test.Index_dist_y
146
+
147
+ date[2]=test.Index_dist_z
148
+
149
+ date[3]=test.Index_inter_x
150
+
151
+ ------------------------------省略-------------------------------------
152
+
153
+ date[60]=test.arm.direction.x
154
+
155
+ date[61]=test.arm.direction.y
156
+
157
+ date[62]=test.arm.direction.z
158
+
159
+
160
+
161
+ date=date.reshape(1,63)#配列の形を整える
162
+
163
+
164
+
127
- model.predict([date])
165
+ model.predict([date])#ラベルの識別
166
+
167
+
168
+
128
-
169
+ date=np.arange(63,dtype = 'float64')#配列リセット
129
-
130
-
170
+
131
- ```
171
+ ```
132
-
172
+
133
- エラーメッセージ
173
+ 実行結果
134
174
 
135
175
  ---
136
176
 
137
177
  ```
138
178
 
139
- Traceback (most recent call last):
140
-
141
- File "model.py", line 123, in <module>
142
-
143
- model.predict([date])
179
+
144
-
145
- File "C:\Users(ユーザー名)\anaconda3\envs\py37\lib\site-packages\keras\engine\training.py", line 1441, in predict
180
+
146
-
147
- x, _, _ = self._standardize_user_data(x)
148
-
149
- File "C:\Users(ユーザー名)\anaconda3\envs\py37\lib\site-packages\keras\engine\training.py", line 579, in _standardize_user_data
150
-
151
- exception_prefix='input')
181
+
152
-
182
+
153
- File "C:\Users(ユーザー名)\anaconda3\envs\py37\lib\site-packages\keras\engine\training_utils.py", line 145, in standardize_input_data
183
+
154
-
184
+
155
- str(data_shape))
185
+ not hand
156
-
186
+
157
- ValueError: Error when checking input: expected dense_1_input to have shape (63,) but got array with shape (1,)
187
+ not hand
188
+
158
-
189
+ not hand
190
+
191
+ hand
192
+
193
+ hand
194
+
195
+ hand
196
+
197
+
198
+
199
+
200
+
201
+
202
+
159
- ```
203
+ ```