イメージラベラーで作​成したデータのリサイ​ズ方法について

YOLOv2をresnet50を用いて転移学習させたのですが、関数evaluateDetectionPrecisionで分類器の精度検証を行おうとしたところ、resnet50の入力サイズが224*224に対して元画像が2304*1296であり、そのままのデータですと評価を行うことが出来ません。
関数imresizeを用いて分類器に画像を入力することはできますが、テストデータのバウンディングボックスを共にリサイズを行っていない為だと考えています。
テストデータはイメージラベラーにて作成したラベリングデータでありtable変数です。
解決策としては画像とバウンディングボックス共にリサイズを行うか、入力データを2304*1296に対応したYOLOv2を作成することだと考えていますが、どちらも方法が見つかりません。

 Accepted Answer

Kenta
Kenta on 12 Dec 2019

2 votes

こんにちは、解決策として「バウンディングボックス共にリサイズを行うか、入力データを2304*1296に対応したYOLOv2を作成することだと考えています」とありますが、どちらかといえば前者のほうか現実的かなあと個人的には思いました。もちろん、使用するデータ数やPCによるのですが、直感的には、2KのデータをYOLOで学習するのは非常に計算コストが大きいように感じられます。
例えば、サンプル画像とそのラベリングがあって、そのサンプル画像を小さくしたいとします。
以下のように、imresize関数でサンプルを小さくして、それと同様に、table変数のラベルの大きさ自体も小さくするとよいのではないでしょうか。下に例を載せましたが、画像のみが小さくなって、ラベリングの相対的な位置は保持されていることがわかります。アノテーションのフォントサイズ自体は一緒なので、文字が右の図では大きく見えていますね。
ただ、対象物体が2Kのデータを224*224に小さくすると見えなくなるかもしれません。それをご確認いただいたうえ実行いただけると幸いです。YOLOv2でバックボーンのCNNで畳み込んでいくときに、最終的な、例えば14*14の特徴マップに、うまく対象物体の特徴が反映されないかもしれない思いました。
詳しく確認できていないので不正確かもしれませんが、ここに、より大きなインプットサイズの事前学習ネットワークがあるかもしれません。resnet50もよいとは思いますが、224*224と2Kの間のインプットサイズにて学習をしてもよいかもしれません。また結果がでたら教えていただけると幸いです。よろしくお願いいたします。
I=imread('onion.png');
p=table2cell(gTruth.LabelData);
I_original = insertObjectAnnotation(I,'rectangle',p{1},'target',...
'TextBoxOpacity',0.9,'FontSize',18);
subplot(1,2,1)
imshow(I_original)
I_resized=imresize(I,.5);
I_resized = insertObjectAnnotation(I_resized,'rectangle',round(p{1}./2),'target',...
'TextBoxOpacity',0.9,'FontSize',18);
subplot(1,2,2)
imshow(I_resized)

3 Comments

Kiwamu Nichihara
Kiwamu Nichihara on 13 Dec 2019
ご回答ありがとうございます。
サンプルコードを参考にさせて頂いた結果、無事分類器の精度検証を行うことができました。検証した結果、貴殿のお考えの通り対象物体の特徴がうまく反映されず精度は低くなりました。
現在、頂いたURLを参考にしてネットワークを探しておりますので、結果が出来次第また連絡させていただきたいと思います。よろしくお願いいたします。
Kenta
Kenta on 13 Dec 2019
ご返信ありがとうございます。はい、また追加検討されましたら、ご報告いただけると幸いです。よろしくお願いいたします。
Kiwamu Nichihara
Kiwamu Nichihara on 17 Dec 2019
頂いたURLの中から、YOLOv2の608*608の入力サイズのネットワークを転移学習させ、更に関数esitimateAnchorBoxeshttps://jp.mathworks.com/help/vision/ref/estimateanchorboxes.html?s_tid=doc_taを用いて2304*1296を608*608にリサイズしたバウンディングボックスで学習を行いました。結果、224*224よりはるかに精度が向上しました。今後YOLOv3のネットワークを用いたり、データの水増しaugmentedImageDatastorehttps://jp.mathworks.com/help/deeplearning/ref/augmentedimagedatastore.htmlを行う予定です。
知恵をお貸していただき、ありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on Image Processing and Computer Vision in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!