We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
温馨提示:根据社区不完全统计,按照模板提问,可以加快回复和解决问题的速度
cmake .. \ -D ENABLE_ORT_BACKEND=ON \ -D ENABLE_VISION=ON \
fastdeploy/vision/utils/dark_parse.cc
void DarkParse(const std::vector<float>& heatmap, const std::vector<int>& dim, std::vector<float>* coords, const int px, const int py, const int index, const int ch) { /*DARK postpocessing, Zhang et al. Distribution-Aware Coordinate Representation for Human Pose Estimation (CVPR 2020). 1) offset = - hassian.inv() * derivative 2) dx = (heatmap[x+1] - heatmap[x-1])/2. 3) dxx = (dx[x+1] - dx[x-1])/2. 4) derivative = Mat([dx, dy]) 5) hassian = Mat([[dxx, dxy], [dxy, dyy]]) */ std::vector<float>::const_iterator first1 = heatmap.begin() + index; std::vector<float>::const_iterator last1 = heatmap.begin() + index + dim[2] * dim[3]; std::vector<float> heatmap_ch(first1, last1); cv::Mat heatmap_mat = cv::Mat(heatmap_ch).reshape(0, dim[2]); heatmap_mat.convertTo(heatmap_mat, CV_32FC1); cv::GaussianBlur(heatmap_mat, heatmap_mat, cv::Size(3, 3), 0, 0); heatmap_mat = heatmap_mat.reshape(1, 1); heatmap_ch = std::vector<float>(heatmap_mat.reshape(1, 1)); printf("<%s ## %d> heatmap_ch.size(): %d\n", __FILE__, __LINE__, heatmap_ch.size()); float epsilon = 1e-10; // sample heatmap to get values in around target location printf("< ## %d> index: %d\n", __LINE__, py * dim[3] + px); float xy = log(fmax(heatmap_ch[py * dim[3] + px], epsilon)); printf("< ## %d> index: %d\n", __LINE__, py * dim[3] + px + 1); float xr = log(fmax(heatmap_ch[py * dim[3] + px + 1], epsilon)); printf("< ## %d> index: %d\n", __LINE__, py * dim[3] + px - 1); float xl = log(fmax(heatmap_ch[py * dim[3] + px - 1], epsilon)); printf("< ## %d> index: %d\n", __LINE__, py * dim[3] + px + 2); float xr2 = log(fmax(heatmap_ch[py * dim[3] + px + 2], epsilon)); printf("< ## %d> index: %d\n", __LINE__, py * dim[3] + px - 2); float xl2 = log(fmax(heatmap_ch[py * dim[3] + px - 2], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py + 1) * dim[3] + px); float yu = log(fmax(heatmap_ch[(py + 1) * dim[3] + px], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py - 1) * dim[3] + px); float yd = log(fmax(heatmap_ch[(py - 1) * dim[3] + px], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py + 2) * dim[3] + px); float yu2 = log(fmax(heatmap_ch[(py + 2) * dim[3] + px], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py - 2) * dim[3] + px); float yd2 = log(fmax(heatmap_ch[(py - 2) * dim[3] + px], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py + 1) * dim[3] + px + 1); float xryu = log(fmax(heatmap_ch[(py + 1) * dim[3] + px + 1], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py - 1) * dim[3] + px + 1); float xryd = log(fmax(heatmap_ch[(py - 1) * dim[3] + px + 1], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py + 1) * dim[3] + px - 1); float xlyu = log(fmax(heatmap_ch[(py + 1) * dim[3] + px - 1], epsilon)); printf("< ## %d> index: %d\n", __LINE__, (py - 1) * dim[3] + px - 1); float xlyd = log(fmax(heatmap_ch[(py - 1) * dim[3] + px - 1], epsilon)); printf("<%s ## %d>\n", __FILE__, __LINE__); // compute dx/dy and dxx/dyy with sampled values float dx = 0.5 * (xr - xl); float dy = 0.5 * (yu - yd); float dxx = 0.25 * (xr2 - 2 * xy + xl2); float dxy = 0.25 * (xryu - xryd - xlyu + xlyd); float dyy = 0.25 * (yu2 - 2 * xy + yd2); // finally get offset by derivative and hassian, which combined by dx/dy and // dxx/dyy if (dxx * dyy - dxy * dxy != 0) { float M[2][2] = {dxx, dxy, dxy, dyy}; float D[2] = {dx, dy}; cv::Mat hassian(2, 2, CV_32F, M); cv::Mat derivative(2, 1, CV_32F, D); cv::Mat offset = -hassian.inv() * derivative; (*coords)[ch * 2] += offset.at<float>(0, 0); (*coords)[ch * 2 + 1] += offset.at<float>(1, 0); } }
examples/vision/keypointdetection/tiny_pose/cpp/pptinypose_infer.cc
D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-release-1.0.7\examples\vision\keypointdetection\tiny_pose\cpp\build\Release>infer_tinypose_demo.exe [INFO] fastdeploy/runtime/runtime.cc(326)::fastdeploy::Runtime::CreateOrtBackend Runtime initialized with Backend::ORT in Device::CPU. <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 0 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 3000 < ## 48> index: 3001 < ## 51> index: 2999 < ## 54> index: 3002 < ## 57> index: 2998 < ## 60> index: 3048 < ## 63> index: 2952 < ## 66> index: 3096 < ## 69> index: 2904 < ## 72> index: 3049 < ## 75> index: 2953 < ## 78> index: 3047 < ## 81> index: 2951 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 0 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 1 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 3002 < ## 48> index: 3003 < ## 51> index: 3001 < ## 54> index: 3004 < ## 57> index: 3000 < ## 60> index: 3050 < ## 63> index: 2954 < ## 66> index: 3098 < ## 69> index: 2906 < ## 72> index: 3051 < ## 75> index: 2955 < ## 78> index: 3049 < ## 81> index: 2953 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 1 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 2 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 119 < ## 48> index: 120 < ## 51> index: 118 < ## 54> index: 121 < ## 57> index: 117 < ## 60> index: 167 < ## 63> index: 71 < ## 66> index: 215 < ## 69> index: 23 < ## 72> index: 168 < ## 75> index: 72 < ## 78> index: 166 < ## 81> index: 70 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 2 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 3 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 73 < ## 48> index: 74 < ## 51> index: 72 < ## 54> index: 75 < ## 57> index: 71 < ## 60> index: 121 < ## 63> index: 25 < ## 66> index: 169 < ## 69> index: -23 < ## 72> index: 122 < ## 75> index: 26 < ## 78> index: 120 < ## 81> index: 24 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 3 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 4 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 2809 < ## 48> index: 2810 < ## 51> index: 2808 < ## 54> index: 2811 < ## 57> index: 2807 < ## 60> index: 2857 < ## 63> index: 2761 < ## 66> index: 2905 < ## 69> index: 2713 < ## 72> index: 2858 < ## 75> index: 2762 < ## 78> index: 2856 < ## 81> index: 2760 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 4 TinyPose Prediction Done! KeyPointDetectionResult: [x, y, conf] 405.110565,1040.763550, 0.982505 435.185120,1040.723511, 0.941282 379.676727,25.008259, 0.943791 413.712097,16.569639, 0.949045 419.809235,976.065735, 0.979562 num_joints:5 TinyPose visualized result saved in ./tinypose_vis_result.jpg D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-release-1.0.7\examples\vision\keypointdetection\tiny_pose\cpp\build\Release>infer_tinypose_demo.exe [INFO] fastdeploy/runtime/runtime.cc(326)::fastdeploy::Runtime::CreateOrtBackend Runtime initialized with Backend::ORT in Device::CPU. <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 0 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 3000 < ## 48> index: 3001 < ## 51> index: 2999 < ## 54> index: 3002 < ## 57> index: 2998 < ## 60> index: 3048 < ## 63> index: 2952 < ## 66> index: 3096 < ## 69> index: 2904 < ## 72> index: 3049 < ## 75> index: 2953 < ## 78> index: 3047 < ## 81> index: 2951 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 0 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 1 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 3002 < ## 48> index: 3003 < ## 51> index: 3001 < ## 54> index: 3004 < ## 57> index: 3000 < ## 60> index: 3050 < ## 63> index: 2954 < ## 66> index: 3098 < ## 69> index: 2906 < ## 72> index: 3051 < ## 75> index: 2955 < ## 78> index: 3049 < ## 81> index: 2953 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 1 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 2 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 119 < ## 48> index: 120 < ## 51> index: 118 < ## 54> index: 121 < ## 57> index: 117 < ## 60> index: 167 < ## 63> index: 71 < ## 66> index: 215 < ## 69> index: 23 < ## 72> index: 168 < ## 75> index: 72 < ## 78> index: 166 < ## 81> index: 70 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 84> <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 107> j: 2 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\keypointdet\pptinypose\pptinypose_utils.cc ## 105> j: 3 <D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-develop\fastdeploy\vision\utils\dark_parse.cc ## 42> heatmap_ch.size(): 3072 < ## 45> index: 73 < ## 48> index: 74 < ## 51> index: 72 < ## 54> index: 75 < ## 57> index: 71 < ## 60> index: 121 < ## 63> index: 25 < ## 66> index: 169 < ## 69> index: -23 D:\Work\__DataSet\__Deploy_bak\fastdeploy\FastDeploy-release-1.0.7\examples\vision\keypointdetection\tiny_pose\cpp\build\Release>
The text was updated successfully, but these errors were encountered:
修复 #2359 (#2363)
cfd80e9
Update pptinypose_utils.cc 添加 py 范围限制, 避免 utils::DarkParse 内部出现数组越界
No branches or pull requests
温馨提示:根据社区不完全统计,按照模板提问,可以加快回复和解决问题的速度
环境
问题日志及出现问题的操作流程
fastdeploy/vision/utils/dark_parse.cc
添加打印代码examples/vision/keypointdetection/tiny_pose/cpp/pptinypose_infer.cc
The text was updated successfully, but these errors were encountered: