Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prepare_2020.py 难以理解 #7

Open
rrjia opened this issue May 19, 2020 · 29 comments
Open

prepare_2020.py 难以理解 #7

rrjia opened this issue May 19, 2020 · 29 comments

Comments

@rrjia
Copy link

rrjia commented May 19, 2020

没有看到从哪里输入AI city 2020的数据开始处理的,全程没有注释,请问是那个参数是输入数据?

@layumi
Copy link
Owner

layumi commented May 19, 2020

你好, 你可以看README 在 https://github.com/layumi/AICIty-reID-2020/tree/master/pytorch
感谢~ 从prepare开始处理数据 只要把下载的数据放在data文件夹下就行

@rrjia
Copy link
Author

rrjia commented May 19, 2020

官方数据有两个:AIC20_ReID和AIC20_ReID_Simulation;其中AIC20_ReID中的图片文件名是没有下划线的,但是我看代码中是对 /data/pytorch2020/2020AICITY 中所有的图片进行split("_")取id,所以没有太明白,是不是现在的数据格式和你们比赛的时候的不同了

@layumi
Copy link
Owner

layumi commented May 19, 2020

抱歉,是我的问题,今年我用的是paddlepaddle 那边处理好的数据。
链接是 https://github.com/PaddlePaddle/Research/tree/master/CV/PaddleReid/process_aicity_data 里面有预处理的东西,用来从xml中抽取 ID camID

@layumi
Copy link
Owner

layumi commented May 19, 2020

@rrjia 如果你还遇到任何数据问题,问就好,真的感谢~~~
另外,处理数据的同学@miraclebiu 也会回答你的问题~~

@rrjia
Copy link
Author

rrjia commented May 25, 2020

File "train_2020.py", line 561, in
copyfile('./train.py', dir_name+'/train.py')

FileNotFoundError: [Errno 2] No such file or directory: './train.py'

在源码中没有发现train.py ,请问这段代码可以注释嘛?

@layumi
Copy link
Owner

layumi commented May 25, 2020

可以。这主要是为了防止多次改代码以后,忘记了设定,所以做的备份。你也可以改成 train_2020.py

感谢

@rrjia
Copy link
Author

rrjia commented May 26, 2020

在test_2020.py 159行处:
image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['gall','query']}
输入应该是gallery和query两个文件夹,但是在prepare_2020.py中却没有生成gallery数据集,但是下面注释掉代码显示将train_real_save_path链接为gallery_large,请问是否将test_2020中的gallery修改为gallery_large,然后prepare_2020.py最后三行注释掉的代码取消注释生成gallery_large数据集就可以了?

@layumi
Copy link
Owner

layumi commented May 27, 2020

嗯,是的。validation时候 我们采用的gallery 是所有real的训练集。

@daiguangzhao
Copy link

在test_2020.py 159行处:
image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['gall','query']}
输入应该是gallery和query两个文件夹,但是在prepare_2020.py中却没有生成gallery数据集,但是下面注释掉代码显示将train_real_save_path链接为gallery_large,请问是否将test_2020中的gallery修改为gallery_large,然后prepare_2020.py最后三行注释掉的代码取消注释生成gallery_large数据集就可以了?

你好,兄弟,我已经按照你的方式去改了,但是在pytest时候报错
test_2020.py:None (test_2020.py)
test_2020.py:59: in
opt = parser.parse_args()
../../../anaconda3/lib/python3.7/argparse.py:1758: in parse_args
self.error(msg % ' '.join(argv))
../../../anaconda3/lib/python3.7/argparse.py:2508: in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
../../../anaconda3/lib/python3.7/argparse.py:2495: in exit
_sys.exit(status)
E SystemExit: 2
collected 0 items / 1 error

@chenxyyy
Copy link

chenxyyy commented Jun 1, 2020

@layumi 郑博士你好,请问一下label.mat在哪里??是算法生成的吗?我并没有找到啊?

@layumi
Copy link
Owner

layumi commented Jun 1, 2020

@chenxyyy 这个label是之前产生的pseudo label 用不到,你可以skip这一部分。

@layumi
Copy link
Owner

layumi commented Jun 1, 2020

@daiguangzhao 这个错有点奇怪。。。是opt = parser.parse_args() ? 这边没有import
么?

@s20163081161
Copy link

