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

조회 수: 1 (최근 30일)
隆人 山田
隆人 山田 2022년 1월 7일
댓글: 隆人 山田 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!