YOLOv3を用いて学習させた検出器で、馬の顔領域を検出したいと考えています。一つの画像から1頭のみを検出したく、検出されたバウンディングボックスのうち、最も大きなものだけを表示させる方法を知りたいのですがどなたかご教授頂けないでしょうか。
1 次查看(过去 30 天)
显示 更早的评论
この画像から、手前の2頭が検出されてしまいます。手前の茶色馬だけを検出する方法を教えていただきたいです。
0 个评论
采纳的回答
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
2022-1-7
エラーメッセージの一番上を見ると原因がわかります。
LabelとPositionの数が合ってない、ということで、bbox1は複数の中から1つのボックスを選んだものなのに対して、scoreは元のまま(複数)になっているのが原因です。
scoreからもIdxで1つ値を取り出して差し替えてあげれば解決すると思います。
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 イメージのセグメンテーションと解析 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!