-
Notifications
You must be signed in to change notification settings - Fork 226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How it Modify for YOLOV8 pose for multi classes #190
Comments
Sure you should find the top label by scores_ptr. |
Do you have further questions? |
The model learned with multi-class(3) is performed normally with the yolov8 cli Predict command.
I confirmed through debugging that only one class objects was detected when using the example here.
*. you recommed.
You should modify pose postprocess.
Default is only one class so that the score is only for person.
But if enable multiclass you should use argmax and max to find the highest score and label.
=> Where should I fix it?
*. I check it.
YOLOv8-TensorRT\csrc\pose\normal\include\yolov8-pose.hpp
....
void YOLOv8_pose::postprocess(std::vector& objs, float score_thres, float iou_thres, int topk)
{
...
auto kps_ptr = row_ptr + 5;
// classnum = 3
auto maxSPtr = std::max_element(kps_ptr, kps_ptr + 3);
// auto maxSPtr = std::max_element(kps_ptr+2, kps_ptr + 3);
// auto maxSPtr = std::max_element(kps_ptr+3, kps_ptr + 3);
// Not Detect label
cout << func << ";label=" << label << endl;
.....
int cnt = 0;
/*
#ifdef BATCHED_NMS
cv::dnn::NMSBoxesBatched(bboxes, scores, labels, score_thresd, iou_thres, indices);
#else
cv::dnn::NMSBoxes(bboxes, scores, score_thres, iou_thres, indices);
#endif
for(auto& i : indices)
*/
// 8 object Detect, but almost same position and size.
for(int i = 0; i < bboxes.size(); i++)
{
if(cnt >= topk)
break;
Object obj;
obj.rect = bboxes[i];
obj.prob = scores[i];
obj.label = labels[i];
obj.kps = kpss[i];
objs.push_back(obj);
cnt += 1;
}
}
....
The text was updated successfully, but these errors were encountered: