質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • Python

    6352questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    559questions

  • 機械学習

    555questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • Keras

    145questions

  • 深層学習

    117questions

低解像度の画像をCNNで学習させて、精度を上げるには

解決済

回答 2

投稿

  • 評価
  • クリップ 4
  • VIEW 1,456

nagagutsu_af

score 24

質問内容

ILSVRC に使われる CNN モデルの学習データに関する質問です。
学習データの画像サイズが、既存 CNN モデルの推奨サイズより大きい場合はダウンスケーリングすると思うのですが、
画像サイズが小さい場合はアップスケーリングをするのが一般的なのでしょうか?

VGG16 (推奨サイズ 224×224) でアップスケーリングする場合、たとえば

64×64 → 224×224 にすると 1×1 あたり 3.5×3.5[pix]
32×32 → 224×224 にすると 1×1 あたり 7×7[pix]
16×16 → 224×224 にすると 1×1 あたり 14×14[pix]

となるので、フィルタ(カーネル)サイズ 3×3 では特徴抽出がうまくできないのではないか?という疑問があります。

アップスケーリングをしない(64×64 で入力する)場合、VGGならプーリング5回でfc層手前で 2×2[pix] になるので、
それはそれで学習しにくいのではないか?という疑問があります。

また、入力画像サイズやモデルのフィルタサイズを変更して学習する場合、
変更前のモデルで Fine-Tuning された重みは、初期値として使えるのでしょうか?

補足情報(言語/FW/ツール等のバージョンなど)

TensorFlow(Python 3.x) で構築

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

自然な形でグラデーションとしてアップサンプリングしているのであれば意味はあるのではないでしょうか。
いきなりプーリング層が来ているわけではないので、問題にならないと思います。

それよりも、入力画像がそこまで小さいのなら、ネットワークを縮小させたほうが学習時間も短縮できるのでいいのではないでしょうか。
パラメータの数が多すぎて過学習しやすくなることが予想されます。

乱数でも初期値として使えるのですが、転移学習としての期待する効果が得られるのかは問題とデータ次第ではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/09 17:41

    グラデーションとしてアップサンプリングというのは、画像補間ってやつでしょうか。
    OpenCV に補間のライブラリが幾つかあるようなので、使ってみようと思います。

    ネットワークの縮小は、畳み込み層とプーリング層のブロックを減らすということですか?
    それとも、特徴マップの数や全結合層のパラメータを減らすということでしょうか?
    「低画質で人間では識別不能なものを識別する」みたいな研究を大学でやっているので、なんとか精度を上げる方法を模索中です。(超解像のCNNをするには時間がありません・・・)

    キャンセル

  • 2018/01/09 19:59

    単純補間のアップサンプリングがどれほどうまく働くのかは画像の粗さ次第でしょうね。

    https://qiita.com/shngt/items/9c86e69e16ce6d61a0c6
    研究なさっているのならDeconvolutionについてはもうご存知かもしれませんが、一応。
    入力のところにDeconvolutionつけて、出力のところに層を追加すれば転移学習がすぐにできそうです。

    縮小する際はパラメータを減らすのが一般的だと思います。
    プーリング層があると小さくなるのでConv2Dで代用する工夫などが必要です。
    ResNetが参考になるのではないでしょうか。

    荒い画像といえば、
    https://www.kaggle.com/c/statoil-iceberg-classifier-challenge/kernels
    こんなコンペが行われています。
    後一週間後に終了して更に一二週間経てば上位者の手法が見れるはずです。

    画像自体だけでなく、波数空間に変換したりいろいろと工夫をしているようです。
    大学の研究ならば、そのような小細工なしの手法が望まれているかもしれませんが。

    識別できるのであれば、人間の直感に合わないだけで何かの特徴があるはずです。
    そうでなければ超解像の手法がないと困難だと思われます。

    GANならGithubに落ちているものを利用できるかもしれませんが、時間がかかる可能性がありますね。
    https://elix-tech.github.io/ja/2017/02/06/gan.html

    キャンセル

  • 2018/01/10 05:57 編集

    詳しい回答ありがとうございます!
    もう数年大学で研究を続けるので、今後の参考にさせていただきますm(_ _)m

    キャンセル

+3

モデルによって多少異なるかもしれませんが、参考までに結果を随時載せていきます。

入力画像

モデルの推奨サイズにアップスケーリングした方が精度が上がりました。
(アップスケーリングする際にデフォルトで何らかの補間が入ってしまうせい?)

画像補間

写真(イラストでない)の場合は、

ダウンスケーリング:Area補間
アップスケーリング:Bicubic補間

でノイズ軽減・グラデーションの効果がありました。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    kerasを用いたCNNでの犬猫判別

    Mac OS Sierra 10.12.1 現在kerasを用いたCNNで犬猫判別をしています。 犬猫の画像を128*128(3チャンネル)にリサイズして ミニバッチを採用して

  • 受付中

    DeepLearning CNN 画像のサイズについて

    CNNで画像分類をやろうと考えています。 現在、画像を収集している段階なのですが、画像のサイズが様々あり、リサイズする必要があります。 そこでなのですが、学習に都合の良い画

  • 解決済

    TensoeFlowの画像分類(CNN)の処理が分からない.

    以下のコードがどういった処理を行っているのかわかりません. TensorFlowを用いた画像分類のCNN法のコードなのですが,どういう方法でニューラルネットワークを構築しているのか

  • 受付中

    CNNで生成したモデルをGradCAMアルゴリズムで可視化したい

    初めまして,深層学習を学んでいる者です。 現在,CNNで画像を学習し,5つの物体の画像認識をしています。 CNNで生成したモデルの可視化を行うために,Grad-CAMアルゴリズムを

  • 受付中

    CNNに関する他人の"感覚"からですけれども

    oookabe様の質問記事【D-CNNの画像特徴抽出に対する誤解?】 (https://teratail.com/questions/118130)の中に下記内容が書かれました:

  • 受付中

    CNN+DNN分類策略について

    例えば、 {キャベツ、トマト、牛蒡、胡瓜、西瓜、ネギ、玉ネギ、、、}を野菜とし {メロン、林檎、砂糖キビ、ナツメ、キウイフルーツ }を果物とします。 このような分類は視覚上全然

  • 解決済

    CNN・NDD 訓練プロセスに関する初歩的な質問

    御免なさい、 『初歩的な質問』と言っても、相当難しいかも知れません。 まず、学習画像サンプルの分割に関する確認事項2件: 1.L個の学習画像サンプルをM個のbatchに分割

  • 受付中

    CNNにおける学習画像と推論(TEST)時の画像とのサイズ不一致問題

    皆さん お世話になっております。 DLの聖殿の回りを彷徨ってまいりました。 最近入口を見つけて一歩中へ踏み出しようとしたが、 すぐさま扉にぶつかって、頭がまた痛くなりました。

同じタグがついた質問を見る

  • Python

    6352questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    559questions

  • 機械学習

    555questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

  • Keras

    145questions

  • 深層学習

    117questions