[英]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.