簡體   English   中英

使用子文件夾中的圖像訓練 CNN 模型(Train、Val、Test)

[英]Train CNN model with images in sub-folders (Train, Val, Test)

我正在開發一個卷積神經網絡 (CNN) 模型來預測患者是否屬於第 1、2 或 3 類。我在 TensorFlow 之上使用 Keras。

我有一個 145 個神經心理學科目數據集,分為三類(1=正常,2=……,3=認知障礙)。 在每個患者的數據集中,我在每個 MRI 文件夾中同時拍攝了 90 組 MRI 掃描圖像,總數據集的摘要為 145,總數據集內是每個具有 90 個 MRI 圖像的患者的子文件夾。

我學會了如何處理基本的“Cat-Dog-CNN-Classifier”,這很容易,因為我將所有的貓和狗圖像放在一個文件夾中來訓練網絡,這不是我的情況。 但是我如何解決我的神經心理學科目數據集中的問題,並在訓練后一次使用每個科目的所有圖像進行預測?

我查過有人問過類似的問題,但答案不清楚,申請后也沒有用。 訓練具有多個文件夾和子文件夾的 CNN 模型

謝謝,請推薦一些我可以使用的算法。

如果您確定要一次從一個主題的所有圖像中學習,您的輸入形狀需要包含圖像數量作為維度,如下所示:

(num_of_images, x_pix, y_pix, 通道)

例如,如果您將掃描圖像縮小為 256*256 RGB 圖像,那么您的形狀將是:(90,256,256,3)

這是一個相當大的處理輸入,我會使用像 (10,256,256,3) 這樣的掃描子集將它們分成更小的組

您很可能無法將所有圖像預處理到內存中,要解決此問題,您應該使用生成器作為輸入,試試這個模板:

from tensorflow.keras.utils import Sequence
import numpy as np
class Custom_Generator(Sequence):

    #initialise generator
    def __init__(self, file_sets, label, batch_size) :
        self.file_sets = file_sets
        self.label = label
        self.batch_size = batch_size
    
    #returns number of data batches this generator will return
    def __len__(self) :
        return (np.ceil(len(self.file_sets) / float(self.batch_size))).astype(np.int)
  
    #returns a single batch 
    def __getitem__(self, idx) :

        #do all the operations you need to load and pre-process your data here

        return x, y

為您的訓練和驗證集制作一個生成器,並在您調用 model.fit() 時使用它

或者查看https://www.tensorflow.org/api_docs/python/tf/data/Dataset

此處使用https://www.tensorflow.org/tutorials/images/segmentation

對於模型,它從一個簡單的 CNN 開始,就像您在教程中看到的那樣,對您的預處理管道進行排序,然后您就可以看到您的模型得分了。 如果您仍然需要改進,您可以嘗試以下之一: https : //keras.io/api/applications/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM