mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 15:23:05 +04:00
Merge pull request #21232 from sivanov-work:vpl_gpu_remote_infer
G-API: oneVPL DX11 inference * Draft GPU infer * Fix incorrect subresource_id for array of textures * Fix for TheOneSurface in different Frames * Turn on VPP param configuration * Add cropIn params * Remove infer sync sample * Remove comments * Remove DX11AllocResource extra init * Add condition for NV12 processing in giebackend * Add VPP frames pool param configurable * -M Remove extra WARN & INFOs, Fix custom MAC * Remove global vars from example, Fix some comments, Disable blobParam due to OV issue * Conflict resolving * Revert back pointer cast for cv::any
This commit is contained in:
@@ -507,7 +507,6 @@ inline IE::Blob::Ptr extractRemoteBlob(IECallContext& ctx, std::size_t i) {
|
||||
"Remote blob is supported for MediaFrame only");
|
||||
|
||||
cv::util::any any_blob_params = ctx.inFrame(i).blobParams();
|
||||
auto ie_core = cv::gimpl::ie::wrap::getCore();
|
||||
|
||||
using ParamType = std::pair<InferenceEngine::TensorDesc, InferenceEngine::ParamMap>;
|
||||
using NV12ParamType = std::pair<ParamType, ParamType>;
|
||||
@@ -529,7 +528,6 @@ inline IE::Blob::Ptr extractRemoteBlob(IECallContext& ctx, std::size_t i) {
|
||||
#else
|
||||
return IE::make_shared_blob<InferenceEngine::NV12Blob>(y_blob, uv_blob);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
inline IE::Blob::Ptr extractBlob(IECallContext& ctx,
|
||||
@@ -571,6 +569,19 @@ static void setBlob(InferenceEngine::InferRequest& req,
|
||||
}
|
||||
}
|
||||
|
||||
static void setROIBlob(InferenceEngine::InferRequest& req,
|
||||
const std::string& layer_name,
|
||||
const IE::Blob::Ptr& blob,
|
||||
const cv::Rect &roi,
|
||||
const IECallContext& ctx) {
|
||||
if (ctx.uu.params.device_id.find("GPU") != std::string::npos) {
|
||||
GAPI_LOG_DEBUG(nullptr, "Skip ROI blob creation for device_id: " <<
|
||||
ctx.uu.params.device_id << ", layer: " << layer_name);
|
||||
setBlob(req, layer_name, blob, ctx);
|
||||
} else {
|
||||
setBlob(req, layer_name, IE::make_shared_blob(blob, toIE(roi)), ctx);
|
||||
}
|
||||
}
|
||||
} // anonymous namespace
|
||||
|
||||
std::vector<InferenceEngine::InferRequest> cv::gimpl::ie::IECompiled::createInferRequests() {
|
||||
@@ -1125,10 +1136,9 @@ struct InferROI: public cv::detail::KernelTag {
|
||||
// it should be treated as image
|
||||
IE::Blob::Ptr this_blob =
|
||||
extractBlob(*ctx, 1, cv::gapi::ie::TraitAs::IMAGE);
|
||||
setBlob(req,
|
||||
*(ctx->uu.params.input_names.begin()),
|
||||
IE::make_shared_blob(this_blob, toIE(this_roi)),
|
||||
*ctx);
|
||||
setROIBlob(req,
|
||||
*(ctx->uu.params.input_names.begin()),
|
||||
this_blob, this_roi, *ctx);
|
||||
// FIXME: Should it be done by kernel ?
|
||||
// What about to do that in RequestPool ?
|
||||
req.StartAsync();
|
||||
|
||||
Reference in New Issue
Block a user