zoukankan      html  css  js  c++  java
  • 5.读取标签文本,制作出标签字典以及图片路径,并且构造对应的人类别标签

    第一步: 使用.read().strip().split(' ') 将标签进行拆分

    第二步:对路径进行拆分,分成文件夹名字和路径名

    第三步:构造字典,将文件夹名做为key,图片的路径作为value,如果图片路径存在就进行添加

    第四步:使用class构造出data_dir,list_file, 及每一个文件夹对应一个类别

    第五步:循环train_set, 读取其中的属性list_file,构造出image_list 和 label_list

    import os
    
    
    def dataset_from_list(data_dir, list_file):
        # 第一步:使用.read() 读取文件,使用strip()去除两边的空格, split('
    ')根据换行符进行切分
        lines = open(list_file, 'r').read().strip().split('
    ')
    
        from os import path
        d = path.dirname(__file__) # 获得当前文件夹的名字
        path = os.path.join(d, data_dir) # 构造出图片的路径
    
        lines_dict = {}
        for line in lines: # 循环每一张图片
            image_path = line.split(' ')[0] # 获得图片的路径
            key, picture_name = image_path.split('\') # 进行路径的拆分,获得标签的key
            picture_name = os.path.join(path, image_path) # 将图片路径与image_path结合获得单张图片的路径
            if key not in lines_dict: # 如果字典的键不在,就构造出line_dict 
                lines_dict[key] = []
            else:
                if os.path.exists(picture_name): # 如果图片的路径存在,就将图片的路径添加在字典中
                    lines_dict[key].append(picture_name)
        keys = lines_dict.keys()
        dataset = [] 
        # 使用类构造出key,和图片的list_file
        for key in keys:
            print(key)
            print(lines_dict[key])
            dataset.append(Dict_image(key, lines_dict[key]))
    
        return dataset
    
    class Dict_image():
    
        def __init__(self, data_dir, list_file):
            self.data_dir = data_dir
            self.list_file = list_file
    
        def p(self):
            print('1')
    
    # 将读入的列表的class的属性提取,构造出image_list 和 label_list 
    def get_image_paths_and_labels(train_set):
    
        image_list = []
        label_list = []
        for i in range(len(train_set)):
            image_list += train_set[i].list_file
            label_list += [i] * len(train_set[i].list_file)
        return image_list, label_list
    data_dir = 'casia_maxpy_mtcnnalign_182_160'
    list_file = 'cleaned_list.txt'
    train_set = dataset_from_list(data_dir, list_file)
    image_list, label_list = get_image_paths_and_labels(train_set)
  • 相关阅读:
    vmware vSphere client中,选择文件->部署OVF模板,报错处理方法
    [POJ 1521]--Entropy(哈夫曼树)
    [HDU 1016]--Prime Ring Problem(回溯)
    [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析
    平面最近点对问题(分治)
    [GDUT 决赛]--GCD,LCM——我是好人(数论)
    [HDU 1428]--漫步校园(记忆化搜索)
    [Swust OJ 643]--行列式的计算(上三角行列式变换)
    [Swust OJ 491]--分数的位置(简单版)
    [Swust OJ 465]--吴奶奶买鱼(0-1背包+dfs)
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/11075968.html
Copyright © 2011-2022 走看看