Open yubinyes opened 6 years ago
你做的这些改变应该是对的,你调试下数据读入部分,感觉是那部分有问题。
暂时发现了一个问题,在rank_layer_live.py的get_minibatch(self,minibatch_db)函数里,minibatch_db是两幅图像的地址,jobs是得到的两幅3x224x224图像数据的列表,应该是读图失败了,读出来的是一个None,可能是它导致的错误。因为这一步用的是self.workers.map(preprocess,minibatch_db),我看不到具体的处理过程,我想用其他的图像库读取,但是我不清楚你是读的整张图,然后resize成224x224x3,然后转成3x224x224的,还是读取整张图,随机截取224x224的范围,然后再转成3x224x244的。我不太清楚你是怎么得到jobs的,你能告诉我一下吗?
你好,还有个问题想跟你确认下。我下载了waterloo数据集,按照你的matlab脚本生成了损失图像,4种类别,每种类别5个级别。然后按照你的代码generate_rank_txt_live.py运行,修改一下文件夹目录dir_rank。你的样例文本live_test.txt,live_train.txt都是pristine_images是0分,GN1是1分,GN2是2分......,但是按照你的代码generate_rank_txt_live.py生成的分数是相反的,pristine_images是5分,GN1是4分,GN2是3分......,想请教一下,哪种是正确的文本形式。我是在ubuntu16+python2.7.12环境下操作的。
先读取整张图,随机截取224x224的范围,然后再转成3x224x244的。 程序生成的是正确的。
暂时发现了一个问题,在rank_layer_live.py的get_minibatch(self,minibatch_db)函数里,minibatch_db是两幅图像的地址,jobs是得到的两幅3x224x224图像数据的列表,应该是读图失败了,读出来的是一个None,可能是它导致的错误。因为这一步用的是self.workers.map(preprocess,minibatch_db),我看不到具体的处理过程,我想用其他的图像库读取,但是我不清楚你是读的整张图,然后resize成224x224x3,然后转成3x224x224的,还是读取整张图,随机截取224x224的范围,然后再转成3x224x244的。我不太清楚你是怎么得到jobs的,你能告诉我一下吗?
File "/home/xxx/desktop/RankIQA/src/data_layer/rank_layer_live.py", line 97, in forward
blobs = self.get_minibatch(minibatch_db)
File "/home/xxx/desktop/RankIQA/src/data_layer/rank_layer_live.py", line 72, in get_minibatch
jobs =self.workers.map(preprocess,minibatch_db)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 567, in get
raise self._value
IndexError: tuple index out of range
*** Error in `/home/xxx/caffe/build/tools/caffe': double free or corruption (out): 0x000000000160d810 ***
- 问题解决了:就是因为路径的问题,读文件失败;
- 然后直接用batch=48会out of memory,然后batch=32可以训练了
你好,还有个问题想跟你确认下。我下载了waterloo数据集,按照你的matlab脚本生成了损失图像,4种类别,每种类别5个级别。然后按照你的代码generate_rank_txt_live.py运行,修改一下文件夹目录dir_rank。你的样例文本live_test.txt,live_train.txt都是pristine_images是0分,GN1是1分,GN2是2分......,但是按照你的代码generate_rank_txt_live.py生成的分数是相反的,pristine_images是5分,GN1是4分,GN2是3分......,想请教一下,哪种是正确的文本形式。我是在ubuntu16+python2.7.12环境下操作的。
同问
你好:我想按照你的思路重新微调一批图,按照live的代码来做,因为默认的batch_size=48,太大了,我更改./RankIQA/live/train_vgg.prototxt的batch_size为3,然后更改netloss_live.py和rank_layer_live.py的dis=1,batch=1,level=3,已经按照你的格式生成了./data/live_train.txt和./data/live_test.txt,我只用GB损失类型,两个级别GB1、GB2。然后运行 ./src/RankIQA/live/train_vgg.sh,总是在Iteration 0的时候出错“IndexError: tuple index out of range”。不知道你能否指教一下,如何修改这个batch_size才能正常训练。