日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

market1501 data_manager.py

發(fā)布時間:2023/12/3 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 market1501 data_manager.py 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

創(chuàng)建類market1501
類內(nèi)公共屬性: dataset_dir = ‘market1501’
類的初始化:data = Market1501(root = ‘G:\data’)
內(nèi)類屬性:market1501地址,訓(xùn)練集,測試集,gallary地址

 def __init__(self,root = 'data', **kwargs):self.dataset_dir = osp.join(root, self.dataset_dir)self.train_dir  = osp.join(self.dataset_dir, 'bounding_box_train')self.query_dir = osp.join(self.dataset_dir, 'query')self.gallery_dir = osp.join(self.dataset_dir, 'bounding_box_test')

實例化之后查看一下相應(yīng)的train,test,gallary是否存在,如果不存在則提示

self._check_before_run()

重點是類方法_process_dir,傳入裝著圖片的文件夾地址,和一個標(biāo)志位relabel,為什么需要這個標(biāo)志位呢。(就相當(dāng)于一個開關(guān),如果我們使用訓(xùn)練集數(shù)據(jù)時,則打開這個開關(guān)讓算出來label,如果測試)
首先讀取全部的問價路徑并且存儲到img_paths列表,使用一個set()容器用來裝.這樣做的好處是利用集合這種數(shù)據(jù)結(jié)構(gòu)完成元素的自動去重,自動化得到有多個類別。
下一步循環(huán)完成提取,最后得到一個有著所有種類標(biāo)簽的集合比如(cat,dog,frog,…)
下一步,種類名稱和他所對應(yīng)的標(biāo)簽

pid2label = {pid:label for label, pid in enumerate(pid_container)}

得到一個字典pidlabel,鍵為類別名稱(cat…),對應(yīng)的鍵值為(他的標(biāo)簽)
然后我們創(chuàng)建dataset列表

# -*- encoding: utf-8 -*-
"""
@File    : data_manager.py
@Time    : 2021-05-07 11:25
@Author  : XD
@Email   : gudianpai@qq.com
@Software: PyCharm
"""
import os
import os.path as osp
import refrom utils import mkdir_if_missing, write_json , read_jsonfrom IPython import embedimport globclass Market1501(object):"""Market1501Reference:Zheng et al. Scalable Person Re-identification: A Benchmark. ICCV 2015.URL: http://www.liangzheng.org/Project/project_reid.htmlDataset statistics:# identities: 1501 (+1 for background)# images: 12936 (train) + 3368 (query) + 15913 (gallery)"""dataset_dir = 'market1501'def __init__(self,root = 'data', **kwargs):self.dataset_dir = osp.join(root, self.dataset_dir)self.train_dir  = osp.join(self.dataset_dir, 'bounding_box_train')self.query_dir = osp.join(self.dataset_dir, 'query')self.gallery_dir = osp.join(self.dataset_dir, 'bounding_box_test')self._check_before_run()#data_dir, ID, CAMID ,NUMtrain, num_train_pids, num_train_imgs = self._process_dir(self.train_dir)query, num_query_pids, num_query_imgs = self._process_dir(self.query_dir, relabel=False)gallery, num_gallery_pids, num_gallery_imgs = self._process_dir(self.gallery_dir, relabel=False)num_total_pids = num_train_pids + num_query_pidsnum_total_imgs = num_train_imgs + num_query_imgs + num_gallery_imgsprint("=> Market1501 loaded")print("Dataset statistics:")print("  ------------------------------")print("  subset   | # ids | # images")print("  ------------------------------")print("  train    | {:5d} | {:8d}".format(num_train_pids, num_train_imgs))print("  query    | {:5d} | {:8d}".format(num_query_pids, num_query_imgs))print("  gallery  | {:5d} | {:8d}".format(num_gallery_pids, num_gallery_imgs))print("  ------------------------------")print("  total    | {:5d} | {:8d}".format(num_total_pids, num_total_imgs))print("  ------------------------------")self.train = trainself.query = queryself.gallery = galleryself.num_train_pids = num_train_pidsself.num_query_pids = num_query_pidsself.num_gallery_pids = num_gallery_pidsdef _check_before_run(self):"""Check if all files are available before going deeper"""if not osp.exists(self.dataset_dir):raise RuntimeError("{} is not available".format(self.dataset_dir))if not osp.exists(self.train_dir):raise RuntimeError("{} is not available".format(self.train_dir))if not osp.exists(self.query_dir):raise RuntimeError("{} is not available".format(self.query_dir))if not osp.exists(self.gallery_dir):raise RuntimeError("{} is not available".format(self.gallery_dir))def _process_dir(self, dir_path, relabel = False):img_paths = glob.glob(osp.join(dir_path, '*.jpg'))pattern = re.compile(r'([-\d]+)_c(\d)')pid_container = set()for img_path in img_paths:pid, _ = map(int, pattern.search(img_path).groups())if pid == -1: continuepid_container.add(pid)pid2label = {pid:label for label, pid in enumerate(pid_container)}dataset = []for img_path in img_paths:pid, camid = map(int, pattern.search(img_path).groups())if pid == -1: continueassert 0 <= pid <= 1501assert 1 <= camid <= 6camid += -1if relabel:pid = pid2label[pid]dataset.append((img_path, pid ,camid))num_pids = len(pid_container)num_imgs = len(img_paths)return dataset, num_pids ,num_imgsif __name__ == '__main__':data = Market1501(root = 'G:\data')
D:\ANACONDA\envs\pytorch_gpu\python.exe G:/圖像檢索文章/深度哈希/度量學(xué)習(xí)/proj_Reid/util/data_manager.py
=> Market1501 loaded
Dataset statistics:------------------------------subset   | # ids | # images------------------------------train    |   751 |    12936query    |   750 |     3368gallery  |   751 |    19732------------------------------total    |  1501 |    36036------------------------------Process finished with exit code 0

總結(jié)

以上是生活随笔為你收集整理的market1501 data_manager.py的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。