Open lmq5294249 opened 1 year ago
1、Export .pt reid models to: ONNX 2、Then I export to NCNN model osnet_x0_75_msmt17_combineall-sim-opt.zip 3、set up parameters const float m_mean_value[3] = { 0.485, 0.456, 0.406}; const float m_norm_value[3] = { 0.229, 0.224, 0.225}; int _input_width = 128, int _input_height = 256,
std::vector FastReID::detectMatToVector(const cv::Mat &rgb) { cv::Mat resultMat;
int img_w = rgb.cols; int img_h = rgb.rows; ncnn::Mat ncnn_img; ncnn_img = ncnn::Mat::from_pixels_resize(rgb.data, ncnn::Mat::PIXEL_RGB, img_w,img_h, input_width, input_height); ncnn_img.substract_mean_normalize(m_mean_value, m_norm_value); ncnn::Extractor ex = net.create_extractor(); ex.set_num_threads(1); ex.input("images", ncnn_img); ncnn::Mat inference_out; ex.extract("output", inference_out); if (inference_out.empty()) { return resultMat; } float *pha_data = (float*)inference_out.data; cv::Mat onefeature(inference_out.h, inference_out.w, CV_32FC1, pha_data); cv::Mat mat_1d = onefeature.reshape(1, 1); // 转换为一维的cv::Mat std::vector<float> vec(mat_1d.ptr<float>(0), mat_1d.ptr<float>(0) + mat_1d.cols); // 拷贝数据到vector中 return vec;
} 5、分别将两张不同人形的图输出结果导入下面的函数,输出结果 double cosine_similarity(const std::vector& v1, const std::vector& v2) { // 计算向量长度 double len1 = 0.0, len2 = 0.0; for (double x : v1) { len1 += x x; } for (double x : v2) { len2 += x x; }
// 计算点积 double dot = 0.0; size_t n = fmin(v1.size(), v2.size()); for (size_t i = 0; i < n; i++) { dot += v1[i] * v2[i]; } // 计算余弦相似度 double cos_sim = dot / (sqrt(len1) * sqrt(len2)); return cos_sim;
}
得到错误的结果:即使两张图片区别很大,但是结果还是0.99765.显然结果是错误的。 6、我通过Use Torchreid as a feature extractor in your projects的例子来计算就发现结果相似度就比较低
显然是我NCNN模型是错误的,我注意到转为ONNX提示了警告,是不是我用的转换指令有问题 python export.py -p "./osnet_x0_25_market1501.pth" -hp --imgsz 256 128 --include onnx
十万火急求助:折腾我一个多星期!!!!!!
ORTSuperResolution.zip detect 2.py.zip 在MAC上用osnet_x0_75_msmt17_combineall.onnx 测试两张不同图片,输出相似度很低0.47 但是在移动平台IOS上用ONNX检测不同图片输出结果相似度超级高0.92多 从结果来说 在移动平台的推测结果是错误??? 不明白这个是什么原因???
1、Export .pt reid models to: ONNX 2、Then I export to NCNN model osnet_x0_75_msmt17_combineall-sim-opt.zip 3、set up parameters const float m_mean_value[3] = { 0.485, 0.456, 0.406}; const float m_norm_value[3] = { 0.229, 0.224, 0.225}; int _input_width = 128, int _input_height = 256,
std::vector FastReID::detectMatToVector(const cv::Mat &rgb)
{
cv::Mat resultMat;
} 5、分别将两张不同人形的图输出结果导入下面的函数,输出结果 double cosine_similarity(const std::vector& v1, const std::vector& v2) {
// 计算向量长度
double len1 = 0.0, len2 = 0.0;
for (double x : v1) {
len1 += x x;
}
for (double x : v2) {
len2 += x x;
}
}
得到错误的结果:即使两张图片区别很大,但是结果还是0.99765.显然结果是错误的。 6、我通过Use Torchreid as a feature extractor in your projects的例子来计算就发现结果相似度就比较低
显然是我NCNN模型是错误的,我注意到转为ONNX提示了警告,是不是我用的转换指令有问题 python export.py -p "./osnet_x0_25_market1501.pth" -hp --imgsz 256 128 --include onnx
十万火急求助:折腾我一个多星期!!!!!!