Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第2章  画像内の検出される物体数がゼロの場合の処理について #200

Open
146790g opened this issue Feb 9, 2022 · 4 comments

Comments

@146790g
Copy link

146790g commented Feb 9, 2022

お世話になります。

VOC2012データのアノテーション
VOC2012/Annotations/2008_005953.xml
において、検出物体が、ゼロとなっています。
この場合には、anno_class_listが、2次元配列ではなくて、つぶれてしまうため、
以下のエラーがでます。

print(anno_class_list)
print(anno_class_list.shape)
print(anno_class_list.ndim)

[]
(0,)
1

本エラーについては、どのように対応されていますでしょうか?

boxes = anno_class_list[:, :4]
labels = anno_class_list[:, 4]
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

@146790g 146790g changed the title 第2章 第2章  画像内の検出される物体数がゼロの場合の処理について Feb 9, 2022
@146790g
Copy link
Author

146790g commented Feb 9, 2022

お世話になります。

OgawaさまのGithubの第2章のプログラムをそのまま実行してみましたら、上記のエラーもなく、動きました。
再度、上記のエラーについては、私の方で調査させていただきます。

@YutaroOgawa
Copy link
Owner

@146790g さま

返信の前に解決まで至っており、返信が遅れたことをお詫び申し上げます。
また動作したとのことで、報告までありがとうございます。

アノテーションで検出されている物体が何もない場合はムシしているのだと思うのですが、
一度丁寧にコードを追わなければなりません。。。

申し訳ございません。どうぞよろしくお願い致します。

@146790g
Copy link
Author

146790g commented Feb 10, 2022

Ogawa様

def make_datapath_list(rootpath) の関数のところで、教師データおよびvalidationデータについて、
以下のように読み込んでいますが、それのディレクトリの指定先を、誤って、以下のようにしていたことが
原因でした。VOC2012のデータの中には、Mainディレクトリ以外に、Segmentationディレクトリにも、同様の
train.txt, val.txtがあるのですが、それを誤って選択している点で間違えていました。

(正解)
train_id_names = osp.join(rootpath + 'ImageSets/Main/train.txt')
val_id_names = osp.join(rootpath + 'ImageSets/Main/val.txt')

➡ 誤って、'ImageSets/Segmentation/train.txt' 及び'ImageSets/Segmentation/val.txt' を指定していた。

今回のエラーから、SSDモデルの解析の際には、学習データに、検出物体がゼロのデータがある場合には、
エラーとなるということを学びました。SSDモデルを学習させる際には、前処理の段階で、検出物体ゼロのデータを
除外しておくことが必要であるという知識を獲得いたしました。

お手数をおかけしました。

@YutaroOgawa
Copy link
Owner

@146790g さま

非常に丁寧に、真因の分析と共有まで、誠にありがとうございます。
他の多くの読者の方にもとても参考になります。

皆を代表し御礼申し上げます。

製品レベルで作るときは、アノテーションデータで検出物体ゼロのときは例外処理をする&メッセージを出す、を実装するべきなのですが、本書の性質上、そこまでややこしいことは実装していないため、

結果、苦労をおかけしてしまい、申し訳ございません。

私は何もしていない間に、次々と自己解決され、しかも、それを丁寧に共有いただき、感謝の限りです。
今後とも、どうぞよろしくお願いいたします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants