[英]How to feed multiple input into opencv dnn
我有一個.pb model 文件。 我使用 opencv 的 readnetfromtensorflow() 加載了 model。 現在我想使用 model 來生成預測。 model 輸入有 4 種類型。
輸入數據
output數據
為了生成模型的預測,我首先必須將輸入轉換為 blobFromImages。 但是,我無法使用它,因為需要轉換的每個圖像都有不同的大小。 我還嘗試將每個圖像插入到 setInput() 中的向量中,但失敗了。 這種情況下有多個輸入怎么辦?
這是我嘗試過的代碼。
cv::dnn::Net net = cv::dnn::readNetFromTensorflow("model/mfg.pb”);
cv::Mat input_face = cv::dnn::blobFromImage(face, 1, cv::Size(256,256), cv::Scalar(104,177,123), true, false);
cv::Mat input_leye = cv::dnn::blobFromImage(leye, 1, cv::Size(64,64), cv::Scalar(104,177,123), true, false);
cv::Mat input_reye = cv::dnn::blobFromImage(reye, 1, cv::Size(64,64), cv::Scalar(104,177,123), true, false);
cv::Mat input_bbox = (cv::Mat1d(1,4) << face_bbox[0]., face_bbox[1]., face_bbox[2]., face_bbox[3].);
std::vector<cv::Mat> input_image = {input_face, input_leye, input_reye, input_bbox};
net.setInput(input_image);
net.forward();
但是,它失敗了,並且出現了一條錯誤消息。
錯誤 libc++abi:以 cv::Exception 類型的未捕獲異常終止:OpenCV(4.5.5) /tmp/opencv-20220714-27380-1eyun69/opencv-4.5.5/modules/core/src/matrix_wrap.cpp: 81:錯誤:(-215:斷言失敗)0 <= i && i < (int)v.size() 在 function 'getMat_'
您不能在cv::dnn::Net上設置多個輸入。(不支持。)
我建議兩種選擇。
您可以使用 Tensorflow 進行 DNN 計算,並使用 OpenCV 進行其他圖像/視頻任務。 您可以將tensorflow::Tensor的數據包裝為cv::Mat 。 (請參閱紀堯姆在這個問題中的回答。)
將功能 model 重新設計為順序 model。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.