faster-rcnn代码解析(9)

/home/ubuntu/py-faster-rcnn/lib/datasets//factory.py

# --------------------------------------------------------
# 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_<year>_<split> 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))#lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

# Set up coco_2014_<split>
for year in ['2014']:
    for split in ['train', 'val', 'minival', 'valminusminival']:#split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list),在'train', 'val', 'minival', 'valminusminival'处分别切片
        name = 'coco_{}_{}'.format(year, split)# 例如 Coco_2012_train
        __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.通过名字得到一个imdb(图像数据集)"""
    if not __sets.has_key(name): #_sets是一个字典,字典的key是数据集的名称,字典的value是一个lambda表达式(即一个函数指针)
        raise KeyError('Unknown dataset: {}'.format(name))
    return __sets[name]() #返回imdb数据集,准确的说应该是Pascal voc类数据集,它是imdb类的一个子类

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

猜你喜欢

转载自blog.csdn.net/l_ml_m_lm_m/article/details/81606955