YOLOv3を用いて​学習させた検出器で、​馬の顔領域を検出した​いと考えています。一​つの画像から1頭のみ​を検出したく、検出さ​れたバウンディングボ​ックスのうち、最も大​きなものだけを表示さ​せる方法を知りたいの​ですがどなたかご教授​頂けないでしょうか。

1 次查看(过去 30 天)
隆人 山田
隆人 山田 2022-1-7
この画像から、手前の2頭が検出されてしまいます。手前の茶色馬だけを検出する方法を教えていただきたいです。

采纳的回答

Shunichi Kusano
Shunichi Kusano 2022-1-7
バウンディングボックスには幅と高さの情報が入っています。また、バウンディングボックスと一緒にscoreという検出の信頼性みたいな値も出てきます。
[bbox,score,label] = detect(yolonet,img);
最も大きいという基準で選択したいなら
area = bbox(:,3) .* bbox(:,4);
[~,Idx] = max(area);
bbox1 = bbox(Idx,:);
最も信頼性が高い、なら
[~,Idx] = max(score);
bbox1 = bbox(Idx,:);
といった感じで画像から一つだけ取り出すことができます。
  5 个评论
Shunichi Kusano
Shunichi Kusano 2022-1-7
エラーメッセージの一番上を見ると原因がわかります。
LabelとPositionの数が合ってない、ということで、bbox1は複数の中から1つのボックスを選んだものなのに対して、scoreは元のまま(複数)になっているのが原因です。
scoreからもIdxで1つ値を取り出して差し替えてあげれば解決すると思います。
隆人 山田
隆人 山田 2022-1-7
出来ました!!
本当にありがとうございました
また機会があればよろしくお願いします!!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 イメージのセグメンテーションと解析 的更多信息

Community Treasure Hunt

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

Start Hunting!