iT邦幫忙

0

小弟是深度學習方面新手

最近想試試圖像辨識但遇到了難題

我想辨認的三種東西分別是lad, lcx, rca

這三個類型的資料夾下分別又有100個資料夾裡面是5張jpg檔

train ->floder
-----lad ->floder
----------1 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------2 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------3 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
-----lcx ->floder
----------1 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------2->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------3->floder
---------------v1 v2 v3 v4 v5 ->jpg

test 和 vaildation 資料夾也是同樣結構

一般的文章或書籍所教之方法的資料結構都是
train ->floder
-----lad ->floder
----------1->jpg
----------2->jpg
----------3->jpg
----------4->jpg
lcx ->floder
----------1->jpg
----------2->jpg
----------3->jpg
----------4->jpg

5張圖片放置在"rcx", "lad", "lcx"資料夾底下的"1", "2", "3", "4", "5" 資料夾

請問各位前備我該用哪種語法讓模型知道訓練的圖片在資料夾下

我用的是python的tensorflow

程式碼如下:

labels = ['lad', 'rca', 'lcx']
def get_data(data_dir):
    data = [] 
    for label in labels: 
        path = os.path.join(data_dir, label)
        class_num = labels.index(label)
        dirs = os.listdir(path)
        for file in dirs:
            pic_dir=os.path.join(path,file)
            for i in os.listdir(pic_dir):
                image_dir=os.path.join(pic_dir,i)
                img1 = cv2.imread(os.path.join(path, image_dir))
                img1 = cv2.cvtColor(img1, cv2.COLOR_RGB2BGR)
                data.append([img1, class_num])
    return np.array(data)
    train = get_data('C:/')
    test = get_data('C:/')
x_train = []
y_train = []
x_val = []
y_val = []

for feature, label in train:
    x_train.append(feature)
    y_train.append(label)
    
for feature, label in test:
    x_val.append(feature)
    y_val.append(label)
        
x_train = np.array(x_train) / 255
x_val = np.array(x_val) / 255
        
x_train.reshape(-1, img_size, img_size, 1)
y_train = np.array(y_train)
        
x_val.reshape(-1, img_size, img_size, 1)
y_val = np.array(y_val)

感謝大家的指教!

每個留言我都會認真看!!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
yaxuan
iT邦新手 5 級 ‧ 2022-01-22 01:01:05

嗨~ 你好
針對你的問題,可以再多說明一些嗎?
例如,你目前的程式碼,或是你目前嘗試的方法(想要用什麼現成function等等)
因為看得有點不是很理解,不知道能從哪邊幫忙 ><"

一般來說,能夠讓「資料」和「標註」有對應到的送進模型都可以
至於要用什麼方式就是看情況和習慣(?)

例如,如果是自定義讀檔方式的話
你可以把「圖片檔案所在的路徑」和該張圖片對應的「標註」
分別用list方式記錄,餵進模型再去讀圖片

希望這樣對你有幫助~
還有疑問的話,可以再提出來討論 :)

看更多先前的回應...收起先前的回應...
Vmos1018 iT邦新手 5 級 ‧ 2022-01-22 18:09:46 檢舉

您好:

感謝您的留言 我已將目前程式碼貼出

我想問的是
我想用資料夾的方式(內含5張照片)
送進模型裡 讓他判斷此資料夾是"lcx", "rca",還是"lad"
哪一個種類

請問這是有辦法實現的嗎?

yaxuan iT邦新手 5 級 ‧ 2022-01-26 23:55:52 檢舉

是可以實現的喔~
只是因為我看到你最後六行,看起來是在做前處理
所以我會建議你 get_data 的輸出是 影像路徑和label
到時候要餵到模型時,再透過路徑讀取檔案,然後做前處理
不過在資料量和檔案不大時,影響程度就不大

yaxuan iT邦新手 5 級 ‧ 2022-01-27 00:07:12 檢舉

另外,既然 label 就是資料夾的名稱,而以你目前的寫法,在 get_data 裡面建立了 影像矩陣和標註的 list,但又在後面透過 for feature, label in train: 那段程式碼來分開,會覺得有點多此一舉

yaxuan iT邦新手 5 級 ‧ 2022-01-27 00:24:29 檢舉

或者您是否方便說明一下,你希望 data 和 label 是以什麼方式輸入給模型,在目前的程式碼中,又是在哪邊遇到困難呢?

【換個角度的解法參考】
以你檔案儲存的方式,假設 label 剛好可以對應到檔案名稱,可以研究一下,透過 glob.glob()(可以參考我之前寫的),分別把 train, val, test 的影像路徑都抓出來,然後再透過資料夾名稱去建立每張影像對應的 label。

Vmos1018 iT邦新手 5 級 ‧ 2022-04-21 11:20:48 檢舉

請問我如果使用glob.glob(),分別把 train, val, test 的影像路徑都抓出來,然後再透過資料夾名稱去建立每張影像對應的label,該用哪種方式餵給模型?

我要留言

立即登入留言