본문 바로가기
엑셈 경쟁력/Knock, Knock! KNIME

KNIME | KNIME을 활용한 이미지 분석

by EXEM 2023. 4. 27.

이번 Part에서는 KNIME으로 이미지 분석을 하는 방법에 대해 알아보고자 해요!

 


Part. 1 KNIME이라고 들어봤어요? (링크)

Part. 2 데이터 처리는 알겠는데 전처리는 뭐예요? (링크)

Part. 3 잘 안 보이니까 시각화 해주세요! (링크)

Part. 4 KNIME을 활용한 이미지 분석 


 

Q1. 이미지 분석이란 무엇인가요? 

 

A1.

컴퓨터에서 이미지란 화면을 구성하는 가장 기본 단위인 픽셀의 집합이라고 생각하시면 될 것 같아요! 즉, 디지털 데이터로 표현이 가능한 카메라로 찍은 사진, 동영상, 일러스트레이션 등이 있어요. 이미지 분석에는 여러 개의 분야들이 있는데, 이미지 내의 물건이나 사람과 같이 개체를 탐지할 수 있고, 특정 기준으로 이미지를 분류할 수도 있어요.

 

  • 개체 탐지  

 

  • 이미지 분류

 

 

아울러 일반적인 사진 이외에 의료영상도 이미지 분석이 가능해요. 의료영상은 DICOM(Digital Imaging and Communications in Medicine) file(확장자 .dcm)로 저장되어 있어요. 'Digital' 즉, 숫자 형식으로 되어있기에 이미지 분석이 가능해요. 아래의 이미지는 뇌종양을 진단하기 위한 MRI 이미지예요!

 

 

 

이 이미지를 이용해서 뇌종양을 예측하는 알고리즘을 아래에서 실습해볼테니 끝까지 봐주세요!

 

 

 

Q2. 그렇다면 이미지 분석은 어떤 식으로 진행이 되나요??

 

A2.

모든 데이터 분석 과정이 그러하듯 이미지 분석에서도 전처리가 매우 중요해요! 전처리를 한 뒤, 최고의 성능을 나타내는 알고리즘과 최적의 Hyper parameter를 찾는 과정을 반복해요. 아래에서 이미지 분석의 과정을 간략하게 설명드릴게요.

 

1) 균등한 데이터 준비
예측할 이미지들의 개수는 비율이 비슷해야해요! 동일하면 더더욱 좋아요! 만약에 A와 B를 나눠야 하는 경우에 A와 관련된 이미지가 9,900개이고, B와 관련된 이미지가 100개라면 당연히 모든 이미지가 A라고 예측을 해도 99%의 정확도가 나오니 B를 예측하는 데에 어려움이 있겠죠!!?

 

2) 이미지 크기 통일
이미지 사이즈를 통일시켜야 해요! 사진 10개를 가로, 세로가 각각 30cm인 액자에 넣어야하는데 사진의 사이즈가 제각각이라면 많이 어렵겠죠? 이와 마찬가지로 이미지 분석을 위해서는 이미지의 사이즈를 전부 통일시켜주는 작업이 필요해요.

 

3) 데이터 증강 (Optional)
학습해야 할 이미지의 수가 부족하다면 개수를 증가(augmentation) 시켜야 해요! 사람이 보는 이미지와 컴퓨터가 인식하는 이미지는 약간의 차이가 있어요! 아래의 이미지를 보면 (flip, rotation, shear, crop)총 4가지의 방법으로 이미지를 지지고 볶고 해 두었는데요. 사람이 보았을 때는 전부 다 동일한 이미지지만, ‘0’과 ‘1’로 받아들이는 컴퓨터의 입장에서는 모두 다른 이미지로 인식해요!!

 

4) 데이터 나누기
이렇게 증가시킨 데이터를 학습 / 검증 / 테스트 용도로 적절히 나누어요. 나누어진 데이터 세트들은 각각 여러 후보의 알고리즘을 훈련시킬 때, 훈련시킨 알고리즘들의 성능을 검증할 때, 마지막으로 최적의 알고리즘을 선택한 뒤 성능을 평가할 때 할 때 사용해요!

 

