今回の記事はKerasの識別モデルを作成する際に、クラスごとに画像をフォルダー分けすると思いますが、その際の画像を揃える方が良いのかどうかについて記載いたします。
結論
結論から先に述べると画像の数量は揃えた方が(正確ではなくても、おおよそ一致)の方が良いです。
参考文献や論文、ネットの記事をみても画像は揃えるべきとよく言われている様です。
その理由として、Kerasの機械学習の仕組みを知ることが非常に有用です。
根拠
テストデータに100枚程度のさをつけた場合はやはり枚数の多いものが多く判別されます。
そお理由として中間層のきょどうが関係しております。
まず全体の流れとして大きく分けて2つの流れがあります。
特徴量の抽出と全結合層でクラスごとに識別させるというのがおおまかな流れ。
この特徴量抽出の際に画像の枚数に差があると枚数の多い画像の特徴量を多く認識し、余分な特徴量を全結合層で識別させる際に含んでしまうという流れです。
つまり簡単にいうと数字の「1」「2」を分類するために「1」100枚「2」10枚になると「1」の曲がっている上の部分を「2」の上の曲がっているものと同じと認識してしまうなどが極端な例になります。
実際にKerasのコードは私の過去記事を参照にいていただきたいのですが、全ての画像をラベル月の配列に格納して、ニューラルネットに何度も落としているのがわかるので、数を揃えているなどの操作をせずにある画像を全て学習しているのが分かります。
スクリプト上で画像の枚数を〜までなどの様に指定することは可能と思われます。感覚ですが±20枚程度のさであればそこまで偏重した学習モデルにはならないと思います。
コメント