PET(Point-Query Quadtree for Crowd Counting, Localization, and More)

PET(Point-Query Quadtree for Crowd Counting, Localization, and More)

介绍

论文:Point-Query Quadtree for Crowd Counting, Localization, and More

实验记录

训练阶段

TODO

推断阶段

下面是以一张输入图像作为网络输入的实验过程记录:

1.特征提取:对于一张768×1024的图像,记为input。对input做位置编码得到768*1024的位置编码特征,记为input_pos_embed。input经过vgg19输出两个特征分别为f1(96×128)和f2(192×256),对应sparse特征dense特征。f1和f2经过encoder网络之后得到enc_src1enc_src2,尺寸相同。

2.生成分割图:enc_src1和enc_src2经过avg_pool+conv得到一个分割图split_map(12×8),将split_map插值得到分割图split_map_sparse(96×128)split_map_dense(192×256)。(从代码中上可以看出,split_map_sparse是1减去插值结果得到的,所以split_map_sparse和split_map_dense是互斥的,也就是说,在split_map_sparse中的dense区域在split_map_dense中对应的区域是稀疏的。
在这里插入图片描述

3.网格点获取:原始图像为768×1024,使用stride为8和4获取网格点,分别得到92×128和192×256个网格点索引,根据从input_pos_embed中拿到每个点的位置编码,形状为96×128和192×256,记为query_pos_embed1,query_pos_embed2。对应的点特征是从f1和f2中抽取出来,记为query_points_feature1和query_points_feature2。
在这里插入图片描述

4.网格点筛选:这个步骤有点复杂。以split_map_sparse为例,split_map_sparse形状为96×128,将从split_map_sparse分成8×12=96个rectangle,每一个rectangle包含8*16=128个像素,记为div_win(128×96×1),然后筛选大于0.5的像素并在第0维进行累加,对应代码“valid_div = (div_win > 0.5).sum(dim=0)[: , 0] 和v_idx = valid_div > 0 ”,v_idx是一个mask(96,)的(其中17个为false, 79个为true),也就是说在96个rectangle中,但只选择了79个rectangle。query_pos_embed1和query_points_feature1也同样分成96个rectangle,经过筛选后得到query_embed(128×79×256)query_feats(128×79×256)。enc_src1也被分为96个rectangle,经过筛选后得到memory_win(128×79×256)
在这里插入图片描述

5.Decoding:将上面的query_embed, query_feats,memory_win输入到decoder网络,获得10112(128×79)个输出点,预测10112个偏置,因为train阶段输入图像大小都是256*256,inference阶段输入图像大小各不相同,所以需要对10112个偏置进行rescale(根据256的倍数调整)。同样的操作,对于192×256(dense)特征图,生成4608个输出点

6.合并预测结果:根据预测的分类标签值,分别从10112个输出点选出56个点,从4608个输出点中选择118个点,合并成174个点, 也就是最终的所有预测点。gt为172,计算mae=(174-172)=2, 计算mse=(174-172)^2=4。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 04:20:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 04:20:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 04:20:04       87 阅读
  4. Python语言-面向对象

    2023-12-08 04:20:04       96 阅读

热门阅读

  1. What is John Deere diagnostic software called?

    2023-12-08 04:20:04       48 阅读
  2. Uni-App知识点

    2023-12-08 04:20:04       59 阅读
  3. STL-空间配置器

    2023-12-08 04:20:04       56 阅读
  4. react(2) - react-redux的基本使用

    2023-12-08 04:20:04       59 阅读
  5. ❀My学习Linux命令小记录(15)❀

    2023-12-08 04:20:04       39 阅读
  6. 设计多级菜单的数据结构(C语言实现)

    2023-12-08 04:20:04       60 阅读
  7. 简述本人项目中常用的Typescript的知识

    2023-12-08 04:20:04       57 阅读
  8. 括号匹配的检验(数据结构实训)

    2023-12-08 04:20:04       52 阅读
  9. K8s基础

    K8s基础

    2023-12-08 04:20:04      57 阅读