@layumi 郑博士你好,我按照你给的paddlepaddle 预处理数据的那个连接进去,里边的2_prepare_syn_trainlist.py文件,有'colorID','typeID','orientation'这三个Item,但是我在train_label_utf8.xml文件中并没有找到这几个Item啊?

@miraclebiu
Copy link
Collaborator

@layumi 郑博士你好,我按照你给的paddlepaddle 预处理数据的那个连接进去,里边的2_prepare_syn_trainlist.py文件,有'colorID','typeID','orientation'这三个Item,但是我在train_label_utf8.xml文件中并没有找到这几个Item啊?

syn使用的和real使用的xml不是同一个xml文件,需要对应数据集读取处理

@rrjia
Copy link
Author

rrjia commented Jun 2, 2020

'colorID','typeID','orientation'这三个Item 只有 AIC20_ReID_Simulation文件夹仿真生成的数据中才有,AIC20_ReID文件夹下数据中没有,对真实数据和生成数据要分别调用1_convert.py ,AIC20_ReID_Simulation文件夹下也有一个train_label.xml,然后在使用2_prepare_syn_trainlist.py处理仿真合成的数据,2_prepare_real_trainlist.py处理AIC20_ReID文件夹下的真实数据

@rrjia
Copy link
Author

rrjia commented Jun 2, 2020

在test_2020.py 159行处:
image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['gall','query']}
输入应该是gallery和query两个文件夹,但是在prepare_2020.py中却没有生成gallery数据集,但是下面注释掉代码显示将train_real_save_path链接为gallery_large,请问是否将test_2020中的gallery修改为gallery_large,然后prepare_2020.py最后三行注释掉的代码取消注释生成gallery_large数据集就可以了?

你好,兄弟,我已经按照你的方式去改了,但是在pytest时候报错
test_2020.py:None (test_2020.py)
test_2020.py:59: in
opt = parser.parse_args()
../../../anaconda3/lib/python3.7/argparse.py:1758: in parse_args
self.error(msg % ' '.join(argv))
../../../anaconda3/lib/python3.7/argparse.py:2508: in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
../../../anaconda3/lib/python3.7/argparse.py:2495: in exit
_sys.exit(status)
E SystemExit: 2
collected 0 items / 1 error

这个问题我没有遇到过,你是不是应该首先train_2020.py

@s20163081161
Copy link

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?

@rrjia
Copy link
Author

rrjia commented Jun 2, 2020

AIC20_ReID文件夹下有个readme.txt

%%
% The AIC20 benchmark is captured by 40 cameras in real-world traffic surveillance environment. %
% A total of 666 vehicles are annotated. 333 vehicles are used for training. The remaining 333 vehicles are for %
% testing. %
% There are 56277 images in total. 18290 images are in the test set, and 36935 images are in the training set. %
%
%

@rrjia
Copy link
Author

rrjia commented Jun 2, 2020

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?

然后2_prepare_syn_trainlist.py 18行有一个d_start = 666,强行将模拟的数据的车辆id从666开始编号,改变了原始的车辆id

@s20163081161
Copy link

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?

然后2_prepare_syn_trainlist.py 18行有一个d_start = 666,强行将模拟的数据的车辆id从666开始编号,改变了原始的车辆id

但是我看到真实数据集好像只有478个,并没有666个??

@miraclebiu
Copy link
Collaborator

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?
然后2_prepare_syn_trainlist.py 18行有一个d_start = 666,强行将模拟的数据的车辆id从666开始编号,改变了原始的车辆id

但是我看到真实数据集好像只有478个,并没有666个??

我们这样做的目的只是为了方便,另外加上query test上的id就是666了,真实集上的478不是连续的,具体的你可以参考https://www.aicitychallenge.org/2020-faqs/

@s20163081161
Copy link

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?
然后2_prepare_syn_trainlist.py 18行有一个d_start = 666,强行将模拟的数据的车辆id从666开始编号,改变了原始的车辆id

但是我看到真实数据集好像只有478个,并没有666个??

我们这样做的目的只是为了方便,另外加上query test上的id就是666了,真实集上的478不是连续的,具体的你可以参考https://www.aicitychallenge.org/2020-faqs/

好的

@daiguangzhao
Copy link

嗯,是的。validation时候 我们采用的gallery 是所有real的训练集。

