Add ocl version FasterRCNN accuracy test
authorLi Peng <peng.li@intel.com>
Wed, 27 Dec 2017 15:15:50 +0000 (23:15 +0800)
committerLi Peng <peng.li@intel.com>
Thu, 28 Dec 2017 11:15:15 +0000 (19:15 +0800)
Signed-off-by: Li Peng <peng.li@intel.com>
modules/dnn/src/dnn.cpp
modules/dnn/test/test_layers.cpp

index 32b09aa..10e4b0e 100644 (file)
@@ -1123,13 +1123,13 @@ struct Net::Impl
         {
             if (use_umat)
             {
+                std::vector<Mat> input_mats(ld.umat_inputBlobs.size());;
                 std::vector<Mat*> inputs(ld.umat_inputBlobs.size());;
                 std::vector<Mat> outputs(ld.umat_outputBlobs.size());
-                Mat mat;
                 for (int i = 0; i < inputs.size(); i++)
                 {
-                    mat = ld.umat_inputBlobs[i].getMat(ACCESS_READ);
-                    inputs[i] = &mat;
+                    input_mats[i] = ld.umat_inputBlobs[i].getMat(ACCESS_READ);
+                    inputs[i] = &input_mats[i];
                 }
                 for (int i = 0; i < outputs.size(); i++)
                 {
index c55e7bc..362ba7d 100644 (file)
@@ -600,4 +600,30 @@ TEST(Layer_Test_FasterRCNN_Proposal, Accuracy)
         EXPECT_EQ(countNonZero(out.rowRange(numDets, out.size[0])), 0);
 }
 
+OCL_TEST(Layer_Test_FasterRCNN_Proposal, Accuracy)
+{
+    Net net = readNetFromCaffe(_tf("net_faster_rcnn_proposal.prototxt"));
+
+    net.setPreferableBackend(DNN_BACKEND_DEFAULT);
+    net.setPreferableTarget(DNN_TARGET_OPENCL);
+
+    Mat scores = blobFromNPY(_tf("net_faster_rcnn_proposal.scores.npy"));
+    Mat deltas = blobFromNPY(_tf("net_faster_rcnn_proposal.deltas.npy"));
+    Mat imInfo = (Mat_<float>(1, 3) << 600, 800, 1.6f);
+    Mat ref = blobFromNPY(_tf("net_faster_rcnn_proposal.npy"));
+
+    net.setInput(scores, "rpn_cls_prob_reshape");
+    net.setInput(deltas, "rpn_bbox_pred");
+    net.setInput(imInfo, "im_info");
+
+    Mat out = net.forward();
+
+    const int numDets = ref.size[0];
+    EXPECT_LE(numDets, out.size[0]);
+    normAssert(out.rowRange(0, numDets), ref);
+
+    if (numDets < out.size[0])
+        EXPECT_EQ(countNonZero(out.rowRange(numDets, out.size[0])), 0);
+}
+
 }