问答

tensorflow 输出的 tensor 数据格式是怎么定义的?

作者:admin 2021-04-21 我要评论

各位好, 我是刚刚开始接触机器学习, 打算做一个行人检测的应用,也就是检测图片内中的行人并标注出来。 我在 Github 上找到一份代码,编译调试后, 确认可以进...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

各位好, 我是刚刚开始接触机器学习, 打算做一个行人检测的应用,也就是检测图片内中的行人并标注出来。 我在 Github 上找到一份代码,编译调试后, 确认可以进行, 所以想改改他的代码来适应我的项目, 经过长时间的调试后, 最后出现了一个不能解决的问题,就是在获取输出的 tensor 后,作者取数据计算行人边框的方式很难理解。

主要问题有下面几个:

  1. tensor 里面不是存的 NCHW 或者 NHWC 的数据么? 为什么会有位置信息?
  2. 为什么输出的 tensorboxes->host<float>()[i * 4] 和中心点有关, boxes->host<float>()[i * 4 + 2] 和 宽度有关, 这个定义是如何定义的, 是训练的时候定义 model 时定义的么?
  3. 如何确定一个 tensor 里面的数据组成呢?

下面是作者获取 边框 的函数:

void UltraFace::generateBBox(std::vector<FaceInfo> &bbox_collection, MNN::Tensor *scores, MNN::Tensor *boxes) {
    for (int i = 0; i < num_anchors; i++) {
        if (scores->host<float>()[i * 2 + 1] > score_threshold) {
            FaceInfo rects;
            float x_center = boxes->host<float>()[i * 4] * center_variance * priors[i][2] + priors[i][0];
            float y_center = boxes->host<float>()[i * 4 + 1] * center_variance * priors[i][3] + priors[i][1];
            float w = exp(boxes->host<float>()[i * 4 + 2] * size_variance) * priors[i][2];
            float h = exp(boxes->host<float>()[i * 4 + 3] * size_variance) * priors[i][3];
            
            rects.x1 = clip(x_center - w / 2.0, 1) * image_w;
            rects.y1 = clip(y_center - h / 2.0, 1) * image_h;
            rects.x2 = clip(x_center + w / 2.0, 1) * image_w;
            rects.y2 = clip(y_center + h / 2.0, 1) * image_h;
            rects.score = clip(scores->host<float>()[i * 2 + 1], 1);
            bbox_collection.push_back(rects);
        }
    }
}

刚刚接触, 所以无从下手, 希望好心人能帮个忙, 给个搜索的关键词, 上面的问题主要是不知道怎么搜才能搜索相关信息 ~~~

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • tensorflow 输出的 tensor 数据格式是

    tensorflow 输出的 tensor 数据格式是

  • 实体电脑有什么可以做快照的方案?

    实体电脑有什么可以做快照的方案?

  • android studio能打开模拟器,但出一些

    android studio能打开模拟器,但出一些

  • 如何用正则匹配除了指定中文的其他的中

    如何用正则匹配除了指定中文的其他的中

腾讯云代理商
海外云服务器