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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

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

Q&A

解決済

2回答

11387閲覧

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

nagagutsu_af

総合スコア32

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

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

1グッド

4クリップ

投稿2018/01/09 06:43

###質問内容
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) で構築

退会済みユーザー👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

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

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

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

投稿2018/01/09 21:13

編集2018/01/10 10:30
nagagutsu_af

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

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

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

投稿2018/01/09 08:13

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagagutsu_af

2018/01/09 08:41

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

2018/01/09 10: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
nagagutsu_af

2018/01/09 21:07 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問