def _construct_imdb(self, cfg): """Constructs the imdb.""" img_dir = self.get_imagedir() assert os.path.exists(img_dir), "{} dir not found".format(img_dir) anno = self.get_anno() # Map class ids to contiguous ids self._class_ids = sorted(list(set(anno.values()))) self._class_id_cont_id = {v: i for i, v in enumerate(self._class_ids)} # Construct the image db self._imdb = [] for img_name, cls_id in anno.items(): cont_id = self._class_id_cont_id[cls_id] im_path = os.path.join(img_dir, img_name) self._imdb.append({"im_path": im_path, "class": cont_id}) logger.info("Number of images: {}".format(len(self._imdb))) logger.info("Number of classes: {}".format(len(self._class_ids)))
时间: 2023-06-18 15:05:02 浏览: 55
这段代码是一个私有方法 `_construct_imdb()`,其目的是构建一个 imdb(image database)数据库对象,用于存储图像路径和类别信息。
具体来说,该方法首先获取图像目录路径和标注信息,然后使用 `anno.values()` 得到所有类别的 id,去重、排序并存储在 `_class_ids` 中。接着,使用 `_class_id_cont_id` 字典将每个类别 id 映射到连续的 id(从 0 开始),以便后续处理。最后,遍历所有标注信息,将图像路径和对应的连续类别 id 存储在 `_imdb` 列表中。
该方法最后输出日志信息,包括图像和类别数量。
相关问题
class JSONDataset(torch.utils.data.Dataset): def __init__(self, cfg, split): assert split in { "train", "val", "test", }, "Split '{}' not supported for {} dataset".format( split, cfg.DATA.NAME) logger.info("Constructing {} dataset {}...".format( cfg.DATA.NAME, split)) self.cfg = cfg self._split = split self.name = cfg.DATA.NAME self.data_dir = cfg.DATA.DATAPATH self.data_percentage = cfg.DATA.PERCENTAGE self._construct_imdb(cfg) self.transform = get_transforms(split, cfg.DATA.CROPSIZE)
这段代码定义了一个名为JSONDataset的数据集类,它继承了PyTorch中的Dataset类,并覆盖了其__init__和__len__方法。在__init__方法中,它接收一个cfg和split参数,其中cfg包含了数据集的相关配置信息,split则表示数据集的划分方式(训练集、验证集或测试集)。该方法首先检查split参数是否合法,然后设置了一些类属性,如数据集的名称、数据集路径、数据集百分比等。接着调用了_construct_imdb方法来读取和处理数据集。最后,它调用了get_transforms方法来获取数据增强的方法,并将其保存在类属性transform中。
class FeatureExtraction_Rolled: def __init__(self, patch_types=None, des_model_dirs=None, minu_model_dir=None): self.des_models = None self.patch_types = patch_types self.minu_model = None self.minu_model_dir = minu_model_dir self.des_model_dirs = des_model_dirs print("Loading models, this may take some time...") if self.minu_model_dir is not None: print("Loading minutiae model: " + minu_model_dir) self.minu_model = (minutiae_AEC.ImportGraph(minu_model_dir)) self.dict, self.spacing, self.dict_all, self.dict_ori, self.dict_spacing = get_maps.construct_dictionary( ori_num=24) patchSize = 160 oriNum = 64 if des_model_dirs is not None and len(des_model_dirs) > 0: self.patchIndexV = descriptor.get_patch_index(patchSize, patchSize, oriNum, isMinu=1) if self.des_model_dirs is not None: self.des_models = [] for i, model_dir in enumerate(des_model_dirs): print("Loading descriptor model (" + str(i+1) + " of " + str(len(des_model_dirs)) + "): " + model_dir) self.des_models.append(descriptor.ImportGraph(model_dir, input_name="inputs:0", output_name='embedding:0')) self.patch_size = 96
这段代码是一个名为"FeatureExtraction_Rolled"的类的初始化方法。它接受两个参数:patch_types和des_model_dirs,这些参数可以为None。在初始化过程中,它加载了一些模型,并设置了一些属性。
首先,它初始化了一个名为"self.des_models"的属性,值为None。它还初始化了一个名为"self.patch_types"的属性,值为传入的patch_types参数。接下来,它初始化了一个名为"self.minu_model"的属性,值为None,并且初始化了一个名为"self.minu_model_dir"的属性,值为传入的minu_model_dir参数。
然后,它打印出一条消息:"Loading models, this may take some time..."。如果minu_model_dir不为None,则打印出一条消息:"Loading minutiae model: " + minu_model_dir,并且使用minutiae_AEC模块加载了一个模型,将其赋值给self.minu_model属性。
接下来,它使用get_maps模块的construct_dictionary函数构建了一些字典,并将其赋值给self.dict、self.spacing、self.dict_all、self.dict_ori和self.dict_spacing属性。
然后,它设置了两个变量:patchSize为160,oriNum为64。如果des_model_dirs不为None且长度大于0,则使用descriptor模块的get_patch_index函数获取了一个名为self.patchIndexV的变量。
接着,如果des_model_dirs不为None,则初始化了一个名为self.des_models的空列表。***
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)