caffe版本Faster-RCNN:py-faster-rcnn-master/lib/datasets/factory.py ->用于集成程序默认提供的数据集

分析:

这个代码分两个部分:

1)首先往__sets()字典的key中注入名字,往对应的val中注入对应的初始化函数。下次只要在__sets()字典中输入key的名字就可以执行对应的初始化函数。

__sets()的具体情况如下:

caffe版本Faster-RCNN:py-faster-rcnn-master/lib/datasets/factory.py ->用于集成程序默认提供的数据集_第1张图片

2)get_imdb(name)    用于配套__sets()的初始化,输入__sets()中存在key,调用他对应的val进行初始化

       list_imdbs()           用于配套__sets(),他可以取出__sets()中拥有的key值。
 

 

主要代码:

# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------

"""Factory method for easily getting imdbs by name."""

__sets = {}

from datasets.pascal_voc import pascal_voc
from datasets.coco import coco
import numpy as np

# Set up voc__ using selective search "fast" mode
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_
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_
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))
#__sets[name]()其中name包含:voc__,coco_2014_和coco_2015_这几个名字
def get_imdb(name):
    """Get an imdb (image database) by name."""
    if name not in __sets:
        raise KeyError('Unknown dataset: {}'.format(name))
    return __sets[name]()

def list_imdbs():
    """List all registered imdbs."""
    return __sets.keys()

 

你可能感兴趣的:(caffe版本Faster-RCNN:py-faster-rcnn-master/lib/datasets/factory.py ->用于集成程序默认提供的数据集)