diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp index e0de390ab..9b828d5ba 100644 --- a/modules/dnn/test/test_layers.cpp +++ b/modules/dnn/test/test_layers.cpp @@ -15,21 +15,24 @@ static String _tf(TString filename) return (getOpenCVExtraDir() + "/dnn/layers/") + filename; } -static void testLayer(String basename, bool useCaffeModel = false) +static void testLayer(String basename, bool useCaffeModel = false, bool useCommonInputBlob = true) { - Blob inp = blobFromNPY(_tf("blob.npy")); - Blob ref = blobFromNPY(_tf(basename + ".npy")); + String prototxt = _tf(basename + ".prototxt"); + String caffemodel = _tf(basename + ".caffemodel"); - String prototxt = basename + ".prototxt"; - String caffemodel = basename + ".caffemodel"; + String inpfile = (useCommonInputBlob) ? _tf("blob.npy") : _tf(basename + ".input.npy"); + String outfile = _tf(basename + ".npy"); Net net; { - Ptr importer = createCaffeImporter(_tf(prototxt), (useCaffeModel) ? _tf(caffemodel) : String()); + Ptr importer = createCaffeImporter(prototxt, (useCaffeModel) ? caffemodel : String()); ASSERT_TRUE(importer != NULL); importer->populateNet(net); } + Blob inp = blobFromNPY(inpfile); + Blob ref = blobFromNPY(outfile); + net.setBlob(".input", inp); net.forward(); Blob out = net.getBlob("output"); @@ -85,7 +88,7 @@ TEST(Layer_Test_Pooling_ave, Accuracy) TEST(Layer_Test_DeConvolution, Accuracy) { - testLayer("layer_deconvolution", true); + testLayer("layer_deconvolution", true, false); } TEST(Layer_Test_MVN, Accuracy) diff --git a/modules/dnn/testdata/dnn/layers/layer_convolution.caffemodel b/modules/dnn/testdata/dnn/layers/layer_convolution.caffemodel new file mode 100644 index 000000000..aadae5768 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_convolution.caffemodel differ diff --git a/modules/dnn/testdata/dnn/layers/layer_convolution.npy b/modules/dnn/testdata/dnn/layers/layer_convolution.npy new file mode 100644 index 000000000..5c2373602 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_convolution.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_deconvolution.caffemodel b/modules/dnn/testdata/dnn/layers/layer_deconvolution.caffemodel new file mode 100644 index 000000000..729137444 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_deconvolution.caffemodel differ diff --git a/modules/dnn/testdata/dnn/layers/layer_deconvolution.input.npy b/modules/dnn/testdata/dnn/layers/layer_deconvolution.input.npy new file mode 100644 index 000000000..6b80f3cfb Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_deconvolution.input.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_deconvolution.npy b/modules/dnn/testdata/dnn/layers/layer_deconvolution.npy new file mode 100644 index 000000000..44ab88476 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_deconvolution.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_deconvolution.prototxt b/modules/dnn/testdata/dnn/layers/layer_deconvolution.prototxt index 265aac510..eb69b6a03 100644 --- a/modules/dnn/testdata/dnn/layers/layer_deconvolution.prototxt +++ b/modules/dnn/testdata/dnn/layers/layer_deconvolution.prototxt @@ -2,9 +2,9 @@ name: "test_Convolution" input: "input" input_dim: 2 -input_dim: 6 -input_dim: 75 -input_dim: 113 +input_dim: 12 +input_dim: 36 +input_dim: 37 layer { type: "Deconvolution" diff --git a/modules/dnn/testdata/dnn/layers/layer_inner_product.caffemodel b/modules/dnn/testdata/dnn/layers/layer_inner_product.caffemodel new file mode 100644 index 000000000..a440a3662 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_inner_product.caffemodel differ diff --git a/modules/dnn/testdata/dnn/layers/layer_inner_product.npy b/modules/dnn/testdata/dnn/layers/layer_inner_product.npy new file mode 100644 index 000000000..4f229483c Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_inner_product.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_lrn_channels.npy b/modules/dnn/testdata/dnn/layers/layer_lrn_channels.npy new file mode 100644 index 000000000..b54860551 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_lrn_channels.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_lrn_spatial.npy b/modules/dnn/testdata/dnn/layers/layer_lrn_spatial.npy new file mode 100644 index 000000000..7fcb60f66 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_lrn_spatial.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_mvn.npy b/modules/dnn/testdata/dnn/layers/layer_mvn.npy new file mode 100644 index 000000000..8979d5f57 Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_mvn.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_pooling_ave.npy b/modules/dnn/testdata/dnn/layers/layer_pooling_ave.npy new file mode 100644 index 000000000..a87cb911d Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_pooling_ave.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_pooling_max.npy b/modules/dnn/testdata/dnn/layers/layer_pooling_max.npy new file mode 100644 index 000000000..bc726db1b Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_pooling_max.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_softmax.npy b/modules/dnn/testdata/dnn/layers/layer_softmax.npy new file mode 100644 index 000000000..7db85f01c Binary files /dev/null and b/modules/dnn/testdata/dnn/layers/layer_softmax.npy differ diff --git a/modules/dnn/testdata/dnn/layers/layer_softmax.prototxt b/modules/dnn/testdata/dnn/layers/layer_softmax.prototxt index 2a8e93b7b..3a717a4c6 100644 --- a/modules/dnn/testdata/dnn/layers/layer_softmax.prototxt +++ b/modules/dnn/testdata/dnn/layers/layer_softmax.prototxt @@ -2,7 +2,7 @@ name: "test_Softmax" input: "input" input_dim: 2 -input_dim: 5 +input_dim: 6 input_dim: 75 input_dim: 113 diff --git a/modules/dnn/testdata/dnn/layers/run.py b/modules/dnn/testdata/dnn/layers/run.py index bbe7e80f7..23d4117c9 100644 --- a/modules/dnn/testdata/dnn/layers/run.py +++ b/modules/dnn/testdata/dnn/layers/run.py @@ -7,13 +7,13 @@ sys.path.insert(0, CAFFE_ROOT + 'python') import numpy as np import caffe -import cv2 +#import cv2 def get_cafe_output(inp_blob, proto_name, caffemodel_name): caffe.set_mode_cpu() net = caffe.Net(proto_name, caffe.TEST) - net.blobs['input'].reshape(*inp_blob.shape) + #net.blobs['input'].reshape(*inp_blob.shape) net.blobs['input'].data[...] = inp_blob net.forward() @@ -28,16 +28,17 @@ def get_cafe_output(inp_blob, proto_name, caffemodel_name): if __name__ == '__main__': proto_filenames = glob.glob("layer_*.prototxt") - inp_blob = np.load('blob.npy') - print inp_blob.shape - for proto_filename in proto_filenames: proto_filename = os.path.basename(proto_filename) proto_basename = os.path.splitext(proto_filename)[0] cfmod_basename = proto_basename + ".caffemodel" npy_filename = proto_basename + ".npy" - print cfmod_basename + inp_blob_name = proto_basename + ".input.npy" + inp_blob = np.load(inp_blob_name) if os.path.exists(inp_blob_name) else np.load('blob.npy') + + print "\nGenerate data for:" + print cfmod_basename, inp_blob.shape out_blob = get_cafe_output(inp_blob, proto_filename, cfmod_basename) print out_blob.shape