// https://github.com/richzhang/colorization TEST(Reproducibility_Colorization, Accuracy) { const float l1 = 1e-5; const float lInf = 3e-3; Mat inp = blobFromNPY(_tf("colorization_inp.npy")); Mat ref = blobFromNPY(_tf("colorization_out.npy")); Mat kernel = blobFromNPY(_tf("colorization_pts_in_hull.npy")); const string proto = findDataFile("dnn/colorization_deploy_v2.prototxt", false); const string model = findDataFile("dnn/colorization_release_v2.caffemodel", false); Net net = readNetFromCaffe(proto, model); net.getLayer(net.getLayerId("class8_ab"))->blobs.push_back(kernel); net.getLayer(net.getLayerId("conv8_313_rh"))->blobs.push_back(Mat(1, 313, CV_32F, 2.606)); net.setInput(inp); Mat out = net.forward(); normAssert(out, ref, "", l1, lInf); }
void expectNoFallbacks(Net& net) { // Check if all the layers are supported with current backend and target. // Some layers might be fused so their timings equal to zero. std::vector<double> timings; net.getPerfProfile(timings); std::vector<String> names = net.getLayerNames(); CV_Assert(names.size() == timings.size()); for (int i = 0; i < names.size(); ++i) { Ptr<dnn::Layer> l = net.getLayer(net.getLayerId(names[i])); bool fused = !timings[i]; if ((!l->supportBackend(backend) || l->preferableTarget != target) && !fused) CV_Error(Error::StsNotImplemented, "Layer [" + l->name + "] of type [" + l->type + "] is expected to has backend implementation"); } }