본문 바로가기
🖊️Data Analysis/📌 DL)X-ray 사진을 이용한 폐렴 진단

[Python] X-ray 사진을 분석한 폐렴 진단

by 빛나고요 2021. 7. 13.
BIG

Study. X-ray 사진을 분석한 폐렴 진단

[코드 분석과 흐름]

 

1. 사전 지식 
  • 폐 속에 세균이나 바이러스로 인해 고름, 혈액 등이 차 있으면 x-ray 투과율이 떨어지며, 이로 인해 구름 같은 모양의 음영이 관찰된다면 '폐렴'이라고 진단할 수 있다.

 

2. 사전 설정
  • 필요한 라이브러리를 불러온다.
  • 사용할 데이터 파일을 불러와서 넣어준다.
# 학습할 정상인과 페렴환자 데이터와 테스트할 정상인과 폐렴환자 데이터 총 4개를 불러온다.
for file in train_file_0:
    img_cropper(file, path+ "/train/NORMAL/", "./data_pre/train/NORMAL/")
for file in train_file_1:
    img_cropper(file, path+ "/train/PNEUMONIA/", "./data_pre/train/PNEUMONIA/")
for file in test_file_0:
    img_cropper(file, path+ "/test/NORMAL/", "./data_pre/test/NORMAL/")
for file in test_file_1:
    img_cropper(file, path+ "/test/PNEUMONIA/", "./data_pre/test/PNEUMONIA/")

 

3. 데이터 전처리
  • 사용할 데이터 파일을 훈련용과 테스트용으로 나눈다.
  • 학습할 정상인 데이터, 폐렴 환자 데이터와 테스트할 정상인 데이터, 폐렴 환자 데이터 총 4개로 분류한다.
path= "./data_pre"

train_file_0= glob.glob(path+ "/train/NORMAL")
train_file_1= glob.glob(path+ "/train/PNEUMONIA")
test_file_0= glob.glob(path+ "/test/NORMAL")
test_file_1= glob.glob(path+ "/test/PNEUMONIA")
  • opencv를 이용하여 X-ray 상에서 필요한 영역만 제외하고 나머지는 잘라서 조절해준다.
  • IMREAD_GRAYSCALE :  해당 원본 이미지가 컬러 이미지 이더라도 Gray 색상으로 객체를 반환한다.
X_full = 0
check=False 

for file in train_file_0:
    img_in = cv2.imread(path+ "/train/NORMAL/"+ file, cv2.IMREAD_GRAYSCALE) #IMREAD_GRAYSCALE : 해당 원본 이미지가 RGB 컬러 이미지이지만 Gray 색상으로 해석하여 이미지 객체를 반환한다.
    img_round= img_in/255  # 사진 픽셀값 255를 나눠서 0과 1사이의 값으로 맞춘다. 
    img_resh= img_round.reshape((224, 224, 1)) # 이미지 크기를 224X224로 맞춘다.
    img= img_resh.reshape((1, )+ img_resh.shape) # img에 새로 지정한 이미지를 저장한다.
    
    if(check== False):
        X_full= img
        check= True
    else:
        X_full= np.vstack((X_full, img))  # 배열을 세로로 결합한다.

for file in train_file_1:
    img_in= cv2.imread(path+ "/train/PNEUMONIA/"+ file, cv2.IMREAD_GRAYSCALE) #imread: 여러 이미지가 포함된 파일에서 하나 또는 여러개의 지정된 이미지를 읽는다.
    img_round= img_in/255  # 사진 픽셀값 255를 나눠서 0과 1사이의 값으로 맞춘다. 
    img_resh= img_round.reshape((224, 224, 1)) # 이미지 크기를 224X224로 맞춘다.
    img= img_resh.reshape((1, )+ img_resh.shape)  # img에 새로 지정한 이미지를 저장한다.
    X_full= np.vstack((X_full, img)) # 배열을 세로로 결합한다.
  • 병합할 데이터는 병합한다.
  • shuffle() 을 이용해서 random_state=42를 만들어준다.

그 이후부터는 에러가 발생해서 진행이 불가능했다.

에러를 해결하고 이어서 올리도록 하겠다.

 

============================================================================

 

음 결국 이 코드는 에러를 해결하지 못하고 다시 다 갈아 엎었는데 또 버전 문제로 에러가 발생해서 새로운 코드를 찾아본다고 싹 다 날려버렸다..😃

다른 코드를 가지고 다시 찾아오겠다.

댓글