딥러닝/딥러닝 Baseline
TEST IMAGE Sequence 상속 받아서 예측하기 (CNN Baseline 연계)
Stevelee_HMC
2022. 11. 10. 12:38
제목과 같이 테스트 이미지도 단순 for문을 통해서 image -> tensor 변형이 어려울 때 , sequence 를 사용할 수 있다.
이때 train data에서 사용한 sequence 그대로 쓰면 안되고 약간 변형만 해주면 된다.
(label 내용들만 빼면 된다.)
# TEST 데이터를 불러온다 (당연히 label은 right answer라서 없다)
PATH_TEST = 'test data 경로'
glob(PATH_TEST + "/*/*") # *를 바꿔가며 이미지 경로 .jpg 단위확장자까지 잘들어가는지 확인 후
test = pd.DataFrame([])
test["image_files"] = glob(PATH_TEST + "/*/*")
test_image_path = test["image_files"].values
# TEST 데이터용 Sequence 선언
class test_data_set(Sequence):
def __init__(self , image_filenames , batch_size = BATCH_SIZE , augmentor = None , pre_func = None , shuffle = None):
self.image_filenames = image_filenames
# label 내용 삭제
self.batch_size = BATCH_SIZE
self.augmentor = augmentor
self.pre_func = pre_func
self.shuffle = shuffle
def __len__(self):
return int(np.ceil(len(self.labels)/self.batch_size))
def __getitem__(self, index):
image_name_batch = self.image_filenames[index * self.batch_size : (index+1)* self.batch_size]
image_batch = np.zeros((image_name_batch.shape[0],IMAGE_SIZE , IMAGE_SIZE , 3))
for image_index in range(image_name_batch.shape[0]):
image = cv2.cvtColor(cv2.imread(image_name_batch[image_index]) , cv2.COLOR_BGR2RGB)
image = image/ 255.0
image = cv2.resize(image , (IMAGE_SIZE , IMAGE_SIZE))
if self.augmentor is not None:
image = self.augmentor(image = image)["image"]
if self.pre_func is not None:
image = self.pre_func(image)
image_batch[image_index] = image
return image_batch # return 은 image batch만
def on_epoch_end(self):
if(self.shuffle):
self.image_filenames, self.labels = sklearn.utils.shuffle(self.image_filenames , self.labels)
else:
pass
### TEST data 인스턴스 생성
test_ds = data_set(test_image_path) ## label 넣을 필요 없어요 헷갈리지 않기
pred_sequence = model.predict(test_ds) # 학습모델은 baseline 참조
#pred_sequence.shape 결과 (전체 이미지 크기 , 라벨숫자) 차원이면 제대로 된 것
result = [np.argmax(value) for value in pred_sequence]
categories = pd.factorize(train["image_labels"])[1] # 이미지 크기 작을때와 동일
final_result = categories[result]
# to_csv로 제출하면 완료
# submission file 활용
위와 같이 참조해서 진행하면 된다.