i'm trying to convert an onnx model to ncnn model, i use the command
~/data/ncnn-master/build/tools/onnx/onnx2ncnn ./flip_sim.onnx flip_sim.param flip_sim.bin
to get para and bin file
when a input a whole white image,the result of onnxruntime and ncnn is not same,even from second layers,i can't figure out why。here is the ncnn code
#include "net.h"
#if defined(USE_NCNN_SIMPLEOCV)
#include "simpleocv.h"
#else
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#endif
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
float sum_dep(float* begin, int step){
float sum = 0;
for(int i=0; i<step; i++){
sum += *(begin + i);
}
return sum;
}
int main(int argc, char** argv){
ncnn::Net FLIP;
FLIP.load_param("./flip_sim.param");
FLIP.load_model("./flip_sim.bin");
cv::Mat input = cv::Mat(1080,1080,CV_8UC1, cv::Scalar(255));
ncnn::Mat in = ncnn::Mat::from_pixels(input.data, ncnn::Mat::PIXEL_GRAY, input.cols, input.rows);
const float norm_vals[1] = {1/255.0f};
in.substract_mean_normalize(0, norm_vals);
ncnn::Extractor ex = FLIP.create_extractor();
ex.input("input:0", in);
float in_sum = sum_dep((float*)in.data, in.w*in.h*in.c*in.d);
ncnn::Mat out;
ex.extract("vgg_19/final_softmax:0", out);
float* begin_point = (float*)out.data;
auto out_min = *min_element(begin_point, begin_point+out.w*out.h*out.d*out.c);
auto out_max = *max_element(begin_point, begin_point+out.w*out.h*out.d*out.c);
}
here is the onnx file https://pan.baidu.com/s/13b_JbQW_Zbma8j6IOQiYTw password:2881