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

本文详细解析了FastR-CNN中数据集加载的动态机制,通过__sets字典实现对不同年份VOC和COCO数据集的灵活调用,介绍了get_imdb和list_imdbs函数的作用。

分析:

这个代码分两个部分:

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

__sets()的具体情况如下:

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_<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))

# 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))
#__sets[name]()其中name包含:voc_<year>_<split>,coco_2014_<split>和coco_2015_<split>这几个名字
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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值