diff --git a/modules/dnn/test/test_caffe_importer.cpp b/modules/dnn/test/test_caffe_importer.cpp index b0741f658c..43ffe0dd06 100644 --- a/modules/dnn/test/test_caffe_importer.cpp +++ b/modules/dnn/test/test_caffe_importer.cpp @@ -80,12 +80,7 @@ TEST(Reproducibility_AlexNet, Accuracy) Mat sample = imread(_tf("grace_hopper_227.png")); ASSERT_TRUE(!sample.empty()); - Size inputSize(227, 227); - - if (sample.size() != inputSize) - resize(sample, sample, inputSize); - - net.setInput(blobFromImage(sample), "data"); + net.setInput(blobFromImage(sample, 1.0f, Size(227, 227), Scalar(), false), "data"); Mat out = net.forward("prob"); Mat ref = blobFromNPY(_tf("caffe_alexnet_prob.npy")); normAssert(ref, out); @@ -105,17 +100,17 @@ TEST(Reproducibility_FCN, Accuracy) Mat sample = imread(_tf("street.png")); ASSERT_TRUE(!sample.empty()); - Size inputSize(500, 500); - if (sample.size() != inputSize) - resize(sample, sample, inputSize); - std::vector<int> layerIds; std::vector<size_t> weights, blobs; net.getMemoryConsumption(shape(1,3,227,227), layerIds, weights, blobs); - net.setInput(blobFromImage(sample), "data"); + net.setInput(blobFromImage(sample, 1.0f, Size(500, 500), Scalar(), false), "data"); Mat out = net.forward("score"); - Mat ref = blobFromNPY(_tf("caffe_fcn8s_prob.npy")); + + Mat refData = imread(_tf("caffe_fcn8s_prob.png"), IMREAD_ANYDEPTH); + int shape[] = {1, 21, 500, 500}; + Mat ref(4, shape, CV_32FC1, refData.data); + normAssert(ref, out); } #endif @@ -136,10 +131,7 @@ TEST(Reproducibility_SSD, Accuracy) if (sample.channels() == 4) cvtColor(sample, sample, COLOR_BGRA2BGR); - sample.convertTo(sample, CV_32F); - resize(sample, sample, Size(300, 300)); - - Mat in_blob = blobFromImage(sample); + Mat in_blob = blobFromImage(sample, 1.0f, Size(300, 300), Scalar(), false); net.setInput(in_blob, "data"); Mat out = net.forward("detection_out"); @@ -152,7 +144,7 @@ TEST(Reproducibility_ResNet50, Accuracy) Net net = readNetFromCaffe(findDataFile("dnn/ResNet-50-deploy.prototxt", false), findDataFile("dnn/ResNet-50-model.caffemodel", false)); - Mat input = blobFromImage(imread(_tf("googlenet_0.png")), 1, Size(224,224)); + Mat input = blobFromImage(imread(_tf("googlenet_0.png")), 1.0f, Size(224,224), Scalar(), false); ASSERT_TRUE(!input.empty()); net.setInput(input); @@ -167,7 +159,7 @@ TEST(Reproducibility_SqueezeNet_v1_1, Accuracy) Net net = readNetFromCaffe(findDataFile("dnn/squeezenet_v1.1.prototxt", false), findDataFile("dnn/squeezenet_v1.1.caffemodel", false)); - Mat input = blobFromImage(imread(_tf("googlenet_0.png")), 1, Size(227,227)); + Mat input = blobFromImage(imread(_tf("googlenet_0.png")), 1.0f, Size(227,227), Scalar(), false); ASSERT_TRUE(!input.empty()); net.setInput(input); @@ -180,7 +172,7 @@ TEST(Reproducibility_SqueezeNet_v1_1, Accuracy) TEST(Reproducibility_AlexNet_fp16, Accuracy) { const float l1 = 1e-5; - const float lInf = 2e-4; + const float lInf = 3e-3; const string proto = findDataFile("dnn/bvlc_alexnet.prototxt", false); const string model = findDataFile("dnn/bvlc_alexnet.caffemodel", false); @@ -190,7 +182,7 @@ TEST(Reproducibility_AlexNet_fp16, Accuracy) Mat sample = imread(findDataFile("dnn/grace_hopper_227.png", false)); - net.setInput(blobFromImage(sample, 1, Size(227, 227))); + net.setInput(blobFromImage(sample, 1.0f, Size(227, 227), Scalar(), false)); Mat out = net.forward(); Mat ref = blobFromNPY(findDataFile("dnn/caffe_alexnet_prob.npy", false)); normAssert(ref, out, "", l1, lInf); @@ -212,7 +204,7 @@ TEST(Reproducibility_GoogLeNet_fp16, Accuracy) inpMats.push_back( imread(_tf("googlenet_1.png")) ); ASSERT_TRUE(!inpMats[0].empty() && !inpMats[1].empty()); - net.setInput(blobFromImages(inpMats), "data"); + net.setInput(blobFromImages(inpMats, 1.0f, Size(), Scalar(), false), "data"); Mat out = net.forward("prob"); Mat ref = blobFromNPY(_tf("googlenet_prob.npy")); diff --git a/modules/dnn/test/test_googlenet.cpp b/modules/dnn/test/test_googlenet.cpp index 24869163bf..c83c1a063a 100644 --- a/modules/dnn/test/test_googlenet.cpp +++ b/modules/dnn/test/test_googlenet.cpp @@ -66,7 +66,7 @@ TEST(Reproducibility_GoogLeNet, Accuracy) inpMats.push_back( imread(_tf("googlenet_1.png")) ); ASSERT_TRUE(!inpMats[0].empty() && !inpMats[1].empty()); - net.setInput(blobFromImages(inpMats), "data"); + net.setInput(blobFromImages(inpMats, 1.0f, Size(), Scalar(), false), "data"); Mat out = net.forward("prob"); Mat ref = blobFromNPY(_tf("googlenet_prob.npy")); @@ -84,7 +84,7 @@ TEST(IntermediateBlobs_GoogLeNet, Accuracy) blobsNames.push_back("inception_4c/1x1"); blobsNames.push_back("inception_4c/relu_1x1"); std::vector<Mat> outs; - Mat in = blobFromImage(imread(_tf("googlenet_0.png"))); + Mat in = blobFromImage(imread(_tf("googlenet_0.png")), 1.0f, Size(), Scalar(), false); net.setInput(in, "data"); net.forward(outs, blobsNames); CV_Assert(outs.size() == blobsNames.size()); @@ -109,7 +109,7 @@ TEST(SeveralCalls_GoogLeNet, Accuracy) inpMats.push_back( imread(_tf("googlenet_1.png")) ); ASSERT_TRUE(!inpMats[0].empty() && !inpMats[1].empty()); - net.setInput(blobFromImages(inpMats), "data"); + net.setInput(blobFromImages(inpMats, 1.0f, Size(), Scalar(), false), "data"); Mat out = net.forward(); Mat ref = blobFromNPY(_tf("googlenet_prob.npy")); @@ -118,7 +118,7 @@ TEST(SeveralCalls_GoogLeNet, Accuracy) std::vector<String> blobsNames; blobsNames.push_back("conv1/7x7_s2"); std::vector<Mat> outs; - Mat in = blobFromImage(inpMats[0]); + Mat in = blobFromImage(inpMats[0], 1.0f, Size(), Scalar(), false); net.setInput(in, "data"); net.forward(outs, blobsNames); CV_Assert(outs.size() == blobsNames.size()); diff --git a/samples/android/mobilenet-objdetect/src/org/opencv/samples/opencv_mobilenet/MainActivity.java b/samples/android/mobilenet-objdetect/src/org/opencv/samples/opencv_mobilenet/MainActivity.java index 6852bb50dc..31440e2c85 100644 --- a/samples/android/mobilenet-objdetect/src/org/opencv/samples/opencv_mobilenet/MainActivity.java +++ b/samples/android/mobilenet-objdetect/src/org/opencv/samples/opencv_mobilenet/MainActivity.java @@ -86,7 +86,7 @@ public class MainActivity extends AppCompatActivity implements CvCameraViewListe // Forward image through network. Mat blob = Dnn.blobFromImage(frame, IN_SCALE_FACTOR, new Size(IN_WIDTH, IN_HEIGHT), - new Scalar(MEAN_VAL, MEAN_VAL, MEAN_VAL), true); + new Scalar(MEAN_VAL, MEAN_VAL, MEAN_VAL), false); net.setInput(blob); Mat detections = net.forward(); diff --git a/samples/dnn/caffe_googlenet.cpp b/samples/dnn/caffe_googlenet.cpp index 256bcb4449..f40b0d713f 100644 --- a/samples/dnn/caffe_googlenet.cpp +++ b/samples/dnn/caffe_googlenet.cpp @@ -91,21 +91,26 @@ int main(int argc, char **argv) String modelBin = "bvlc_googlenet.caffemodel"; String imageFile = (argc > 1) ? argv[1] : "space_shuttle.jpg"; - //! [Read and initialize network] - Net net = dnn::readNetFromCaffe(modelTxt, modelBin); - //! [Read and initialize network] - - //! [Check that network was read successfully] - if (net.empty()) - { - std::cerr << "Can't load network by using the following files: " << std::endl; - std::cerr << "prototxt: " << modelTxt << std::endl; - std::cerr << "caffemodel: " << modelBin << std::endl; - std::cerr << "bvlc_googlenet.caffemodel can be downloaded here:" << std::endl; - std::cerr << "http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel" << std::endl; - exit(-1); + Net net; + try { + //! [Read and initialize network] + net = dnn::readNetFromCaffe(modelTxt, modelBin); + //! [Read and initialize network] + } + catch (cv::Exception& e) { + std::cerr << "Exception: " << e.what() << std::endl; + //! [Check that network was read successfully] + if (net.empty()) + { + std::cerr << "Can't load network by using the following files: " << std::endl; + std::cerr << "prototxt: " << modelTxt << std::endl; + std::cerr << "caffemodel: " << modelBin << std::endl; + std::cerr << "bvlc_googlenet.caffemodel can be downloaded here:" << std::endl; + std::cerr << "http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel" << std::endl; + exit(-1); + } + //! [Check that network was read successfully] } - //! [Check that network was read successfully] //! [Prepare blob] Mat img = imread(imageFile); @@ -115,9 +120,9 @@ int main(int argc, char **argv) exit(-1); } - //GoogLeNet accepts only 224x224 RGB-images - Mat inputBlob = blobFromImage(img, 1, Size(224, 224), - Scalar(104, 117, 123)); //Convert Mat to batch of images + //GoogLeNet accepts only 224x224 BGR-images + Mat inputBlob = blobFromImage(img, 1.0f, Size(224, 224), + Scalar(104, 117, 123), false); //Convert Mat to batch of images //! [Prepare blob] Mat prob; diff --git a/samples/dnn/fcn_semsegm.cpp b/samples/dnn/fcn_semsegm.cpp index 94ff267a59..f81fae90f2 100644 --- a/samples/dnn/fcn_semsegm.cpp +++ b/samples/dnn/fcn_semsegm.cpp @@ -113,8 +113,8 @@ int main(int argc, char **argv) exit(-1); } - resize(img, img, Size(500, 500)); //FCN accepts 500x500 RGB-images - Mat inputBlob = blobFromImage(img); //Convert Mat to batch of images + resize(img, img, Size(500, 500)); //FCN accepts 500x500 BGR-images + Mat inputBlob = blobFromImage(img, 1, Size(), Scalar(), false); //Convert Mat to batch of images //! [Prepare blob] //! [Set input blob] diff --git a/samples/dnn/googlenet_python.py b/samples/dnn/googlenet_python.py index 1db2cbf612..85d56a992d 100644 --- a/samples/dnn/googlenet_python.py +++ b/samples/dnn/googlenet_python.py @@ -11,7 +11,7 @@ def get_class_list(): with open('synset_words.txt', 'rt') as f: return [x[x.find(" ") + 1:] for x in f] -blob = dnn.blobFromImage(cv2.imread('space_shuttle.jpg'), 1, (224, 224), (104, 117, 123)) +blob = dnn.blobFromImage(cv2.imread('space_shuttle.jpg'), 1, (224, 224), (104, 117, 123), false) print("Input:", blob.shape, blob.dtype) net = dnn.readNetFromCaffe('bvlc_googlenet.prototxt', 'bvlc_googlenet.caffemodel') diff --git a/samples/dnn/mobilenet_ssd_python.py b/samples/dnn/mobilenet_ssd_python.py index 7a0c5ff9df..cc11aa4bf6 100644 --- a/samples/dnn/mobilenet_ssd_python.py +++ b/samples/dnn/mobilenet_ssd_python.py @@ -41,7 +41,7 @@ if __name__ == "__main__": while True: # Capture frame-by-frame ret, frame = cap.read() - blob = cv.dnn.blobFromImage(frame, inScaleFactor, (inWidth, inHeight), meanVal) + blob = cv.dnn.blobFromImage(frame, inScaleFactor, (inWidth, inHeight), meanVal, false) net.setInput(blob) detections = net.forward() diff --git a/samples/dnn/resnet_ssd_face_python.py b/samples/dnn/resnet_ssd_face_python.py index d8a102a3cd..e385a0c7a0 100644 --- a/samples/dnn/resnet_ssd_face_python.py +++ b/samples/dnn/resnet_ssd_face_python.py @@ -27,8 +27,7 @@ if __name__ == '__main__': cols = frame.shape[1] rows = frame.shape[0] - net.setInput(dnn.blobFromImage(cv.resize(frame, (inWidth, inHeight)), - 1.0, (inWidth, inHeight), (104., 177., 123.))) + net.setInput(dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (104.0, 177.0, 123.0), false)) detections = net.forward() perf_stats = net.getPerfProfile() diff --git a/samples/dnn/ssd_mobilenet_object_detection.cpp b/samples/dnn/ssd_mobilenet_object_detection.cpp index 3d785f53ac..283c08a36c 100644 --- a/samples/dnn/ssd_mobilenet_object_detection.cpp +++ b/samples/dnn/ssd_mobilenet_object_detection.cpp @@ -97,7 +97,7 @@ int main(int argc, char** argv) //! [Prepare blob] Mat inputBlob = blobFromImage(frame, inScaleFactor, - Size(inWidth, inHeight), meanVal); //Convert Mat to batch of images + Size(inWidth, inHeight), meanVal, false); //Convert Mat to batch of images //! [Prepare blob] //! [Set input blob] diff --git a/samples/dnn/ssd_object_detection.cpp b/samples/dnn/ssd_object_detection.cpp index 214dd91875..09e983f2b3 100644 --- a/samples/dnn/ssd_object_detection.cpp +++ b/samples/dnn/ssd_object_detection.cpp @@ -86,7 +86,7 @@ int main(int argc, char** argv) //! [Prepare blob] Mat preprocessedFrame = preprocess(frame); - Mat inputBlob = blobFromImage(preprocessedFrame); //Convert Mat to batch of images + Mat inputBlob = blobFromImage(preprocessedFrame, 1.0f, Size(), Scalar(), false); //Convert Mat to batch of images //! [Prepare blob] //! [Set input blob]