リンク内容
↑のブログを参考にして、アメリカ手話のA~Z(合計26ラベル)をカメラで認識できるシステムを作成したいと思っています。
今、皆様の助けをいただきカメラが立ち上がるところまでは上手くいきました。
#【追記】
import nnabla as nnを追加することで、エラーメッセージはなくなりましたが、推論結果に「A」が表示されないです。
load model
[9.0499201e-13 8.3284620e-03 2.1359593e-13 9.3729278e-07 4.2998489e-02
9.3104863e-05 7.0083592e-11 8.0992570e-05 9.2842669e-07 5.9911050e-04
7.4407092e-10 2.2560068e-08 2.0808401e-04 8.7901944e-01 1.7035285e-07
4.3053884e-02 1.8338830e-04 8.9202439e-03 1.4667655e-09 1.6219448e-02
2.6256490e-15 2.4283212e-04 4.4393473e-05 5.1424081e-06 8.9699347e-07
9.0430478e-14]
#CSVファイルの内容はこれで間違いないのでしょうか?うまくいかないということは恐らく違うかもしれないです。(1枚目の画像)
#CSVファイルの保存場所 (2枚目の画像)
Python
1import nnabla as nn 2import nnabla.functions as F 3import nnabla.parametric_functions as PF 4from nnabla.utils.data_iterator import data_iterator_csv_dataset 5import os 6import cv2 7from datetime import datetime 8import pandas as pd 9import matplotlib.pyplot as plt 10import numpy as np 11from PIL import Image 12 13def network(x, y, test=False): 14 # Input:x -> 3,250,250 15 # MulScalar 16 h = F.mul_scalar(x, 0.003921568627450981) 17 # DepthwiseDeconvolution -> 3,256,256 18 h = PF.depthwise_deconvolution(h, (7,7), name='DepthwiseDeconvolution') 19 # ReLU 20 h = F.relu(h, True) 21 # MaxPooling -> 3,128,128 22 h = F.max_pooling(h, (2,2), (2,2)) 23 # Convolution -> 16,128,128 24 h = PF.convolution(h, 16, (3,3), (1,1), name='Convolution') 25 # MaxPooling_2 -> 16,64,64 26 h = F.max_pooling(h, (2,2), (2,2)) 27 # Tanh 28 h = F.tanh(h) 29 # Affine -> 100 30 h = PF.affine(h, (100,), name='Affine') 31 # ReLU_2 32 h = F.relu(h, True) 33 # Affine_2 -> 26 34 h = PF.affine(h, (26,), name='Affine_2') 35 # Softmax 36 h = F.softmax(h) 37 # CategoricalCrossEntropy -> 1 38 #h = F.categorical_cross_entropy(h, y) 39 return h 40 41cap = cv2.VideoCapture(0) # 任意のカメラ番号に変更する 42 43new_dir_path = "./realtime/" 44os.makedirs(new_dir_path, exist_ok=True) 45 46 #カメラスタート 47while True: 48 49 ret, frame = cap.read() 50 cv2.imshow("camera", frame) 51 52 k = cv2.waitKey(1)&0xff # キー入力を待つ 53 if k == ord('p'): 54 55 # 「p」キーで画像を保存 56 57 date = datetime.now().strftime("%Y%m%d_%H%M%S") 58 path = new_dir_path + date +".png" 59 cv2.imwrite(path, frame) 60 image_gs = cv2.imread(path) 61 62 path = new_dir_path + date +".png" 63 dst = cv2.resize(image_gs,(250,250)) 64 cv2.imwrite(path, dst) 65 66 f = pd.DataFrame(columns=["x:data","y:data"]) 67 xdata = path 68 ydata = 0 69 new_name = pd.Series([xdata,ydata],index=f.columns) 70 f = f.append(new_name, ignore_index=True) 71 f.to_csv('C:\Users\username\Desktop\output\valu.csv',index=False,header = True ) 72 73 test_data = data_iterator_csv_dataset("C:\Users\username\Desktop\output\valu.csv",1,shuffle=False,normalize=True) 74 75 76 #ネットワークの構築 77 nn.clear_parameters() 78 x = nn.Variable((1,3,250,250)) 79 t = nn.Variable((1,1)) 80 y = network(x, t) 81 82 nn.load_parameters('\Users\username\Desktop\output\yubidata.files/20210108_180946\results.nnp') 83 print("load model") 84 85 86 87 path = new_dir_path + "test" +".png" 88 cv2.imwrite(path, frame) 89 image_gs = cv2.imread(path) 90 91 path = new_dir_path + date +".png" 92 dst = cv2.resize(image_gs,(250,250)) 93 cv2.imwrite(path, dst) 94 95 f = pd.DataFrame(columns=["x:data","y:data"]) 96 xdata = path 97 ydata = 0 98 new_name = pd.Series([xdata,ydata],index=f.columns) 99 f = f.append(new_name, ignore_index=True) 100 f.to_csv('C:\Users\username\Desktop\output\valu.csv',index=False,header = True ) 101 102 test_data = data_iterator_csv_dataset("C:\Users\username\Desktop\output\valu.csv",1,shuffle=False,normalize=True) 103 104 105 #ネットワークの構築 106 nn.clear_parameters() 107 x = nn.Variable((1,3,250,250)) 108 t = nn.Variable((1,1)) 109 y = network(x, t) 110 111 nn.load_parameters('C:\Users\username\Desktop\output\yubidata.files/20210108_180946\results.nnp') 112 print("load model") 113 114 for i in range(test_data.size): 115 116 x.d, t.d = test_data.next() 117 y.forward() 118 print(y.d[0]) 119 120 121 elif k == ord('q'): 122 # 「q」キーが押されたら終了する 123 124 break 125 126 # キャプチャをリリースして、ウィンドウをすべて閉じる 127cap.release() 128cv2.destroyAllWindows()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/12 01:54