現在、Pytorchを使用して画像の自動識別させる機械学習モデルの構築を行っています。
transformで正規化(標準化)があるのですが、**transforms.Normalize(mean = [0.5, 0.5, 0.5],std=[0.5, 0.5, 0.5])**のようなお決まりのパターンではなく、
現在使用している複数枚の画像のRGBの画素値から平均や標準偏差を求め、それを使って正規化(標準化)を使いたい為、コードを書いたのですが、表題にあるエラーが発生してしまいました。
コードの流れはPytorchを使用している為、全体の画像データをImageFolderに入れてからTrainとValに分けてTrainのデータセットを使って正規化(標準化)させる為の平均、標準偏差を算出しています。
以前、やった時はこれでエラーが発生していなかったのですが、今回は発生してしまい、確認したのですが、原因が分かっておりません。
下記コードを添付していますので、お手数おかけしますが、回答のほどよろしくお願い致します。
# Transforms定義(正規化無し生画像で正規化計算用) # 訓練データ用 (正規化前): input_gaso_no = [(256,256)] train_transform = transforms.Compose([ transforms.Resize(input_gaso_no), transforms.ToTensor(), ]) # データセット定義(正規化計算用) # 訓練用 train_data = datasets.ImageFolder(train_dir , transform = train_transform) # 正規化計算(平均,分散) def normalization (train_data): image_arr=[] image_ave_std=[] image_mean = [] for i in range(train_data.__len__()): **image , idx = train_data[i]** → ここがエラーの元になっているのですが、どう対処するか分からないです。 image_arr.append(image.numpy()) image_mean = np.average(image_arr , axis =1) for image in image_mean: image_ave_std.append([image[0].mean() , image[1].mean() , image[2].mean() ,image[0].std() ,image[1].std() , image[2].std()]) df_image_ave_std = pd.DataFrame(image_ave_std , columns=['R(Ave)','G(Ave)','B(Ave)','R(Std)','G(Std)','B(Std)']).mean() print(df_image_ave_std) return df_image_ave_std df_image_ave_std = normalization (train_data) image_ave_std_arr = df_image_ave_std.to_numpy() image_ave_arr , image_std_arr = np.array_split(image_ave_std_arr , 2) print(image_ave_std_arr) print(image_ave_arr) print(image_std_arr)
回答1件
あなたの回答
tips
プレビュー