2017-12-28 6 views
0

最近、私は機械学習のチュートリアルに従いました。私は自分で画像認識プログラムを作れますか?このため私はCIFAR 10データセットを使用したいと思いますが、私はデータセットの変換に小さな問題があると思います。cifar10がうまく変換されているか確認してください。

このセットに精通していない人は、データセットがn行と3072列のリストとして表示されます。最初の1024列は赤の値を表し、2番目の1024は青の値です。各行は単一のイメージ(サイズ32x32)であり、ピクセル行はお互いに積み重ねられます(最初の32個の値は一番上のピクセル行の赤い値です)

私はこれで何をしたいですかデータセットは4Dテンソル(numpyで)に変換するので、matplotlibs .imshow()で画像を見ることができます。私が作ったテンソルは(n, 32, 32, 3)なので、最初の 'dimension'はすべての画像を格納し、2番目のピクセルはピクセルの行を格納し、3番目のピクセルは個々のピクセルを格納し、最後はピクセルのrgb値を表します。

def rawToRgb(data): 
    length = data.shape[0] 

    # convert to flat img array with rgb pixels 
    newAr = np.zeros([length, 1024, 3]) 
    for img in range(length): 
     for pixel in range(1024): 
      newAr[img, pixel, 0] = data[img, pixel] 
      newAr[img, pixel, 1] = data[img, pixel+1024] 
      newAr[img, pixel, 2] = data[img, pixel+2048] 

    # convert to 2D img array 
    newAr2D = newAr.reshape([length, 32, 32, 3]) 
    # plt.imshow(newAr2D[5998]) 
    # plt.show() 
    return newAr2D 

つのパラメータ(形状(n, 3072)のテンソル)をとります。ここで私はそれがこれを行うべきで作られた関数です。私はpyplotコードをコメントアウトしていますが、これはテストのためのものだからですが、テストすると、すべてがOKであるように見えました(イメージのオブジェクトの形は認識できますが、色が良いかどうかわかりませんかどうか、私はここに...いくつかの奇妙な色の画像だけでなく、いくつかの非常に正常な画像を得るよう、いくつかの例を示します。私は間違いを犯したりしています天気をpurple planeblue catnormal horseblue frog

誰も私を伝えることができます予めない?

タンク!!

答えて

1

奇妙な色の見える画像は実際の画像、複数のnegativeありますo真値を得るために、255から各ピクセル値を減算する必要があります。あなたは、単に元の画像は、使用どのように見えるかを確認したい場合は、次の

from scipy.misc import imread 
import matplotlib.pyplot as plt 
img = imread(file_path) 
plt.imshow(255 - img) 
plt.show() 

問題の本来の原因は、CIFAR-10のデータストア0-255のスケール上のピクセル値が、matplotlibののimshow() 0と1の間の入力があると仮定すると、imshow()は内部的に正規化を行い、画像の一部がネガティブになる原因となります。

関連する問題