行人属性数据集pa100k_人物属性小结

相关参考链接当时没保存,现在找不到了,如有冒犯请告知,侵删。

Pedestrian-Attribute-Recognition

一些基于VesPA,WPAL的行人属性识别方法。 PA-100K和RAP用于训练。

关于行人属性的开源代码资源,主要就 Weakly-supervised Learning of Mid-level Features for Pedestrian Attribute Recognition and Localization的开源进行了相关的测试和拓展,利用RAP数据集以及PA-100K数据集进行训练和测试。另外 Adaptively Weighted Multi-task Deep Network for Person Attribute Classification提供了不完整且仅针对人脸属性的代码,并且没有相应的文档说明。

数据集方面比较著名的是RAP数据集和PETA数据集,PA-100K克服了前两个数据集中一些数据采集和分配方面的缺点,但是只进行了26个属性的标注。

相关论文可以参考的部分

1.Adaptively Weighted Multi-task Deep Network for Person Attribute Classification

这篇论文的测试主要基于人脸属性数据集和冷门的行人属性数据集,所以测试结果可参考性不大,但其提出的动态调整loss权重的训练算法感觉可以用在其他地方,辅助提升属性识别效果

2.HydraPlus-Net: Attentive Deep Features for Pedestrian Analysis

作者提出的方法是通过提取不同位置的特征,即从局部到整体多个角度进行提取,来解决属性识别的问题。同时,还需要从不同的特征层次进行提取,如衣服条纹用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个行人属性识别的训练代码示例,使用了PyTorch框架: ```python import os import argparse import torch from torch import nn, optim from torch.utils.data import DataLoader from torchvision import transforms from dataset import PA100K from model import BaselineModel parser = argparse.ArgumentParser() parser.add_argument('--data_dir', type=str, default='./data') parser.add_argument('--batch_size', type=int, default=64) parser.add_argument('--lr', type=float, default=0.001) parser.add_argument('--num_epochs', type=int, default=100) parser.add_argument('--model_dir', type=str, default='./models') args = parser.parse_args() device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') train_transforms = transforms.Compose([ transforms.Resize((256, 128)), transforms.RandomHorizontalFlip(), transforms.ToTensor(), ]) val_transforms = transforms.Compose([ transforms.Resize((256, 128)), transforms.ToTensor(), ]) train_dataset = PA100K(args.data_dir, 'train', transform=train_transforms) val_dataset = PA100K(args.data_dir, 'val', transform=val_transforms) train_loader = DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) val_loader = DataLoader(val_dataset, batch_size=args.batch_size, shuffle=False, num_workers=4) model = BaselineModel(num_classes=26).to(device) criterion = nn.BCEWithLogitsLoss() optimizer = optim.Adam(model.parameters(), lr=args.lr) for epoch in range(args.num_epochs): train_loss = 0.0 train_acc = 0.0 val_loss = 0.0 val_acc = 0.0 model.train() for images, labels in train_loader: images = images.to(device) labels = labels.to(device) optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() train_loss += loss.item() * images.size(0) preds = (torch.sigmoid(outputs) > 0.5).float() train_acc += torch.sum(preds == labels).item() train_loss /= len(train_dataset) train_acc /= len(train_dataset) model.eval() with torch.no_grad(): for images, labels in val_loader: images = images.to(device) labels = labels.to(device) outputs = model(images) loss = criterion(outputs, labels) val_loss += loss.item() * images.size(0) preds = (torch.sigmoid(outputs) > 0.5).float() val_acc += torch.sum(preds == labels).item() val_loss /= len(val_dataset) val_acc /= len(val_dataset) print('Epoch [{}/{}], Train Loss: {:.4f}, Train Acc: {:.4f}, Val Loss: {:.4f}, Val Acc: {:.4f}' .format(epoch+1, args.num_epochs, train_loss, train_acc, val_loss, val_acc)) if (epoch+1) % 10 == 0: save_path = os.path.join(args.model_dir, 'model-{}.pt'.format(epoch+1)) torch.save(model.state_dict(), save_path) ``` 这段代码使用了行人属性识别数据PA100K,并使用了一个基线模型`BaselineModel`进行训练。具体来说,这段代码中: - `args`用于定义一些训练的超参数,例如数据集的路径、批次大小、学习率、训练轮数等等。 - 在`train_transforms`和`val_transforms`中定义了数据预处理的方式,包括将图片大小调整为256x128、随机水平翻转、转换为张量等等。 - 使用`DataLoader`分别对训练集和验证集进行批量读取。 - 定义了一个基线模型`BaselineModel`,用于行人属性识别任务,并定义了损失函数`BCEWithLogitsLoss`和优化器`Adam`。 - 在每个训练周期内,对训练集进行迭代训练,并在验证集上进行验证。 - 输出训练过程中的损失和精度,并每10个周期保存一次模型。 这段代码只是一个示例,实际的训练过程中可能还需要进行更多的调优和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值