8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
8주차 스터디: 이미지 분류
Intro: 이미지 분류
What is 이미지분류?
- 이미지에서 객체나 장면과 같은 요소를 인식하고 분류하는 알고리즘을 의미함 ⇒ 사용자가 입력한 이미지를 사전에 정의한 클래스 중 가장 유사한 클래스로 판별하는 작업
- 지도학습의 한 유형으로 이미지와 이미지에 해당하는 클래스를 할당해 데이터세트를 구성함
단일 클래스 분류
- 이미지 안에 서로 다른 여러 객체가 존재하더라도 하나의 대표 클래스로만 이미지를 분류
- 이미지에 해당하는 클래스가 참인지 거짓인지를 판별
- e.g. 엄지 이미지 → 강아지야? 아니야?
다중 클래스 분류
- 단일 클래스 분류보다 비교적 복잡한 일을 수행
- 참, 거짓을 분류하는 거에서 → 여러 종류인지까지를 구분
- e.g. 만두와 엄지이미지로 → 고양이입니다. 강아지 입니다.
- e.g. 홍시와 엄지이미지로 → 푸들입니다. 말티즈입니다. (똑똑한걸~?)
다중 레이블 분류
- 입력 이미지에서 여러 클래스를 예측
- 다중 클래스와 다른점이 얘는 하나의 이미지 안에서 여러 클래스를 예측
- 근데 그래서 분류기가 여러 레이블을 동시에 처리해야 하므로 앞선 방식보다 더 많은 데이터와 더 복잡한 모델 구조를 요구함
- e.g. 엄지랑 나랑 찍은 사진 → 나는 사람으로, 엄지는 견으로
이미지 분류에 사용되는 몇 가지 기술
: 규칙 기반의 알고리즘부터 머신러닝 방법에 이르기까지 다양함
- SVM
- KNN
- Decision Tree
- ANN
- CNN
AlexNet
알렉스넷 때문에 아까 얘기했던 머신러닝 기반의 애들에서~ 합성곱 신경망 모델의 부흥을 이끌었고 이 이후부터 깊은 구조를 가진 모델들이 나타나 우승을 차지함.
이미지의 특징 추출에 합성곱과 최댓값 풀링 계층을 활용. 이후 완전 연결 계층을 통해 클래스를 분류
순전파 과정에서 특징 맵의 차원 수 증가하고 크기는 감소함.
합성곱 모델의 특징 맵의 차원 수가 늘어날수록 모델의 표현력 증가, 특징 맵의 크기를 줄여 연산량 줄이기 가능
⇒ 합성곱 네트워크: 특징 맵의 크기를 줄이면서 차원 수를 증가시키는 구조
LeNet-5와 AlexNet
알렉스넷의 구조는 리넷5의 구조와 유사하기 때문에 먼저 리넷5의 구조를 알아보자!
- 두 모델의 주요 차이
- 입력 이미지의 크기
- 활성화 함수
- LeNet-5: 리스케일된 로지스틱 시그모이드 함수
- 알렉스넷: ReLU
- 풀링 방식의 변경
- 알렉스넷: 최댓값 풀링을 활용해 값을 통합하고 단순화시킴
- ⇒ 최대값의 값의 분포가 더 일정해져 기울기 계산을 더 쉽게함
- 드롭 아웃
- 알렉스넷: 모델 매개변수가 많을수록 과대적합이 발생할 확률이 높아지기에 드롭아웃을 통해 과대적합 문제 완화
모델 학습
실습 인사이트
- acc@n : 상위 n개 레이블에 대한 예측 정확도
- GFLOPS : 초당 기가 부동 소수점 연산, 해당 모델에 대한 컴퓨팅 성능을 측정한 값
- 이미지넷 데이터셋: 컴비에서 일반적으로 사용되는 대규모 시각 인식 데이터세트
모델 추론
실습 인사이트
- 사람이 읽기 쉬운 형태로 변경하기 위해 확률, 색인, 클래스를 넘파이 배열로 변환하는 과정 거치기!
VGG
라이벌 구글넷의 경우 인셉션 모듈을 사용하여 다양한 필터 크기와 풀링 작업으로 병렬 합성곱 연산을 수행하여 전역과 지역 특징을 모두 포함해 성능을 높임. but 복잡시러움
vgg16은 16개의 계층으로 구성, 작은 3x3 필터만으로 합성곱 연산을 수행해 더 깊은 구조의 모델을 만들 수 있음.
이후 많은 딥러닝 모델의 기반이 된 모델 구조!
AlexNet과 VGG-16
두 모델의 유사성
- 이미지넷 데이터로 학습됨.
- 사용된 계층과 방식이 비슷.
- 브이쥐쥐가 두 배 더 많은 계층으로 구성
- 두 번째 합성곱 계층
- 알렉스넷: 비교적 큰 크기의 필터를 사용해 수용 영역을 넒게 확보함.
- 브이지지: 3x3으로 이미지 특징을 더 정확하게 분석하는 방법을 선택함
- 왜냐면 합성곱 신경망에서 수용 영역이 크다면 노드가 한 번에 바라보는 이미지의 영역이 커지므로 전역 특징을 더 효율적으로 학습할 수 있지만, 반대로 가장자리나 모서리와 같은 낮은 수준의 지역 특징을 학습하는데 어려움을 겪기때문에 더 작은 크기의 필터를 여러 번 적용해서 비선형성을 증가시키고 모델의 표현력을 높임
모델 구조 및 데이터 시각화
실습 인사이트
- 입력 이미지를 냅다 작개해버리면, 검출하려는 객체의 크기가 더 자아지므로 객체 구별이 어려워지는 문제점이 있어서 입력 이미지보다 약간 더 큰 이미지 크기로 해주는 게 좋음.
- 이미지 테두리 부분을 잘라내면 객체의 특징을 최대한 유지할 수 있음
미세 조정 및 모델 학습
실습 인사이트
- 계층 자체를 변경하거나 계층의 매개변수를 변경한다면 사전에 학습된 가중치를 적용할 수 없으므로 새로운 가중치를 학습해야한다.
ResNet
레즈넷은 대규모 이미지넷 데이터세트로 학습했으며, vgg모델과 동일하게 합성곱 계층, ReLU, 풀링, 완전 연결 계층등을 이용하여 구성되었다.
기울기 소실 문제를 해결하기 위해 잔차 연결, 항등 사상, 잔차 블록 등을 통해 계산 효율성을 높였다.
컴비에서 가장 효과적이고 널리 사용되는 신경망 구조가 되었다.
ResNet의 특징
레즈넷의 기본 구조는 입력층, 합성곱 계층, 배치 정규화 계층, 활성화 함수, 잔차 블록, 평균값 풀링 계층, 완전 연결 계층, 출력층으로 이뤄져 있다.
- 단축 연결
- 두 개의 합성곱 계층과 단축 연결로 이뤄져 있다. 단축 연결은 이전 계층의 출력값을 현재 계층의 입력값과 더해주는 방식으로 구현. 그래서 기존 순방향 신경망과 달리 이전 계층에서 발생한 정보를 다음 계층에 전달한다. 그래서 모델이 깊어지더라도 기울기 소실 문제가 발생하지 않고 정보가 손실되는 현상을 방지할 수 있음. 또한 이전 계층의 출력값을 현재 계층의 입력값과 더해 이전 계층에서 발생한 정보를 계속 전달하여 기울기를 일정 수준 이상 유지할 수 있게함.
- 기울기 저하 문제근데! 본 가정과는 반대로 일정 수준 이상으로 계층을 깊게 쌓으면 오히려 학습되지 않는 현상인 기울기 저하 문제가 나타남.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 잔차 학습: 모델이 입력과 출력 사이의 차이만 학습하게 하는 방법이렇게 h(x)를 f(x)+x로 변경한 구조를 빌딩 블록이라고 함.
- 여기서 x는 항등 사상이므로 이전 계층에서 학습된 결과를 그대로 가지고 옴. 따라서 x는 고정값이라고 할 수 있음.
- 그래서 이러한 문제를 해결하기 위해 잔차 학습 기법을 적용함.
- 기울기 저하 문제를 파악하기 위해 항등 사상 실험을 진행함. 계층이 깊어질수록 학습이 어렵기 때문에 얕은 모델을 먼저 학습한 후 항등 사상으로 초기화된 계층을 추가해 모델을 깊게 구성함.
- 잔차 연결이 연결을 통해 입력값과 출력값 간의 거리가 줄어들어 학습이 수월해지고 정보의 손실이 줄어들어 더 나은 성능을 얻을 수 있음.차원이 다르더다도 입력값이 보존되면서 출력값의 차원을 맞춰 신경망의 깊이를 증가시킬 수 있음.
- 레즈넷에서 잔차 연결은 덧셈 연산으로 만들어짐.
- 스킵 연결, 단축 연결 이라고 부르며 입력값이 신경망 계층을 통과한 후 출력값에 더해지는 연결을 말한다.
- 잔차 학습근데! 단순히 계층을 깊게만 구성하더라도 기울기 저하가 발생하는 것을 확인함.
- 그래서 입력과 출력 사이의 차이만 학습해서 기울기 저하 문제를 해결함.
- 깊은구조의 모델을 설계한다면 더 많은 특징 벡터를 계산할 수 있어, 계층마다 더 세밀한 지역 특징과 전역 특징을 구별할 수 있게 되어 모델의 표현력 향상도 가능케함.
- 병목 블록
- 병목 블록(병목 계층)은 연산량을 줄이고 모델의 표현력을 유지하므로 효율적인 구조임.
- 병목 블록은 기존 레즈넷 구조와 다르게 1x1 합성곱 계층을 통해 입력 특징 맵의 차원 수를 줄이고 3x3 합성곱 계층을 통해 필터를 적용함.
- 기본적으로 2개의 합성곱 계층이 연결되어 빌딩 블록을 구성함. 그리고 깊은 모델 구조를 유지하면서 연산량을 줄이기 위해 병목 블록을 추가함.
모델 구현
레즈넷은 한개의 입력 줄기와 네 개의 스테이지로 구성돼 있다.
- 기본 블록: 3x3 합성곱 계층, 배치 정규화, ReLU를 두 번 반복해 연결한 구조
- 병목 블록: 기본 블록 구조와 유사하지만, 더 많은 합성곱 계층과 확장 변수를 사용함. 이때 확장값은 병목 블록의 세 번째 합성곱 계층에서 사용함.
레즈넷 모델
- 이렇게 기본 블록과 병목 블록을 여러번 반복해 하나의 스테이지를 구성하고 여러 블록을 묶는 스테이지 메서드를 구성해 레즈넷 모델을 구성함.
Grad-CAM
설명 가능한 인공지능 기술 중 하나로 딥러닝 모델의 내부 동작 원리를 시각화하는 방법임.
- 설명 가능한 인공지능: 인공지능 모델이 도출한 결과를 인간이 이해하고 검증할 수 있게 하는 방법임.
딥러닝 모델이 이미지 분류와 같은 작업을 수행하기 위해서는 입력 이미지에서 중요한 영역을 파악해 예측해야하는데 이러한 예츠과정이 블랙박스 문제를 유발함. 그래서 설명 가능한 인공지능이 이러한 문제를 해결하기 위해서 모델의 내부 작동 방식을 분석해 결과를 해석하고 모델의 동작 방식을 설명할 수 있는 방법을 제공함.
뿐만 아니라, 딥러닝 모델이 내놓은 결과를 신뢰할 수 있는지, 그 결과를 수정하거나 개선하는 데 어떻게 활용될 수 있는지 등 다양한 응용 분야에서 중요한 역할을 함.
클래스 활성화 맵
설명 가능한 인공지능 중 하나로 딥러닝 모델에서 특정 클래스와 관련된 입력 이미지 영역을 시각화하는 방법임.
주로 합성곱 신경망에서 활용되는데, 합성곱 신경망은 이미지의 특징을 추출하기 위해 합성곱 연산을 수행하고 특징 맵을 생성함. 클래스 활성화 맵은 특징 맵을 활용해 입력 이미지의 어떠한 부분이 특정 클래스와 관련 있는지 시각화함. 그러므로 입력 데이터를 특정 클래스로 분류하는 모델이 각 이미지 영역에 주목하는 정도를 시각적으로 나타내고 영향도를 표현할 수 있는데 이걸 히트 맵으로 시각화해서 볼 수 있음.
- 클래스 활성화 맵 생성 방식
- 클래스 활성화 맵은 합성곱 신경망의 특징 맵의 채널과 분류기의 매개변수 값을 활용해 생성됨. 특징맵의 각 채널과 분류기의 가중치를 곱해 채널마다 가중치의 합을 계산함. 이 값을 정규화해 어느 영역에서 가장 강하게 활성화되는지를 수치화하고 이를 시각화하여 분류 결과에 영향을 미치는 영역을 파악함. 전역 평균 풀링을 적용해 각 픽셀에 대한 정보를 1차원으로 펴고 출력으로 사용함.
Grad-CAM
클래스 활성화 맵과 유사하지만, 전역 평균 풀링 계층을 사용하지 않고 마지막 합성곱 계층에서 역전파를 통해 클래스에 대한 중요도를 계산함.
마지막 합성곱 계층만 사용해 입력 이미지의 어떤 위치가 해당 클래스의 분류에 기여하는지 더 세밀하게 파악함
가중치 대신 마지막 계층의 기울기 값을 사용하므로 모든 합성곱 신경망 구조에 적용될 수 있으며, 기존 클래스 활성화 맵보다 더 강력한 시각화 성능을 제공함
클래스 활성화 맵은 전역 평균 풀링 계층을 통과한 완전 연결 계층의 기울기를 사용한 반면 그래드캠은 마지막 합성곱 계층만 활용하므로 모든 합성곱 신경망에 적용할 수 있으며, 전역 평균 풀링 계층을 직접 사용하지 않아 공간 정보를 보존할 수 있다.
'AI.ML' 카테고리의 다른 글
[AI/ML 스터디] 7주차 - Attention is All Your Need 논문 리뷰 (0) | 2024.12.06 |
---|---|
[AI/ML 스터디] 4주차 - 05. 토큰화 (2) | 2024.11.01 |
[AI/ML 스터디] 3주차 - 04. 파이토치 심화 (3) | 2024.10.13 |
[AI/ML 스터디] 1주차 - 03. 파이토치기초(~최적화) (1) | 2024.10.07 |
[AI/ML스터디] 2주차- 03. 파이토치기초(~퍼셉트론) (0) | 2024.10.05 |