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

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

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

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

Python

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

Q&A

解決済

1回答

436閲覧

赤外線画像 で 物体認識

PayaLiv

総合スコア13

機械学習

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

Python

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

1グッド

1クリップ

投稿2018/11/01 09:23

やりたいこと

物体認識を赤外線画像で行いたいと思っています.

TensorFlow Object Detection API を利用しています.
Object Detection Demo を使って物体認識を行いたいと考えています.
デモは実行することができました.
また,適当に拾ってきたRGB画像についても問題なく動作しました.
しかし,赤外線画像を入力画像とした時に,以下のようなエラーが見られます.

ErrorCode

1ValueError Traceback (most recent call last) 2<ipython-input-64-b19082c2666b> in <module>() 3 3 # the array based representation of the image will be used later in order to prepare the 4 4 # result image with boxes and labels on it. 5----> 5 image_np = load_image_into_numpy_array(image) 6 6 # Expand dimensions since the model expects images to have shape: [1, None, None, 3] 7 7 image_np_expanded = np.expand_dims(image_np, axis=0) 8 9<ipython-input-61-af094dcdd84a> in load_image_into_numpy_array(image) 10 2 (im_width, im_height) = image.size 11 3 return np.array(image.getdata()).reshape( 12----> 4 (im_height, im_width, 3)).astype(np.uint8) 13 14ValueError: cannot reshape array of size 307200 into shape (480,640,3) 15

イメージ説明
このエラー文の時には上の画像を使用しました.

また画像のデータセットは VOT-TIR2015 Dataset を用いています.


エラー文から画像の大きさに問題があるかと思い,いくつか変更したり,うまくいったときの画像サイズと同じサイズに変更したりもしました.
この画像の shape は (480, 640, 3) であり,RGB画像の時と同じように扱えると考えています.

やはり RGB画像とは違い depth の扱い方を工夫する必要があるのでしょうか?


Windows 10
protoc 3.4.0 win32

haru135👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

reshape() は要素数自体は変更しないので、reshape 前の配列 np.array(image.getdata()) の要素数が 480 * 640 * 3 = 921600 でなければなりません。
一方元の画像はグレースケール画像なので、要素数が 480 * 640 = 307200 なのでエラーになっています。

グレースケール画像を forward する場合は、ネットワークを変更しないのであれば、画像のほうを RGB に変換しましょう。

python

1from PIL import Image 2 3img = Image.open('20c46dc5ee28b3968f42952f00762f0d.png') 4img = np.array(img) 5print(img.shape) # (480, 640) 6 7img = Image.open('20c46dc5ee28b3968f42952f00762f0d.png') 8img = img.convert('RGB') # グレースケールを RGB に変換 9img = np.array(img) 10print(img.shape) # (480, 640, 3)

投稿2018/11/01 09:35

tiitoi

総合スコア21956

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

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

PayaLiv

2018/11/01 10:00

ありがとうございます. 無事解決できました. 迅速なご回答ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問