深度學習中生成.txt文件記錄圖片路徑


在深度學習中

我們首先要准備數據集,尤其時用pytorch進行模型搭建訓練時,需要首先構建dataset,然后封裝為dataloder。

在生成dataset時,我們通過圖片路徑讀取圖片,然后進行一系列圖片變換,生成可用於訓練的dataset,我們需要把圖片路徑保存在一個.txt文件中,

通過讀取.txt文件,將所有圖片路徑保存在一個list 里面,后面再用__getitem__(self, index)方法讀取圖片。

self.files = [line.rstrip() for line in tuple(open(file_list, "r"))]

下面總結一下生成.txt 函數常用的幾個API

因為圖片都存放在文件夾下,所以最常用的就是 os 模塊

1. os.listdir

通過listdir 可以將文件夾下的所有文件名稱放到一個列表里,只要我們遍歷這個列表,並把列表里的元素寫入到txt文件中即可

2. endswith(".jpg")

通過endswith(" ") 可以篩選符合要求的文件,通常我們的圖片文件都是以文件格式結尾的,如.jpg, .jpeg。。。

3. open(filename, ‘w') as f 

通過open(filename, ‘w') as f 可以打開.txt 文件,如果此文件不存在可以創建該文件,后面通過f.write(file_path) 方法將路徑寫入.txt文件中

4. os.path.join()

通過os.path.join() 可以生成相對路徑,

5. os.path.exists()  , os.makedirs()

上面的兩個方法較常用,用於判斷是否存在該路徑,如果不存在,則新建該路徑, 存放文件

 

在 os模塊中還有一個采用遞歸的方式 遍歷文件下下所有文件和目錄的方法(os.walk(rootdir))

函數返回一個可用for 循環遍歷的三元素元組

如下所示文件結構:

采用os.walk()方法遍歷:獲得所以根目錄下的所有文件

同理可以獲得根目錄下的所有子目錄

for root, dirs, files in os.walk("google_tensorflow"):
    for dir in dirs:
        print(root)
        print(os.path.join(root, dir))

 

如果我們想看一下某目錄下總共有多少張圖片,可以采用glob模塊下的glob方法

file_num = glob.glob(pathname=os.path.join(filepath, dirs, "*.jpg"))
    print(len(file_num))

為了檢驗生成的.txt 文件是否涵蓋所有的圖片路徑

我們可以將.txt文件中記錄的路徑數於目錄下的圖片總數對比,如何獲取.txt文件中的記錄的路徑總數呢

以只讀的方式打開該文件,按行讀取f.readlines(),自動返回一個列表,列表每一個元素則是txt文件中的每一行,返回列表的長度即可

with open(r"val.txt", 'r') as f:
  lists = f.readlines()
print(len(lists))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM