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

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

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

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

機械学習

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

Python

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

Q&A

解決済

1回答

1038閲覧

Remove zero-center by mean pixelとは?

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

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

機械学習

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

Python

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

0グッド

1クリップ

投稿2018/01/16 08:08

このKerasを使ったneural_style_transferのコードを読んでいたのですが、以下の関数で分からないところがあります。

Python

1def deprocess_image(x): 2 if K.image_data_format() == 'channels_first': 3 x = x.reshape((3, img_nrows, img_ncols)) 4 x = x.transpose((1, 2, 0)) 5 else: 6 x = x.reshape((img_nrows, img_ncols, 3)) 7 # Remove zero-center by mean pixel 8 x[:, :, 0] += 103.939 9 x[:, :, 1] += 116.779 10 x[:, :, 2] += 123.68 11 # 'BGR'->'RGB' 12 x = x[:, :, ::-1] 13 x = np.clip(x, 0, 255).astype('uint8') 14 return x

この「# Remove zero-center by mean pixel」の下の3行は何ですか?
画像のB, G, Rにそれぞれ103.939, 116. 779, 123.68を足してるのだと思いますが、これは何のための処理ですか?この数字はどこから来たのですか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

ひょっとしてと思い「103.939」でググってみました。

http://snowman-88888.hatenablog.com/entry/2017/04/01/043624

がヒットしました。

VGGモデルは、通常入力画像を(batchsize,channels,height,width)、channelsはRGBではなくBGRという形式のnumpyarrayに整形する必要があるが、これはそれらの操作を行ってくれる。また、256x256へリサイズ、224x224へクロップする作業、VGG16の平均画素[103.939, 116.779, 123.68]の引き算も同時に行う。

なんでもまずはググってみるもんだと思います。

追記:
ちょっと尻切れ的なので多少補足します。自分は上記の記事で全てがわかったわけではありません。しかし次のことを思い出しました。色の表現方法には何通りもありますね。例えばRGBはハードウェアが色を再現するのに単純で扱いやすい形式ですがその表現は「人間の色彩の特徴にマッチしない」点があるそうです。色空間の表現にはそれぞれ「何かの目的にかなうような特徴」を備えているのだと思います。そういうものとRGBのようなものとの間で変換をする際にはマジックナンバー(なんだかよくわからない定数)による変換が必要になることがあります。BGRとRGBとの変換ではそういう意味合いでの「マジックナンバー」が必要でそれがコードに用いられている定数ということだと思います。

上記のように検索してみるとRGB, BGRという色空間の変換であることがわかりますのでその定数が実際にどういう意味を持つかはBGRを調べればわかるのではないかと思います。自分はそこまで見てませんがより詳しく調べるにはさらに調べると色々わかると思います。

投稿2018/01/16 08:20

編集2018/01/16 08:32
KSwordOfHaste

総合スコア18394

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

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

KSwordOfHaste

2018/01/16 08:39 編集

なるほど!ある意味多くの人が疑問に思ったり落とし穴に落ちるあるあるなのですね。 こういうFAQがあると助かる人が多いだろうと思います! fuzzballさんコメントのサイトをみると、「追記」に書いたことが的外れな内容でないか若干不安が・・・
fuzzball

2018/01/16 08:46

【追記を見て】最初見たとき、グレースケールで使う r * 0.298912 + g * 0.586611 + b * 0.114478 かと思ったのは内緒ですw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問