5) 알고리즘 개발 및 튜닝
이제 알고리즘을 선택해야 할 차례에요! 일반적으로는 논문에서 검증된 알고리즘이나 통상적으로 사용하는 알고리즘을 base line으로 설정한 뒤, 적용할 알고리즘과 앞서 말한 Hyper parameter를 조정해가며 최적의 성능을 찾아나서게 됩니다.

 

6) 평가
마지막으로 여러가지의 알고리즘 중 최적의 성능인 알고리즘으로 최종 테스트를 거치게 됩니다! 최종 테스트를 통해 우리의 알고리즘이 얼마나 정확한 결과를 내는지 평가하고, 어떤 문제를 해결하거나 프로덕트에 적용할 수 있죠.

 

 

 

Q3. 이런 복잡한 과정들이 KNIME으로 가능하다구요?


A3.

네! 위에서 보았던 뇌종양 양성과 음성의 MRI 이미지 데이터로 뇌종양 진단을 한다면 아래와 같이 할 수 있어요.

 

 

하나씩 살펴볼게요!

 

1) 균등한 데이터 준비

 

 

양성 1500개, 음성 1500개­인 균등한 데이터를 준비해서 <Image Reader>로 읽었어요. ‘yes’ 주석이 있는 윗줄이 양성 이미지이고 ‘no’ 주석이 있는 아랫줄이 음성 이미지에요.

 

 

2) 이미지 크기 통일

 

 

먼저 <Image Calculator>를 이용해서 픽셀(숫자)값을 0에서 1 사이의 값으로 바꾸었어요. 그 뒤 <Image Resizer>를 이용해서 이미지 크기를 조정해주었어요.

 

3) 데이터 나누기

 

 

윗줄의 양성 데이터와 아랫줄의 양성 데이터를 받아서 <Concatenate>를 이용해 하나로 합친 다음 <Partitioning>을 이용해 훈련 데이터와 테스트 데이터로 나누어주었어요. 이때, 검증 데이터는 일단 생략할게요!
<Partitioning>의 두 화살표가 하나는 위로 하나는 수평으로 연결되어 있죠? 위로 뻗은 화살표는 훈련 데이터가 알고리즘으로 향하고, 수평으로 뻗은 화살표는 테스트 데이터가 예측기로 향하는 것을 의미해요.

 

4) 알고리즘 개발 및 튜닝

 

 

이 부분이 예측 알고리즘이에요. 이 알고리즘이 훈련 데이터와 함께 <Keras Network Learner>에 전달되면 데이터를 학습이 수행되어요.

 

 

마지막으로 만든 알고리즘을 이용해서 예측하고, 성능을 평가해요!

<Keras Network Executor>가 알고리즘과 테스트 데이터를 받아 예측을 수행하면 <Scorer>에서 성능을 확인할 수 있어요.

 

 

 

테이블에서 행(row)은 실제 정답이고, 열(column)은 예측인데요, 아래 성능에 대한 더욱 직관적인 지표를 볼 수 있죠?

실제 정답을 제대로 예측한 건수(Correct classified)가 879건이고, 정답을 예측하지 못한 건수(Wrong classified)가 21건으로 정확도(Accuracy)가 97.667%예요.

 

이상으로 간단한 이미지 분석을 KNIME으로 해보았어요. 아래는 data set 링크와 KNIME Community에서 다운받을 수 있는 이미지 분석 workflow들 중 간단한 예시들이니 궁금하신 분들은 직접 다운받아서 실행시켜보아도 좋을 것 같아요.

 

 

  • MNIST
  • Fashion MNIST
  • cats and dogs

 

 

궁금하거나 자세하게 알고 싶은 내용은 OWLEYE(링크)를 통해 문의하시면 더욱 자세히 말씀드릴게요.

 

 

 

* 이미지 출처:

https://www.kaggle.com/code/aruchomu/yolo-v3-object-detection-in-tensorflow

https://www.kaggle.com/code/gpiosenka/explore-birds-450-dataset

https://www.kaggle.com/code/abhranta/brain-tumor-detection-resnet50

 

* 데이터 셋 출처:

https://www.kaggle.com/datasets/abhranta/brain-tumor-detection-mri

 

 

 

 

 

글 | 빅데이터 분석팀 김지호, 신혜지

 

 

 

 

댓글