PEDESTRIAN INTENTION PREDICTION: A MULTI-TASK PERSPECTIVE行人意图预测代码复现记录

最近在做行人轨迹预测,但首先想先做一个行人过街意图预测,即穿越or不穿越。找到一篇论文,代码开源,适合我这个菜鸟上手,放链接https://github.com/vita-epfl/bounding-box-prediction

按照它的官方redme一步步来,但是你也知道这个事情不可能这么简单的。我选择使用的是JAAD数据集,官方提供了三种数据集,按需使用。

一、准备数据集

仔细读读,他并没有告诉你这个数据集怎么存放,而且这个数据集的注释是托管在github上,没放在网站上,哎,心累,一点点来吧。

1.到JAAD库中https://github.com/BigJiang123/JAAD ​​​​​​把jaad-data.py复制到这个目录里边,仔细看看,作者已经帮咱们复制了。

./bounding-box-prediction/preprocess/

 2.把JAAD数据集下载下来。(有空放链接)

先放一个JAAD_clips的链接,官网上下的链接:https://pan.baidu.com/s/18eQ6IRrEdJJ0bg5rCFljZw?pwd=62qk 
提取码:62qk 
--来自百度网盘超级会员V3的分享

3.运行split_clips_to_frames.sh这个脚本,把视频转为图像,但是这个脚本在JAAD库里,需要自己复制过来。

但现在我们首先要解决一个问题,官方说执行这个操作至少需要169G,反正我的电脑空间不够用了,我最开始的设想是在移动硬盘上跑整个项目,后来查了下资料发现这样不是很好,于是改为在本地运行代码,在移动硬盘上存放数据集。估计这也是以后得一个常用手段了,至于行不行的,等我跑完这个项目再说。

好了,看代码,6和7行首先就设置了两个路径,一个是下载下来的JAAD_clips文件夹存放地址,一个是用来存放转换后的图像的地址。把这两个地址改为自己的地址就好啦~

ps.使用移动硬盘的话,它一般挂载在media下。

最后,把脚本run起来,biu~开始跑了,电脑wawawa的叫。等吧,趁这个时间摸摸鱼~或者像我一样写写笔记。

其实,在另外一个作者的github上写了JAAD数据集的存放结构,但我现在还有点疑惑的是他的注释是放在哪里的。放上这个作者链接。GitHub - OSU-Haolin/Pedestrian_Crossing_Intention_Prediction: Pedestrian Crossing Intention Prediction with Feature Fusion and Spatio-Temporal Attention.

二、划分数据集

python3 preprocess/jaad_preprocessor.py --data_dir=/path/to/JAAD --train_ratio=0.7 --val_ratio=0.2 --test_ratio=0.1 

运行这个代码划分数据集为train/val/test,官方给的有点小错误,把“data_dir”改为“data_path”

数据集怎么放的到这里也搞清楚了,创建一个文件夹JAAD,里面存放annotations/annotations_appearance/annotations_attributes/annotations_traffic/annotations_vehicle/split_ids 这些都到JAAD官方github上下载。还有上面得到的images。运行代码,最终会得到这样一个结构的处理后的数据集。

三、训练模型

终端输入:

python3 train.py --data_dir=/path/to/JAAD/processed_annotations --dataset=jaad --out_dir=/path/to/output --n_epochs=100 --task='2D_bounding_box-intention' --input=16 --output=16 --stride=16

将里面的路径改为自己的路径就好了,但我还设置了--lr_scheduler为True。其他学习率啥的可以自己根据需要改。训练时会打印各种vc,ade等等,其实训练完毕不用再测试了,两个代码抛出的结果是一样的。

四、测试模型

如果实在要运行的话也行,运行命令python3 test.py --data_dir=/path/to/JAAD/processed_annotations --dataset=jaad --out_dir=/path/to/output --task='2D_bounding_box-intention' 。(官方文档里给得也不太对,还缺一些参数,自己改改)只是还需要改一下代码。

由于在训练时设置了--lr_scheduler,所以保存的文件名是这样的model_0.001_512_scheduler.pkl,直接运行test.py会报错,所以修改一下,在test_2d函数里把上一句改为下一句。

#modelname = 'model_' + file + '.pkl'
    modelname = 'model_' + file+ '_scheduler.pkl'

另外,没有使用3D数据集,但是代码里没有在这里做分支,修改:

-------修改前
# training
    #test_3d(args, net, test_loader)
------以下为修改后的代码
    if not args.is_3D:
        test_2d(args, net, test_loader,)
    else:
        test_3d(args, net, test_loader)

再次运行,输出结果:

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值