인턴일지🥕 이미지 전처ring..ring..💍..
이미지를 여전히 변환하고 있다.
10만개가 넘으니까 진짜 오래걸린다 예상시간 84시간 제정신인가요 휴먼?으겔겔..
일단 일부를 돌려봐야할 것 같은데.. 무튼 전처리 쪽을 하고있다 요즘
여러모로 생각해 보았을 때 사용하기로 한 column 값은
['Diastolic blood pressure','Heart Rate','Mean blood pressure','Oxygen saturation','Respiratory rate','Systolic blood pressure']
이렇게 6가지 이다. csv파일을 만들때는 위의 6개 + time을 만들었는데 time은 필요없을 것 같다. 애초에 시간에 따른 환자의 수치 변이가 더 중요한 요소일 것이다.
그래서 각 pid, eid의 column 별 이미지를 만들어서 pid_eid 하나당 6개의 이미지를 input으로 처리해야한다.
6개의 이미지를 하나의 input 으로 어떻게 받지..? 🧐 => 6개의 채널을 이용하기로 했다❗️
말로는 굉장히 간단해 보이는데 알고보니 나는 이전 과제에서 keras를 주로 이용했고 이미지 자체를 이용하지 않고 시계열을 전처리를 거쳐 사용했기 때문에 이미지 전처리 부분에서 많이 헤맸던 것 같다. 이미지를 통으로 넣는다는게 불가능 하다는 건 알고 있었지만 pixel을 RGB로 킵할지 흑백을 할지 등등 고려해야할 점이 훨씬 많았다.
일단은 그래서 cv2로 읽고 resize를 했씀다.
과정을 단순하게 정리해보면
1-1. test_listfile에서 {pid}_episode{eid}_timeseries.csv , label 추출
1-2. {pid}_episode{eid}_timeseries.csv -> {pid}_episode{eid} 로 변환 / label int로 변환
2. {pid}_episode{eid}+ 각 column별 이미지 변환해서 dstack으로 합치기
3. 각 pid-eid에 대해 위 과정을 반복 -> 저장
#필요 라이브러리 import import csv import os import cv2 import numpy as np from tqdm import tqdm #이미지 전처리 함수 def read_img_csv(csv_filepath, imgpath,savepath): Images=[] Labels=[] #지정한 factor 리스트로 선언 col=['Diastolic blood pressure','Heart Rate','Mean blood pressure','Oxygen saturation','Respiratory rate','Systolic blood pressure'] f=open(csv_filepath) csv_list=[] rdf=csv.reader(f) #헤더 스킵 next(rdf) for line in rdf: line[0]=line[0].replace('timeseries.csv','') Labels.append(int(line[1])) csv_list.append(line) f.close() #train/test listfile 읽어서 pid_eid 추출 csv_list=sorted(csv_list) for i in tqdm(csv_list): #pid_eid=j j=i[0] img=[] #j의 각 요소를 변환한 이미지를 불러옴 for k in col: try: #print(imgpath+j+k+'.jpeg') #이미지 읽고 resize image=cv2.imread(imgpath+j+k+'.jpeg',0).astype(np.float32) image=cv2.resize(image,(48,48)) # image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # print(image.shape) # image = tf.image.decode_jpeg(tf.read_file(image),channels=1) #한번에 합치기 위해서 배열에 담아둠 img.append(image) #이미지가 비어있는 경우 except: #0으로 채워줌 - 모든 pid_eid의 Input (48,48,0)으로 맞추기 위함 image=np.zeros((48,48)) img.append(image) print('filled with 0: '+ imgpath+j+k) #6가지 요소의 이미지 합치기 new=np.dstack((img[0],img[1],img[2],img[3],img[4],img[5])) Images.append(new) #전체 결과를 파일로 저장 np.savez(savepath+'testdata_v1',x=Images,y=Labels) return Images,Labels
인턴에서 tqdm을 배운건 정말 두고두고 잘 쓸 것 같다.
48시간이어서 이미지 크기를
이미지 처리가 정-말 오래 걸리지만 이걸 어떻게 빨리 끝내야 돌려 볼텐데 🥲
일단 이 부분을 가지고 cnn 넣어보기를 해야겠다 !