質問: 画像認識用の畳み込みニューラルネットワーク(CNN)を作ろうと思います。 CNNの知識は、「ゼロから作るDeepLearning」くらいの初心者です。実装は、MNISTのみやりました。 そこで、いくつか質問があります。 ・インターネット上の文献やチューリアルは、どれも入力画像が正方形です。実際、入力画像は正方形出ないといけないのでしょうか?正方形の方が精度が高くなるのでしょうか?なぜ、正方形なのでしょうか? ・動画データなど、10枚の画像で1つのラベルをつけているとき、入力画像はどのように渡すべきでしょうか? 10枚渡して、その結果の平均値を出力として、処理すべきでしょうか? 回答よろしくお願いします。
回答: 2つの質問にお答えさせていただきます > > ・インターネット上の文献やチューリアルは、どれも入力画像が正方形です。実際、入力画像は正方形出ないといけないのでしょうか?正方形の方が精度が高くなるのでしょうか?なぜ、正方形なのでしょうか? > > > 結論から言いますと、正方形である必要性はありませんし正方形のほうが精度が高くなるということはありません。 一般的に正方形が使われている理由としましては、 CNNの作り方にもよるのですが、一般的に(Global Average Poolingなどのような手法を使っていなければ)CNNは同じサイズの画像しか処理することができません。(たとえば、224✕224の画像で学習された藻でrに300✕300を入れることができない)そのため正方形でモデルを作って、入力画像を中央をクロップしたり、無理やり正方形にリサイズして利用することが多くなります。 > > ・動画データなど、10枚の画像で1つのラベルをつけているとき、入力画像はどのように渡すべきでしょうか? > > 10枚渡して、その結果の平均値を出力として、処理すべきでしょうか? > > > やり方はいろいろあります。 おっしゃられている方法もその一つだと思います。(その上でやりやすいのでかなり有力かと) その他のやり方としては(いままで見たものをすべて書いているので筋悪のものもありますが)、 * CNNで得られた特徴量をLSTMに入力する * 3D(3次元目は奥行方向ではなく時間方向とする) CNNなどを利用する * CNNで得られた特徴量を混ぜて入力するような識別器を作る。 * channel 方向に画像をすべて入れてしまう * 画像を横にくっつける