#include #include #include #include #include "tkDNN/NetworkViz.h" namespace tk { namespace dnn { cv::Mat vizFloat2colorMap(cv::Mat map) { double min; double max; cv::minMaxIdx(map, &min, &max); cv::Mat adjMap; // expand your range to 0..255. Similar to histEq(); map.convertTo(adjMap,CV_8UC1, 255 / (max-min), -min); //return adjMap; cv::Mat falseColorsMap; applyColorMap(adjMap, falseColorsMap, cv::COLORMAP_HOT); return falseColorsMap; } cv::Mat vizData2Mat(dnnType *dataInput, tk::dnn::dataDim_t dim, int imgdim) { dnnType *data = nullptr; // copy to CPU if(isCudaPointer(dataInput)) { data = new dnnType[dim.tot()]; checkCuda( cudaMemcpy(data, dataInput, dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost) ); } else { data = dataInput; } int gridDim = ceil(sqrt(dim.c)); cv::Size gridSize(dim.w*gridDim, dim.h*gridDim); cv::Mat grid = cv::Mat(gridSize, CV_8UC3, cv::Scalar(0)); for(int i=0; i= net->num_layers) FatalError("Could not viz layer\n"); return vizData2Mat(net->layers[layer]->dstData, net->layers[layer]->output_dim, imgdim); //cv::imwrite("viz/layer" + std::to_string(layer) + ".png", viz); //cv::imshow("layer", viz); //cv::waitKey(0); } }}