GaitSet论文复现中遇到的部分问题解决(CASIA-B数据集)


前言

本文是博主小学期作业一部分,尚未对模型结构吃透,对于深度学习也只是看了看门槛,请多担待。


以下是本篇文章正文内容,提供对于GaitDatasetB数据集的GaitSet论文的复现,下面案例可供参考

PS:再次重申,博主并非研究GaitSet方向,该文章为小学期作业,因此探究并不深入,博主对模型理解也不深入,大家遇到问题可以在评论区提问,欢迎大家同博主一起讨论问题,也欢迎遇到相似问题的小伙伴们互相帮忙。

一、GaitSet模型简介

论文地址https://ieeexplore.ieee.org/document/9351667
github地址https://github.com/AbnerHqC/GaitSet

论文为复旦大学发表于 AAAI 2019 的工作。截至目前CASIA-B正确率最高的网络。
这是我参考的论文翻译https://blog.csdn.net/o0haidee0o/article/details/91381669

使用数据集:CASIA-B
数据集连接http://www.cbsr.ia.ac.cn/english/Gait%20Databases.asp

二、数据集介绍(原文链接:https://blog.csdn.net/qq_42191914/article/details/105473925

CASIA-B是比较经典的步态识别数据集,包含124个目标(subjects),每个目标有3种步行情况(normal/‘NM’、bag/‘BG’、coat or jacket/‘CL’)和11个角度(0°、18°、…、180°)。其中每个目标有6段NM序列、2段BG序列、2段CL序列。因此,每个目标都有
11*(6+2+2)=110段序列。
 另外,该数据集没有官方的划分训练集和验证集,一般的做法是使用三种划分方法:
 (a)Small-sample training(ST):训练集24个目标,验证集100个目标;
 (b)Medium-sample training(MT):训练集62个目标,验证集62个目标;
 (c)Large-sample training(LT):训练集74个目标,验证集50个目标。

三.数据预处理

数据输入和输出路径:文件pretreatment.py

parser.add_argument('--input_path', default='E:\GaitSet-master\data\GaitDatasetB-silh\pretreatment', type=str,
                        help='Root path of raw dataset.') # 这是输入路径,按照自己解压路径自行修改
parser.add_argument('--output_path', default='E:\GaitSet-master\data\GaitDatasetB-silh\output', type=str,
                        help='Root path for output.') #这是预处理输出路径

线程数设置:这里我设置的线程数为10

parser.add_argument('--worker_num', default=10, type=int,
    				help='How many subprocesses to use for data pretreatment. '
                  	'Default: 0') # 线程数设置

开多线程需要在main函数中才能运行,所以我采取的解决办法(比较原始粗暴)是将所有函数包含在main中(即在原码中在import后写main,并将所有后面全部缩进):

from multiprocessing import TimeoutError as MP_TimeoutError

if __name__ == '__main__':

    START = "START"

在cut_pickle函数中保存图片是用:

scisc.imsave(save_path, img)

但是会出现错误,改正方法:将scisc.imsave改为cv2.imwrite

cv2.imwrite(save_path, img)

四、测试

1、config.py配置

conf = {
    "WORK_PATH": "./work",
    "CUDA_VISIBLE_DEVICES": "1",  # 所用GPU编号
    "data": {
        'dataset_path': "/local/pre-output/", # 数据加载路径(预处理时的输出路径)
        'resolution': '64', # 输出轮廓图的分辨率,不用更改
        'dataset': 'CASIA-B', # 数据集名称
        # In CASIA-B, data of subject #5 is incomplete.
        # Thus, we ignore it in training.
        # For more detail, please refer to
        # function: utils.data_loader.load_data
        'pid_num': 73,  # 训练集人数,73用于训练,其余用于测试
        'pid_shuffle': False, # 是否对数据集进行随机划分,如果为False,则直接选取1-74
    },
    "model": {
        'hidden_dim': 256,  # 最后一层全连接层的隐藏层数
        'lr': 1e-4,  # 学习率
        'hard_or_full_trip': 'full',  # 损失函数
        'batch_size': (8, 16),  # 批次p*k = 8*16,
        'restore_iter': 0,  # 第几步开始训练
        'total_iter': 80000,  # 训练次数
        'margin': 0.2,  # 损失函数的margin参数
        'num_workers': 3,  # 线程数
        'frame_num': 30,  # 每个批次的帧数
        'model_name': 'GaitSet',
    },
}

2、test.py运行

运行test.py会出现以下错误:
ValueError: Object arrays cannot be loaded when allow_pickle=False

报错原因:自Numpy 1.16.3版本发行之后,函数 numpy.load() 和 numpy.lib.format.read_array() 采用allow_pickle关键字,默认为False

解决方法:降级Numpy 或者在numpy.load()参数中加一个allow_pickle=True:
以下是第二种解决方法:文件更改位置model/utils/data_loader.py第42行:

pid_list = np.load(pid_fname)

改为:

pid_list = np.load(pid_fname, allow_pickle=True)

以下是test.py运行结果:

在这里插入图片描述

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
Casia-IVS数据集是一个常用于视觉监控系统的数据集,其包含了用于视频监控场景的多个视觉属性,如行人行为、面部表情等信息。下载这个数据集可以帮助研究人员和开发者在视觉监控领域进行算法研究和系统开发。 要下载Casia-IVS数据集,首先需要找到数据集的来源和下载渠道。一般来说,可以通过搜索引擎或者相关技术论坛找到数据集的下载链接。此外,还可以直接访问Casia-IVS数据集的官方网站,通常会有详细的数据集说明和下载链接。 在下载数据集之前,需要注意一些问题。首先,确认数据集是否适合自己的研究目标,是否包含所需的视觉属性和标注信息。其次,需要查看数据集的许可协议,确保能够合法使用数据集并遵守可能的使用限制。 下载数据集时,一般会提供一个下载链接或者压缩包。点击链接或下载压缩包后,需要等待下载过程完成。下载时间根据数据集的大小和网络连接速度而定。下载完毕后,可以使用相应的解压工具将数据集解压到指定的文件夹。 下载完成后,可以开始使用Casia-IVS数据集进行研究或开发工作。首先,可以查看数据集的说明文档,了解数据集的组织结构、文件格式以及标注信息的含义。然后,可以根据具体需求使用相应的数据处理工具对数据集进行预处理和分析。最后,根据自己的研究任务和算法需求,可以开发相应的模型或实现特定任务。 总而言之,下载Casia-IVS数据集需要找到数据源和下载渠道,了解数据集的许可协议,并使用相应的工具将数据集解压到本地。然后,可以开始使用数据集进行研究或开发工作,提升视觉监控系统的算法性能和功能。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值