【学部生向け】画像処理実践編 第一回 解答

※本記事は研究室内向けに記述しております
 著作物のため本コードはフルコードの記載は控えております

柏尾研究室のCNN班に所属していただいてありがとうございます!
前回の記事の問題解答を本記事では紹介していきます。

まず各問題の回答を記載していきます

解答集

学部生問題1

import glob

学部生問題2〜3

file1(2)=glob.glob(‘C:\\Users\\~~~\\for_B4\\データセット\\x_train(test)_New\\*.jpg’)

学部生問題4

X_train=[]
X_test=[]

学部生問題5〜6、9

変数=pd.read_csv(‘C:\\Users\\~~~\\for_B4\\データセット\\Y_train(test)_New_2.csv’)

学部生問題7

model = lenet(input_layer)

学部生問題8

epoch= 適宜

数値を変化させて結果の変化を楽しんで下さい

本コードの内容紹介

ライブラリのインストール

1-37行

本プログラムで必要なライブラリをインストールするコード部分です。
Pythonが機械学習で用いる理由はここにあり、この機械学習に対するライブラリの多さは他の言語には無い強みです。

学習用データの処理(画像データ)

40-46行目

本機械学習で用いる画像データセットの全てのファイルパスを取得しています。
また、natsortedを用いる事で、自然的な昇順でのファイル順にパスを入れ替えしています。

print(file1)

とすることで、ファイル順を参照する事が可能です。

51-77行目
ファイルパスによって参照した各画像データを、
58行目:ピクセル単位のRGB(255,255,255)のデータに
59行目:画像サイズを224,224のサイズに変更
64,65行目:ピクセル単位の値を0-1スケールにする(機械学習で用いやすい値に)

for i, file in enumerate(file1):
        image = Image.open(file)
        image = image.convert("RGB")
        image = image.resize((224, 224))
        data = np.asarray(image)
        X_train.append(data)
X_train = np.array(X_train)
X_train = X_train.astype('float32')
X_train = X_train / 255.0

学習用データの処理(数値データ)

86-103行目
LEDの画像データに対する明るさ(全光束)のデータをcsvから参照

106-109行目
このまま機械学習のデータとして用いると、学習データとしてランダム性がないため適切な学習が行えない。
そのため、学習データのみ本コードを用いてデータをシャッフルする。

index=np.random.permutation(len(X_train)) #permutationはランダムに並べて変数にコピーする
Y_train=Y_train[index]
X_train=X_train[index]

モデルの定義と実行

114-135行目
後に用いる学習制度の履歴を画像データとして保存するためのコード

143-159行目
LeNetのモデル層を定義する
これらは、本記事を閲覧している研究生にも適宜定義してもらう必要がある。

182-212行目
本モデルの学習パラメータ等を定義する部分です。
182行目:LeNetの入力層に入力する画像サイズの定義部分
  224,224,3←画像のサイズ(横)、画像のサイズ(縦)、チャネル数
191行目:summaryを用いる事でモデル層を実行後に確認する事ができる

結果の評価

246-286行目
txtファイルに予測結果と真値を出力し、実行結果を確認できるように

290-304行目
モデルを保存する
のちに学習したモデルを取り出せるように

本チュートリアルコードは学部生にも理解できるように冗長なコードであると言える。
そのため、実際にコードを記述する際は適宜モジュールにコードを分ける事で、他者にも理解しやすいコードにする必要がある

この記事が気に入ったらサポートをしてみませんか?