Merge pull request #19341 from mpashchenkov:mp/ocv-gapi-parsessd-fix
G-API: Removing ParseSSD overload. * Removed specialization. * Removed united
This commit is contained in:
committed by
GitHub
parent
438e2dc228
commit
651967b95c
@@ -652,7 +652,12 @@ GAPI_OCV_KERNEL(GCPUParseSSDBL, cv::gapi::nn::parsers::GParseSSDBL)
|
||||
std::vector<cv::Rect>& out_boxes,
|
||||
std::vector<int>& out_labels)
|
||||
{
|
||||
cv::parseSSDBL(in_ssd_result, in_size, confidence_threshold, filter_label, out_boxes, out_labels);
|
||||
cv::ParseSSD(in_ssd_result, in_size,
|
||||
confidence_threshold,
|
||||
filter_label,
|
||||
false,
|
||||
false,
|
||||
out_boxes, out_labels);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -665,7 +670,13 @@ GAPI_OCV_KERNEL(GOCVParseSSD, cv::gapi::nn::parsers::GParseSSD)
|
||||
const bool filter_out_of_bounds,
|
||||
std::vector<cv::Rect>& out_boxes)
|
||||
{
|
||||
cv::parseSSD(in_ssd_result, in_size, confidence_threshold, alignment_to_square, filter_out_of_bounds, out_boxes);
|
||||
std::vector<int> unused_labels;
|
||||
cv::ParseSSD(in_ssd_result, in_size,
|
||||
confidence_threshold,
|
||||
-1,
|
||||
alignment_to_square,
|
||||
filter_out_of_bounds,
|
||||
out_boxes, unused_labels);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -170,12 +170,14 @@ private:
|
||||
} // namespace nn
|
||||
} // namespace gapi
|
||||
|
||||
void parseSSDBL(const cv::Mat& in_ssd_result,
|
||||
const cv::Size& in_size,
|
||||
const float confidence_threshold,
|
||||
const int filter_label,
|
||||
std::vector<cv::Rect>& out_boxes,
|
||||
std::vector<int>& out_labels)
|
||||
void ParseSSD(const cv::Mat& in_ssd_result,
|
||||
const cv::Size& in_size,
|
||||
const float confidence_threshold,
|
||||
const int filter_label,
|
||||
const bool alignment_to_square,
|
||||
const bool filter_out_of_bounds,
|
||||
std::vector<cv::Rect>& out_boxes,
|
||||
std::vector<int>& out_labels)
|
||||
{
|
||||
cv::gapi::nn::SSDParser parser(in_ssd_result.size, in_size, in_ssd_result.ptr<float>());
|
||||
out_boxes.clear();
|
||||
@@ -188,38 +190,6 @@ void parseSSDBL(const cv::Mat& in_ssd_result,
|
||||
{
|
||||
std::tie(rc, image_id, confidence, label) = parser.extract(i);
|
||||
|
||||
if (image_id < 0.f)
|
||||
{
|
||||
break; // marks end-of-detections
|
||||
}
|
||||
|
||||
if (confidence < confidence_threshold ||
|
||||
(filter_label != -1 && label != filter_label))
|
||||
{
|
||||
continue; // filter out object classes if filter is specified
|
||||
} // and skip objects with low confidence
|
||||
out_boxes.emplace_back(rc & parser.getSurface());
|
||||
out_labels.emplace_back(label);
|
||||
}
|
||||
}
|
||||
|
||||
void parseSSD(const cv::Mat& in_ssd_result,
|
||||
const cv::Size& in_size,
|
||||
const float confidence_threshold,
|
||||
const bool alignment_to_square,
|
||||
const bool filter_out_of_bounds,
|
||||
std::vector<cv::Rect>& out_boxes)
|
||||
{
|
||||
cv::gapi::nn::SSDParser parser(in_ssd_result.size, in_size, in_ssd_result.ptr<float>());
|
||||
out_boxes.clear();
|
||||
cv::Rect rc;
|
||||
float image_id, confidence;
|
||||
int label;
|
||||
const size_t range = parser.getMaxProposals();
|
||||
for (size_t i = 0; i < range; ++i)
|
||||
{
|
||||
std::tie(rc, image_id, confidence, label) = parser.extract(i);
|
||||
|
||||
if (image_id < 0.f)
|
||||
{
|
||||
break; // marks end-of-detections
|
||||
@@ -228,12 +198,14 @@ void parseSSD(const cv::Mat& in_ssd_result,
|
||||
{
|
||||
continue; // skip objects with low confidence
|
||||
}
|
||||
|
||||
if((filter_label != -1) && (label != filter_label))
|
||||
{
|
||||
continue; // filter out object classes if filter is specified
|
||||
}
|
||||
if (alignment_to_square)
|
||||
{
|
||||
parser.adjustBoundingBox(rc);
|
||||
}
|
||||
|
||||
const auto clipped_rc = rc & parser.getSurface();
|
||||
if (filter_out_of_bounds)
|
||||
{
|
||||
@@ -243,6 +215,7 @@ void parseSSD(const cv::Mat& in_ssd_result,
|
||||
}
|
||||
}
|
||||
out_boxes.emplace_back(clipped_rc);
|
||||
out_labels.emplace_back(label);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,19 +11,14 @@
|
||||
|
||||
namespace cv
|
||||
{
|
||||
void parseSSDBL(const cv::Mat& in_ssd_result,
|
||||
const cv::Size& in_size,
|
||||
const float confidence_threshold,
|
||||
const int filter_label,
|
||||
std::vector<cv::Rect>& out_boxes,
|
||||
std::vector<int>& out_labels);
|
||||
|
||||
void parseSSD(const cv::Mat& in_ssd_result,
|
||||
void ParseSSD(const cv::Mat& in_ssd_result,
|
||||
const cv::Size& in_size,
|
||||
const float confidence_threshold,
|
||||
const int filter_label,
|
||||
const bool alignment_to_square,
|
||||
const bool filter_out_of_bounds,
|
||||
std::vector<cv::Rect>& out_boxes);
|
||||
std::vector<cv::Rect>& out_boxes,
|
||||
std::vector<int>& out_labels);
|
||||
|
||||
void parseYolo(const cv::Mat& in_yolo_result,
|
||||
const cv::Size& in_size,
|
||||
|
||||
Reference in New Issue
Block a user