これまでの学習ではデータセットが与えられた状態からの学習をしていたので、自分でデータセットを作ってみることにしました。
男性と女性の画像を集めて来たので、そこからデータセットを作成しました!
実行環境
MacOS、Python3.6(anaconda)、VSCode
画像をデータセットにする方法
今回データセットを作成するときに参考にさせていただいた記事になります。
今回は画像のフォルダを4つ使いました。男性2つと女性2つです。
今回のデータセット作成の流れを言葉で表すと
①画像フォルダの中にある、ファイルを1枚ずつ取り出して、グレースケール化行う
②取り出すときにどのフォルダから取り出したかインデックス番号も一緒に取得する
③グレースケール化した画像を自分の好きなサイズに変更する
④**[画像、その画像が入ってたフォルダのインデックス番号]**の順になるように、リストに格納していく
*今回は合計で400枚ほどでしたので、最後のリストには800個の要素が入っていることになります。
詰まった点
④でリスト化した値を取り出したいなと思ったときに、for文で2つ変数を用意すれば、1個飛ばしでデータが取り出せることは知らなかったので、驚きでした。
for feature, label in training_data:
さらに、ここからはメモ代わりに残しておきます。
os.listdir(A)
Aの中にあるファイルの一覧を表示できます。
*Aというフォルダの中に(B, C, D)というファイルがあれば、B, C, Dを取得できる。
os.path.join(A, B)
AとBを結合したPathを生成できます。
cv2.imread(‘画像データ’)
画像データから配列の形に変換できます。
enumerate(変数名)
for文で取り出すときに、**「インデックス番号 要素」**で取り出せる
try:
条件式
except:
pass
tryに条件式を書く + exceptにpassを書く= tryの条件式が来てもスルーする
*この条件式を書いてない時はエラーが起きる
最後に、matplotlibで日本語表記ができなかったのですが、
Macにおけるmatplotlibの日本語表示
こちらの記事を参考にして、日本語表記ができました。
import matplotlib as mpl
matplotlib.rcParams[‘font.family] = ‘AppleGothic’
こちらのコードを書けば日本語表記にすることができます!
これからの課題
今回は男性と女性の顔の画像だけを本当は切り抜きたかったのですが、わからなかったので、とりあえず、そのままのデータでデータセットを作成しました。
なので、顔だけを切り抜くという処理を入れてデータセット作るようにまた調べていきたいと思います。
まとめ
一応、データセットが分けられているか確認したところ、上手くできていました。
こうして自分で作ってみると、こんな風にしてデータセットを作成していっているんだなと感動しましたし、勉強になるところが多かったです。