2019年4月19日 星期五

使用Keras卷積神經網路辨別肺部醫學影像(二)


本例將辨識肺部X光照片所屬的性別,會利用一個資料檔(.csv)和十二個包含影像檔(.png)的資料夾。


使用Excel開啟附屬的csv檔,查看各張影像的訊息。從資料中可以取出圖片的檔名,疾病、年齡、性別等資料。


從影像資料夾中,可找到資料表中各個影像檔的檔名。

首先,要將資料檔進行分類,先建立兩個空的資料夾,命名為
「image_F」(女性)「image_M」(男性)


接著建立image_M.py檔,將男性影像歸類到指定資料夾。

程式碼及註解如下:

import csv
import os
import glob
from shutil import copyfile
# 開啟 CSV 檔案
with open('Data_Entry_2017.csv', newline='') as csvfile:
    # 讀取 CSV 檔案內容
    rows = csv.DictReader(csvfile)
    #計數器
    count=0
    # 以迴圈輸出每一列
    for row in rows:
        if row['Patient Gender']=='M':#如果性別欄位的值是M
            src='images/'+row['Image Index']#取得影像路徑
            dst='image_M/'+row['Image Index']#目標影像路徑
            if  os.path.exists(src):#如果檔案存在
                    copyfile(src, dst)#將影像複製到目標資料夾   
                    count=count+1#計錄目前的進度
                    if count%100==0:#顯示進度
                        print(count)

接著執行程式,過程中會顯示進度。



接著複製程式碼到image_F.py檔。


注意反白處,要將F更改為M:

import csv
import os
import glob
from shutil import copyfile
# 開啟 CSV 檔案
with open('Data_Entry_2017.csv', newline='') as csvfile:
    # 讀取 CSV 檔案內容
    rows = csv.DictReader(csvfile)
    #計數器
    count=0
    # 以迴圈輸出每一列
    for row in rows:
        if row['Patient Gender']=='F':#如果性別欄位的值是M
            src='images/'+row['Image Index']#取得影像路徑
            dst='image_F/'+row['Image Index']#目標影像路徑
            if  os.path.exists(src):#如果檔案存在
                    copyfile(src, dst)#將影像複製到目標資料夾   
                    count=count+1#計錄目前的進度
                    if count%100==0:#顯示進度
                        print(count)

接著執行後,得到了兩個分別裝著男性肺部影像與女性肺部影像的資料夾。
下一回將示範如何將數千個影像檔打包為一個資料檔。
下一章「使用Keras卷積神經網路辨別肺部醫學影像(三)」

沒有留言:

張貼留言

有興趣或有疑問的歡迎提問與交流喔!!!