質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.34%

USBカメラ×Neural Network Consoleを用いたリアルタイム推論のエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 217

max12345

score 10

https://teratail.com/questions/315284#reply-439497 
URLを参考にして、プログラムを実行すると、以下のエラー文がでて推論できません。考えられる原因はなんでしょうか。 

エラー文

File "C:\Users\username\Desktop\output\capture.py", line 106, in <module>
y = network(x, t)

File "C:\Users\username\Desktop\output\capture.py", line 16, in network
h = PF.binary_connect_affine(x, name='BinaryConnectAffine')

TypeError: binary_connect_affine() missing 1 required positional argument: 'n_outmaps'

プログラム

import nnabla as nn
import nnabla.functions as F
import nnabla.parametric_functions as PF
from nnabla.utils.data_iterator import data_iterator_csv_dataset 
import os 
import cv2
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image


def network(x, y, test=False):
    # Input:x -> 3,250,250
    # BinaryConnectAffine -> 100
    h = PF.binary_connect_affine(x,(100), name='BinaryConnectAffine')
    # BatchNormalization
    h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization')
    # ReLU
    h = F.relu(h, True)
    # BinaryConnectAffine_2
    h = PF.binary_connect_affine(h,(100), name='BinaryConnectAffine_2')
    # BatchNormalization_2
    h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization_2')
    # ReLU_2
    h = F.relu(h, True)
    # BinaryConnectAffine_3
    h = PF.binary_connect_affine(h,(100), name='BinaryConnectAffine_3')
    # BatchNormalization_3
    h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization_3')
    # ReLU_3
    h = F.relu(h, True)
    # BinaryConnectAffine_4 -> 26
    h = PF.binary_connect_affine(h, (26), name='BinaryConnectAffine_4')
    # BatchNormalization_4
    h = PF.batch_normalization(h, (1,), 0.9, 0.0001, not test, name='BatchNormalization_4')
    # Softmax
    h = F.softmax(h)
    # CategoricalCrossEntropy -> 1
    #h = F.categorical_cross_entropy(h, y)
    return h




class_names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
cap = cv2.VideoCapture(0) # 任意のカメラ番号に変更する


new_dir_path = "./realtime/"
os.makedirs(new_dir_path, exist_ok=True)

 #カメラスタート
while True:

    ret, frame = cap.read()
    cv2.imshow("camera", frame)

    k = cv2.waitKey(1)&0xff # キー入力を待つ
    if k == ord('p'): 

   # 「p」キーで画像を保存

        date = datetime.now().strftime("%Y%m%d_%H%M%S")
        path = new_dir_path + date +".png"
        cv2.imwrite(path, frame)       
        image_gs = cv2.imread(path)

        path = new_dir_path + date +".png"
        dst = cv2.resize(image_gs,(250,250))
        cv2.imwrite(path, dst)

        f = pd.DataFrame(columns=["x:data","y:data"])
        xdata = path
        ydata = 0
        new_name = pd.Series([xdata,ydata],index=f.columns)
        f = f.append(new_name, ignore_index=True)
        f.to_csv('valu.csv',index=False,header = True )

        test_data = data_iterator_csv_dataset("C:\\Users\\username\\Desktop\\output\\valu.csv",1,shuffle=False,normalize=True) 


        path = new_dir_path + "test" +".png"
        cv2.imwrite(path, frame)       
        image_gs = cv2.imread(path)

        path = new_dir_path + date +".png"
        dst = cv2.resize(image_gs,(250,250))
        cv2.imwrite(path, dst)

        f = pd.DataFrame(columns=["x:data","y:data"])
        xdata = path
        ydata = 0
        new_name = pd.Series([xdata,ydata],index=f.columns)
        f = f.append(new_name, ignore_index=True)
        f.to_csv('valu.csv',index=False,header = True )

        test_data = data_iterator_csv_dataset("C:\\Users\\username\\Desktop\\output\\valu.csv",1,shuffle=False,normalize=True) 


        #ネットワークの構築
        nn.clear_parameters()
        x = nn.Variable((1,3,250,250))
        t = nn.Variable((1,1))
        y = network(x, t)

        nn.load_parameters('‪C:\\Users\\username\\Desktop\\output\\yubidata.files\\20210113_161413\\results.nnp')
        print("load model")

        for i in range(test_data.size):

             x.d, t.d = test_data.next()
             y.forward()
             print(y.d[0])   
             print(np.argmax(y.d[0]))
             print(class_names[np.argmax(y.d[0])])

    elif   k == ord('q'):
             # 「q」キーが押されたら終了する

        break

 # キャプチャをリリースして、ウィンドウをすべて閉じる
cap.release()
cv2.destroyAllWindows()

ネットワーク構造

イメージ説明

学習結果

イメージ説明

学習時に使った画像のパス AからZのフォルダ

イメージ説明

CSVファイルの中身 変更後

イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

考えられる原因

「n_outmaps」を指定してないから
TypeError: binary_connect_affine() missing 1 required positional argument: 'n_outmaps'

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/01/14 16:02 編集

    > FileNotFoundError: [Errno 2] No such file or directory:

    そんなファイル無い、って言われてますけど、

    > 'C:\\Users\\username\\Desktop\\output\\A_1.png'

    は合ってますか?

    質問で画像で挙げてるcsvだとフォルダの区切りは「\」(円マーク一つ)ですが、今回修正した「valu.csv」もそれと同じですか?

    キャンセル

  • 2021/01/14 16:56

    下記のコミュニティに参加して質問する方が、NNCに詳しい方からアドバイスをもらえると思いますよ
    https://dl.sony.com/ja/community/

    キャンセル

  • 2021/01/14 18:23

    teratailで質問を続ける場合でも、元々の質問の
    binary_connect_affine()
    でエラーが出る件は解決したのだから、ここで続けるのではなく、別の質問にしてください

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る