Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

这篇具有很好参考价值的文章主要介绍了Leveraging Unlabeled Data for Crowd Counting by Learning to Rank。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

无标签人群技术,作者引入了一种排名。
利用的是一个图的人群数量一定小于等于包含这个图的图

生成排名数据集

作者提出了一种自监督任务,利用的是一个图的人群数量一定小于等于包含这个图的图
Leveraging Unlabeled Data for Crowd Counting by Learning to Rank,深度学习,人群技术方法
流程:
1.以图像中心为中心,划分一个 1 / r 1/r 1/r图像大小的矩形(但是这里没写是面积的还是长宽的)
在这个矩形中,随机选择一个点当作锚点
2.以锚点为中心,找到一个不超过图像边界的正方形
3.重复 k − 1 k-1 k1次,每次生成一个正方形,大小是上一个正方形的 1 / s 1/s 1/s(也没说是面积还是长宽)
目测代码是这样写的

def generate_ranking(img, k, s, r):
    h, w, _ = img.shape
    center_h = h // 2
    center_w = w // 2
    region_h = int(h // (r**0.5))
    region_w = int(w // (r**0.5))
    left_h = center_h - region_h // 2
    left_w = center_w - region_w // 2
    right_h = left_h + region_h
    right_w = left_w + region_w

    anchor_h = np.random.randint(left_h, right_h)
    anchor_w = np.random.randint(left_w, right_w)
    radius = min(anchor_h, h - anchor_h, anchor_w, w - anchor_w)

    res = []
    for _ in range(k):
        res.append(img[anchor_h - int(radius):anchor_h + int(radius),
                   anchor_w - int(radius):anchor_w + int(radius)])
        radius *= float(s)

    return res

为了收集一个大的数据集,作者用了两种方法
Keyword query:google里搜索Crowded, Demonstration, Train station, Mall, Studio,
Beach

Query-by-example image retrieval:利用UCF CC 50,ShanghaiTech Part A, ShanghaiTech Part B,在google图搜图,每一张图选10张
Leveraging Unlabeled Data for Crowd Counting by Learning to Rank,深度学习,人群技术方法

Learning from ranked image sets

Crowd density estimation network

用的vgg16,去掉全连接,最后一个max pooling换成 3 ∗ 3 3*3 33的卷积,把通道从512变为1,生成density map
模型就是图中的橙色部分
Leveraging Unlabeled Data for Crowd Counting by Learning to Rank,深度学习,人群技术方法

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import torch
from torch import nn
from torchvision.models import vgg16, VGG16_Weights

class VGG(nn.Module):
    def __init__(self):
        super(VGG, self).__init__()
        vgg_16 = vgg16(weights=VGG16_Weights.DEFAULT)
        self.features = vgg16(weights=VGG16_Weights.DEFAULT).features
        temp = nn.Conv2d(512, 1, 3, 1, 1)
        nn.init.normal_(temp.weight, std=0.01)
        if temp.bias is not None:
            nn.init.constant_(temp.bias, 0)
        self.features[-1] = temp

    def forward(self, x):
        return self.features(x)


if __name__ == '__main__':
    model = VGG()
    B = 2
    a = torch.rand((B, 3, 224, 224))
    b = model(a)
    c = b.view(B, 1, -1)
    M = c.size(2)
    d = torch.mean(c, dim=-1)
    print(M)
    print(b.shape) # torch.Size([2, 1, 14, 14])
    print(c.shape) # torch.Size([2, 1, 196])
    print(d.shape) # torch.Size([2, 1])

标签的density map就是每一个点分别做一个标准差为1,大小为15的高斯核,损失用的MSE
为了进一步提升效果,我们随机采样一个正方形(56-448像素)

Crowd ranking network

这里针对的是没有标注的部分
简单来说就是对density map做average pooling,得到 c ^ i \hat{c}_i c^i, 人群数量就是 C ^ ( I i ) = M × c ^ ( I i ) \hat{C}\left(I_i\right) = M \times \hat{c}\left(I_i\right) C^(Ii)=M×c^(Ii)

损失是一个排名hinge loss
L r = max ⁡ ( 0 , c ^ ( I 2 ) − c ^ ( I 1 ) + ε ) L_r = \max \left(0, \hat{c}\left(I_2\right) - \hat{c}\left(I_1\right) + \varepsilon\right) Lr=max(0,c^(I2)c^(I1)+ε)
这里的 ε = 0 \varepsilon=0 ε=0
这个loss就是要大的图片比小的图片排名靠前(人数更多)

损失只针对比他小文章来源地址https://www.toymoban.com/news/detail-817816.html

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import torch
from torch import nn
import torch.nn.functional as F

class RankingLoss(nn.Module):
    def __init__(self, k, eps=0, reduction='sum'):
        super(RankingLoss, self).__init__()
        self.k = k
        self.eps = eps
        self.reduction = reduction

    def forward(self, x):
        B = x.size(0)
        assert B % self.k == 0
        loss = 0.
        cnt = 0
        for start in range(0, B, self.k):
            end = start + self.k
            for i in range(start, end):
                for j in range(i + 1, end):
                    loss += F.relu(x[j] - x[i] + self.eps)
                cnt += 1
        if self.reduction == 'mean':
            return loss / cnt
        return loss

到了这里,关于Leveraging Unlabeled Data for Crowd Counting by Learning to Rank的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Contrastive Learning for Unpaired Image-to-Image Translation》

    原文及代码链接 https://github.com/taesungp/contrastive-unpaired-translation 图像转换任务中,输入-输出对应patch内容应该保持一致; 使用基于patch的 对比学习 方法实现 单向图像转换 ; 训练 数据不成对 ; 该方法促使输入-输出中对应patch映射到特征空间中的一个相似点,输入图像中其他

    2024年02月08日
    浏览(40)
  • Introduction to Hadoop Ecosystem for Data Science

    作者:禅与计算机程序设计艺术 Hadoop Ecosystem 是一个基于Java的开源框架,主要用于存储、处理和分析海量数据。其提供的组件包括HDFS(Hadoop Distributed File System),MapReduce(分布式计算框架),YARN(Yet Another Resource Negotiator)以及HBase(一个可伸缩的分布式NoSQL数据库)。 Apa

    2024年02月06日
    浏览(50)
  • Introduction to Flink Streaming Platform for Big Data

    作者:禅与计算机程序设计艺术 Flink是一个开源的分布式流处理框架,它允许快速轻松地进行实时数据处理,提供了一个完整的数据流程解决方案。它支持低延迟的实时数据计算、高吞吐量的实时数据传输以及复杂事件处理(CEP)。Flink在Apache顶级项目中排名第二,同时也被很多

    2024年02月07日
    浏览(52)
  • Leveraging Natural Language Processing to Generate Pers

    作者:禅与计算机程序设计艺术 现代医疗卫生领域面临着巨大的需求量,而给患者提供正确、专业的治疗建议成为了现实存在的难题。如何根据患者自身情况,通过对病人的病情描述进行分析,及时为其提供准确且有效的治疗建议,是一个至关重要的问题。为了实现这一目标

    2024年02月09日
    浏览(40)
  • ExposureDiffusion: Learning to Expose for Low-light Image Enhancement论文阅读笔记

    南洋理工大学、鹏城实验室、香港理工大学在ICCV2023发表的暗图增强论文。用diffusion模型来进行raw图像暗图增强,同时提出了一个自适应的残差层用来对具有不同信噪比的不同区域采取不同的去噪策略。 方法的框图如下所示: 一张raw图片可以由信号和噪声组成,其中信号是曝

    2024年02月07日
    浏览(40)
  • Learning to Super-resolve Dynamic Scenes for Neuromorphic Spike Camera论文笔记

    脉冲相机使用了“integrate and fire”机制来生成连续的脉冲流,以极高的时间分辨率来记录动态光照强度。但是极高的时间分辨率导致了受限的空间分辨率,致使重建出的图像无法很好保留原始场景的细节。为了解决这个问题,这篇文章提出了SpikeSR-Net来从低分辨率二进制脉冲

    2024年02月12日
    浏览(38)
  • 论文笔记:Leveraging Language Foundation Models for Human Mobility Forecasting

    SIGSPATIAL 2022 语言模型+POI客流量预测

    2024年04月23日
    浏览(34)
  • Failed to load response data: No data found for resource with given identifier 错误问题排查解决

    同事在一个新的环境里部署了一套测试环境,因为服务器内存问题等问题,没有采用容器部署,直接进行打包部署的,用nginx做代理完成。 部署完成后,也是遇到一系列的问题,其中 Failed to load response data: No data found for resource with given identifier  这个问题在平台里导出都有报,

    2024年01月19日
    浏览(51)
  • Variations-of-SFANet-for-Crowd-Counting可视化代码

    前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理,链接如下:Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 不太习惯用jupyter notebook, 这里改成了python代码测试,下面代码提到的测试数据都是项目自带的,权重自己下载一下吧,前文提到

    2024年02月06日
    浏览(39)
  • webpack < 5 used to include polyfills for node.js core modules by default

    craco.config.js如下

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包