Faster RCNN 库如何加载训练数据集进行训练?
How Faster RCNN library load training dataset for training?
我使用 Faster RCNN library for Deep Learning and here is a discussion 如何训练自己的数据集。那比我先一步。
对我来说,我想了解如何设置训练数据集以及如何加载训练数据集?
看代码的时候看到了这行代码
imdb = get_imdb(imdb_name)
从 train_faster_rcnn_alt_opt.py
调用 factory.py inside datasets folder
。
factory.py 有
for year in ['2007', '2012']:
for split in ['train', 'val', 'trainval', 'test']:
name = 'voc_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: pascal_voc(split, year))
# Set up coco_2014_<split>
for year in ['2014']:
for split in ['train', 'val', 'minival', 'valminusminival']:
name = 'coco_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: coco(split, year))
# Set up coco_2015_<split>
for year in ['2015']:
for split in ['test', 'test-dev']:
name = 'coco_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: coco(split, year))
def get_imdb(name):
"""Get an imdb (image database) by name."""
if not __sets.has_key(name):
raise KeyError('Unknown dataset: {}'.format(name))
return __sets[name]()
def list_imdbs():
"""List all registered imdbs."""
return __sets.keys()
我想知道这个 imdb 名称 voc_2007_trainval
的训练数据是如何加载用于训练的?
编辑:
当我打印 __sets[name]() inside def get_imdb(name):
时,我看到以下内容。
p __sets[name]()
<datasets.pascal_voc.pascal_voc object at 0x7fc937383ed0>
这是什么意思?
现在我明白了。
lib/datasets/factory.py 有
def get_imdb(name):
"""Get an imdb (image database) by name."""
if not __sets.has_key(name):
raise KeyError('Unknown dataset: {}'.format(name))
return __sets[name]()
__sets[姓名] 致电
for year in ['2007', '2012']:
for split in ['train', 'val', 'trainval', 'test']:
name = 'voc_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: pascal_voc(split, year))
由于我们在训练命令中设置了--imdb voc_2007_trainval
,它的作用是程序可以将trainval文件中规定的图像加载到data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt
文件中。
如果我们设置 --imdb voc_2007_train
则将使用 train.txt
。所有图像都在 JPEGImages 文件夹中,注释在 Annotations 文件夹中。
我使用 Faster RCNN library for Deep Learning and here is a discussion 如何训练自己的数据集。那比我先一步。
对我来说,我想了解如何设置训练数据集以及如何加载训练数据集?
看代码的时候看到了这行代码
imdb = get_imdb(imdb_name)
从 train_faster_rcnn_alt_opt.py
调用 factory.py inside datasets folder
。
factory.py 有
for year in ['2007', '2012']:
for split in ['train', 'val', 'trainval', 'test']:
name = 'voc_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: pascal_voc(split, year))
# Set up coco_2014_<split>
for year in ['2014']:
for split in ['train', 'val', 'minival', 'valminusminival']:
name = 'coco_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: coco(split, year))
# Set up coco_2015_<split>
for year in ['2015']:
for split in ['test', 'test-dev']:
name = 'coco_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: coco(split, year))
def get_imdb(name):
"""Get an imdb (image database) by name."""
if not __sets.has_key(name):
raise KeyError('Unknown dataset: {}'.format(name))
return __sets[name]()
def list_imdbs():
"""List all registered imdbs."""
return __sets.keys()
我想知道这个 imdb 名称 voc_2007_trainval
的训练数据是如何加载用于训练的?
编辑:
当我打印 __sets[name]() inside def get_imdb(name):
时,我看到以下内容。
p __sets[name]()
<datasets.pascal_voc.pascal_voc object at 0x7fc937383ed0>
这是什么意思?
现在我明白了。 lib/datasets/factory.py 有
def get_imdb(name):
"""Get an imdb (image database) by name."""
if not __sets.has_key(name):
raise KeyError('Unknown dataset: {}'.format(name))
return __sets[name]()
__sets[姓名] 致电
for year in ['2007', '2012']:
for split in ['train', 'val', 'trainval', 'test']:
name = 'voc_{}_{}'.format(year, split)
__sets[name] = (lambda split=split, year=year: pascal_voc(split, year))
由于我们在训练命令中设置了--imdb voc_2007_trainval
,它的作用是程序可以将trainval文件中规定的图像加载到data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt
文件中。
如果我们设置 --imdb voc_2007_train
则将使用 train.txt
。所有图像都在 JPEGImages 文件夹中,注释在 Annotations 文件夹中。