@@@ 인공지능/수학·통계를 몰라도 이해할 수 있는 쉬운 딥러닝

2 - 2. 이미지 학습 기법 활용하기(4)

HTG 2021. 7. 27. 01:30
728x90

2-2-2. AI는 사진을 완벽하게 이해할 수 있을까? - Semantic Segmentation

●Semantic Segmentation

Semantic Segmentation은 앞서 배운 것의 한발 더 나아간 것.

이미지 속의 모든 픽셀을 완벽히 분석하여, 각각의 픽셀이 어디에 속하는지 분류하는 과제.

결과적으로 모양이 불규칙적이거나 작은 물체도 경계선을 따라 분리해 낼 수 있으며, 한 장의 사진 속에 포함된 여러 가지 물체를 동시에 분류.

 

●데이터 살펴보기

사진 데이터는 0 ~ 1 사이의 값을 가진 (128, 128, 3) 사이즈 데이터로 변환.

annotation의 경우 배경은 0, 하얀 영역은 1로 노멀라이즈된 (128, 128, 1)사이즈 데이터로 변환하여 사용.

 

●어떤 인공지능 사용?

U-Net이라 부르는 특수한 구조의 인공지능을 제작.

U-Net은 의료 영상의 세그멘테이션(분할)을 위해 고안된 딥러닝 알고리즘.

대체로 의료영상은 모든 종류의 영상 중에서 가장 복잡하고 어려운 편.

이런 어려운 문제를 척척 해결해내는 인공지능이니, 세그멘테이션이 필요한 거의 모든 분야에서 U-Net을 가져다 사용.

복잡한 네트워크 구조를 그림으로 표현하면 U자와 비슷한 형태가 나와서 U-Net이라고 부름.

 

●딥러닝 코딩

- U-net 인공신경망 불러오기

 

 

- 인공신경망 컴파일

옵티마이저(optimizer) - Adam

메트릭(metrics) - accuracy

로스(loss) - BinaryCrossentropy

from_logits = True : logit은 활성화 함수를 씌우지 않은 분류 모델의 출력층 값을 의미.

from_logits를 둘 경우 케라스는 신경망의 출력층에 활성화 함수를 적용하지 않는 것으로 인식하고 크로스 엔트로피를 계산.

 

●인공지능 학습

- 인공신경망 학습

 

 

- 학습 결과 출력

그래프로 출력

 

 

●인공지능 학습 결과 확인

- 인공지능 성능 확인하기

 

저자의 경우 22 에포크에서 학습이 중단. 

인공지능의 최종 성능은 89.92%. 세그멘테이션 결과는 정확도만 갖고 판단하기에 부족한 부분이 있음. 영상을 직접 확인해 보는 것이 좋음.

 

- 학습 기록 확인하기

 

빨간 선이 train, 파란 선이 test

저자의 경우 Loss와 Accuracy 모두 오버피팅의 양상이 보임.

10 에포크 이후로 트레이닝 성능은 계속 증가하는데 테스트 성능을 향상하지 않고 있음.

 

- 학습 결과 확인하기

실제 사진 화면을 보면서 확인

 

 

-Semantic Segmentation(시맨틱 세그멘테이션)

시맨틱 세그멘테이션을 활용하면 배경으로부터 물체만 뽑아낼 수 있음.

덕분에 암의 진단, 혈과 부피 진단, 수술 보조, 현미경 사진의 분석 등 의료분야에서 굉장히 널리 활용.

인공위성 영상을 분석하여 숲이나 사막, 녹지를 분할하는 데에도 사용할 수 있으며 자율주행에도 일부 활용.

한때 옵티컬 플로우를 활용한 세그멘테이션 기법도 많이 활용.

물론 딥러닝의 급부상과 함께 많이 쓰지 않고 있음.

 

-콜백의 응용

현재 콜백은 10 에포크로 지정되어 있음. 당장 성능 향상이 멈추더라도 10 에포크가량 지켜보겠다는 이야기.

덕분에 오버피팅이 진행되는 중에도 10 에포크가량 불필요한 학습을 더 진행함.

콜백의 patience를 수정하여 오버피팅을 줄이자.