YOLOv3を用いて学習させた検出器で、馬の顔領域を検出したいと考えています。一つの画像から1頭のみを検出したく、検出されたバウンディングボックスのうち、最も大きなものだけを表示させる方法を知りたいのですがどなたかご教授頂けないでしょうか。
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/855835/image.jpeg)
この画像から、手前の2頭が検出されてしまいます。手前の茶色馬だけを検出する方法を教えていただきたいです。
0 commentaires
Réponse acceptée
Shunichi Kusano
le 7 Jan 2022
バウンディングボックスには幅と高さの情報が入っています。また、バウンディングボックスと一緒に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 commentaires
Shunichi Kusano
le 7 Jan 2022
エラーメッセージの一番上を見ると原因がわかります。
LabelとPositionの数が合ってない、ということで、bbox1は複数の中から1つのボックスを選んだものなのに対して、scoreは元のまま(複数)になっているのが原因です。
scoreからもIdxで1つ値を取り出して差し替えてあげれば解決すると思います。
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur イメージのセグメンテーションと解析 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!