@daiguangzhao 这个错有点奇怪。。。是opt = parser.parse_args() ? 这边没有import
么?
您好,
Train Model
python train_2020.py --name SE_imbalance_s1_384_p0.5_lr2_mt_d0_b24+v+aug --warm_epoch 5 --droprate 0 --stride 1 --erasing_p 0.5 --autoaug --inputsize 384 --lr 0.02 --use_SE --gpu_ids 0,1,2 --train_virtual --batchsize 24; 中这个是哪个网络name SE_imbalance_s1_384_p0.5_lr2_mt_d0_b24+v+aug,对应论文哪里呀?
此外,我显存是8G的,一天一夜才跑了6个epoch,这正常吗....想哭了

@daiguangzhao
Copy link

@layumi @rrjia 多谢两位。想再请教一下,prepare_2020.py里的这句代码“if int(ID[0])<=666:”,意思是ID小于666的都是真实数据,而大于666的都是生成数据吗?可我看真实数据集和生成数据集的ID都是从1开始的啊?感觉应该不是那样?
然后2_prepare_syn_trainlist.py 18行有一个d_start = 666,强行将模拟的数据的车辆id从666开始编号,改变了原始的车辆id
但是我看到真实数据集好像只有478个,并没有666个??
我们这样做的目的只是为了方便,另外加上query test上的id就是666了,真实集上的478不是连续的,具体的你可以参考https://www.aicitychallenge.org/2020-faqs/

好的
这个意思应该是一共有666车被标注,但是不一定有666个种类的车

@daiguangzhao
Copy link

你好, 你可以看README 在 https://github.com/layumi/AICIty-reID-2020/tree/master/pytorch
感谢~ 从prepare开始处理数据 只要把下载的数据放在data文件夹下就行

您好,这个问题困扰我很久.
在官网下载的真实数据集中有train_label.xml,我们可以利用

你好, 你可以看README 在 https://github.com/layumi/AICIty-reID-2020/tree/master/pytorch
感谢~ 从prepare开始处理数据 只要把下载的数据放在data文件夹下就行

抱歉,是我的问题,今年我用的是paddlepaddle 那边处理好的数据。
链接是 https://github.com/PaddlePaddle/Research/tree/master/CV/PaddleReid/process_aicity_data 里面有预处理的东西,用来从xml中抽取 ID camID

您好,在官网下载的真实数据集有train_lable.xml的文件,我们可以利用Research/CV/PaddleReid/process_aicity_data/的方法去处理train的数据,在您的prepare_2020.py文件的第29-32行中生成的train_real_all应该是真实数据集中所有666辆车包括(The ranges of the training IDs are: 1-95 & 241-478

The ranges of the testing IDs are: 96-240 & 479-666),但是却没有生成.在原数据集中的image_query和image_test并没有被处理成标准形式.您推荐的那个处理数据的网址并没有这部分的内容,麻烦!

@layumi
Copy link
Owner

layumi commented Jun 7, 2020

@daiguangzhao
你好。你说的是测试集image_query和image_test本来就没有label啊。。是比赛要用的。
如果你要验证结果,可以把模型的预测提交到官网(看submit py);
或者你使用我划的validation来验证,可以使用test py

image

@daiguangzhao
Copy link

@daiguangzhao
你好。你说的是测试集image_query和image_test本来就没有label啊。。是比赛要用的。
如果你要验证结果,可以把模型的预测提交到官网(看submit py);
或者你使用我划的validation来验证,可以使用test py

image

不好意思,郑博士,我理解错了!
是不是可以这样理解,官网给的真实数据集中,我们的代码仅仅只是用到了image_trian的36935张图片,而您在prepare_2020中只是对原数据集中image_train进行划分,依次是train_real_all(36395); train; query; gallery_large

@layumi
Copy link
Owner

layumi commented Jun 7, 2020

@daiguangzhao 是的。 train_real_all 是 36395

@s20163081161
Copy link

在test_2020.py 159行处:
image_datasets = {x: datasets.ImageFolder( os.path.join(data_dir,x) ,data_transforms) for x in ['gall','query']}
输入应该是gallery和query两个文件夹,但是在prepare_2020.py中却没有生成gallery数据集,但是下面注释掉代码显示将train_real_save_path链接为gallery_large,请问是否将test_2020中的gallery修改为gallery_large,然后prepare_2020.py最后三行注释掉的代码取消注释生成gallery_large数据集就可以了?

@layumi @rrjia 是不是直接把train_real_save_path路径下的图片拷贝到gallery,而不用取消这三行注释也可以?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants