2017-03-02 8 views
0

私はtensorflowを使っていて、Cifar-10のオートエンコーダの入出力を視覚化しようとしています。私はどのように鮮明な画像を生成するのですか?Cifar-10

私はここで、この答えを以下のよ:Why CIFAR-10 images are not displayed properly using matplotlib?

ここで若干の変更で自分のコードを実行した結果は、(5,5にfigsizeを変更)です:

Visualized Images

しかし、これはさ元のページの画像ほどシャープではっきりしているところはまだありません。https://www.cs.toronto.edu/~kriz/cifar.html

どうすればよいですか?

答えて

0

ここでは二つの問題があるかもしれません:あなたの色チャンネル(赤、緑、青)が混在しているように見えます

1号。それはなぜ色がとても奇妙なのかを説明します。その場合は、以下に示すように配列内のカラーチャンネルを交換する必要があります。

# swapped color channels (R, B, G) rgb_image = rgb_image[:, :, [0, 2, 1]] plt.figure() plt.imshow(rgb_image) plt.axis('off') 

natural color

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.cbook import get_sample_data 

rgb_image = plt.imread(get_sample_data("grace_hopper.png", asfileobj=False)) 

# correct color channels (R, G, B) 
plt.figure() 
plt.imshow(rgb_image) 
plt.axis('off') 

swapped color channels

問題2:

matplotlibののplt.imshowNoneデフォルト指定されていない場合は、キーワード引数interpolationを持っています。 Matplotlibはローカルのスタイルシートを参照して、デフォルトの補間動作を決定します。スタイルシートによっては、補間が適用される可能性があり、画像の歪みが生じることがあります。 documentation for imshow for more detailsを参照してください。

Matplotlibが画像を補間しないようにするには、interpolation="none"plt.imshowに指定する必要があります。これは、デフォルトのNoneType値がNoneの場合、文字列値が"none"とは異なるため、混乱します。 matplotlibの2.0で

red = np.zeros((100, 100, 3), dtype=np.uint8) 
red[:, :, 0] = 255 
red[40:60, 40:60, :] = 255 

# with interpolation 
plt.figure() 
plt.imshow(red, interpolation='bicubic') 
plt.axis('off') 

with interpolation

# without interpolation 
plt.figure() 
plt.imshow(red, interpolation='none') 
plt.axis('off') 

without interpolation

+1

デフォルトの補間は ' 'image.interpolation' に変更されました:「nearest''を –

関連する問題