728x90
- 최근의 영상 인식, 처리 분야에 있어서 가장 기본이 되는 모델
- 눈과 뇌에서 처리되는 신경과학적 시각처리 방식에서 고안한 모델
- 신경망 동작을 처리하기 위하여 합성곱 연산을 이용함
- 합성곱: 두 개의 함수가 있을 때, 둘 중에서 하나의 함수를 반전, 이동(전이)시킨 후, 두 함수를 곱한(결합한) 결과 를 적분하여 그 파형(그래프)을 얻는 연산 방법
- CNN 모델에서는 합성곱 연산을 기반으로 각 영역(픽셀)이 서로 얼마나 일치하는지 계산하여 그 계산 결과를 활용함
Convolution (합성곱)
- 합성곱 신경망에서는 “하나의 함수가 다른 함수와 얼마나 일치하는가?”의 의미로 사용
- 하나의 필터(커널)에 대하여 이미지의 각 부분들이 필터와 얼마나 일치하는지 계산
- 가운데 부분에 있는 정사각형이 필터
- Convolution(합성곱) 을 이용하여 가중치 수 줄임 → 연산량 감소와 효과적인 이미지 처리 수행 (위 사진에서 9개의 값이 weight(가중치))
- Convolution Filter 를 이용하여 신경망 동작 수행
- Convolution Layer 와 Fully Connected Layer 를 중심으로 영상정보 처리
- Convolution Layer : 특징점을 효과적으로 찾는 데 활용
- Fully Connected Layer : 발견한 특징점을 기반으로 이미지를 분류하는 데 활용
기본구조
- Convolution Layer - Pooling Layer의 반복
- 반복 방식은 사용자가 임의로 결정 (예, Convolution Layer만 여러 층을 가진 후 마지막에 Pooling Layer가 오는 경우도 있음)
- 국소/지역 콘트라스트 정규화 (Local Contrast Normalization, LCN) 층을 매치하는 경우도 있음
- 목적 : 테두리, 선, 색 등 이미지의 시각적 특징이나 특성 감지
패딩
- 더 좋은 결과를 내기 위해 윈도우를 이미지 영역 밖으로 확장할 때 사용
- Convolution, 즉 합성곱이란 이미지와 필터 사이에 정의되는 합성 곱 연산을 말함
- 이미지의 합성곱은 필터의 명암 패턴과 유사한 명암 패턴이 입력된 이미지의 어디에 있는지 검출하는 작용, 즉 필터가 나타내는 특징적인 명암 구조를 이미지로부터 추출하는 작용을 함
- 필터: 커널이라고도 함
- 입력층의 윈도우를 은닉층의 뉴런 하나로 압축할 때, Convolution Layer에서는 윈도우의 크기만큼의 가중치와 1개의 편향 값(bias)을 적용
- 예를 들어 윈도우의 크기가 5x5라면 5x5개의 가중치와 1개의 편향 값이 필요함
- 이 5x5개의 가중치와 1개의 편향 값을 커널, 또는 필터라고 부름
- 필터는 해당 은닉층을 만들기 위한 모든 윈도우에 공통으로 적용됨
- 가중치의 수를 줄임으로써 전체 연산량을 대폭 감소시킬 수 있음
- 예를 들어, 입력층의 크기가 28x28 일때 기본 신경망의 경우 28x28=784 개의 가중치를 찾아야 하지만 Convolution Layer 에서는 5x5 개인 25 개의 가중치만 찾으면 됨
- 실질적으로 CNN은 너무 느리기 때문에 사용하기 힘듬
- 복잡한 특징을 가진 이미지의 분석이 어려움
- 보완책으로서 여러 개의 필터를 사용하며, 분석하고자 하는 내용에 따라 필터의 개수를 어떻게 정하는가 하는 것이 중요함
- 이미지 데이터, 즉 2 차원의 평면 행렬에서 지정한 영역의 값들을 하나의 값으로 압축
- 압축할 때
- Convolution Layer: 가중치와 편향을 적용
- Pooling Layer: 값들 중 하나를 선택해서 가져오는 역할
- 자연물 이미지 등 주변의 조명, 카메라의 노출 등 환경 변화에 따라 이미지 전체의 밝기, 대비가 크게 변하는 경우 사용함
- 이미지 밝기 정규화의 방법
- 이미지의 집합(훈련 데이터)에 대한 통계치를 이용하여 이미지의 명암을 전체적으로 조절
- LCN
- 이미지 한 장, 한 장에 대하여 개별적으로 조절
- 고정된 가중치를 사용하므로 학습 가능한 파라미터는 없음
Fully Connected Layer (완전연결층)
- 활용도
- 일반적으로 기존의 신경망에서 각 층별 연결에 사용되는 방식. 전결합층
- 모든 노드를 연결하므로 수많은 연산이 일어남
- CNN 의 특징은 모든 노드를 결합하지 않음으로써 연산량을 줄여 효율성을 높이는 방식
- 그럼 왜 사용하는가?
- 모든 노드를 연결하므로 1차원배열로 표시됨 ➜ 이미지의 공간정보가 사라짐
- 최종 결과값은 분류 결과 도출 → 결국 마지막에 도출된 분류결과 Label을 선택하여야 함
- 최종 결과를 분류하기 위한 기반 정보는 모두 가지고 있어야 분류를 위한 SoftMax 함수를 사용할 수 있음
- 필수는 아니며 Convolution Layer 의 결과를 그대로 사용할 수도 있음
- 활성화 함수
- 실제 신경망에서는 우리 몸에서 반응할 필요가 있는 수준 까지만 신호를 전달하고 나머지의 신호는 무시 → 비선형적 특징
- 합성곱 연산은 입력과 가중치로 이루어진 연산 → 선형성을 가짐 → 비선형 특성 부여를 위하여 활성화 함 수가 필요함
- 최근 많이 사용되는 활성화 함수는 ReLU(Rectified Linear Unit) 계열의 함수
CNN 전체 구조의 예시
뇌의 시각정보 처리 구조 : 눈과 망막의 구조
- 각 원추세포마다 다른 광색소를 함유하기 때문에 인식하는 색이 다름(얼마나 골고루 분포하냐에 따라 색을 잘 구분?)
- 안구에서 신경절 세포는 마지막 출력에 해당하는 영역, 뉴런과 동일한 방식으로 동작함
- 망막에서 전기신호로 변환된 시각 정보는 신경절 세포의 반응률에 영향을 미침
- 신경절 세포의 반응률에 영향을 미치는 망막 표면의 영역을 해당 세포의 수용야(Receptive Field) 라고 하며 “ 중심흥분+ 주변억제” 와 “ 중심억제+ 주변흥분” 의 두 가지 형태가 존재함
- 1 차 시각피질의 세포들
- 단순세포: 국소적인 영역을 보고, 단순한 패턴에 자극을 받는 세포
- → 점, 막대, 모서리 같은 사물 형태의 윤곽 일부를 처리
- 복합세포: 넓은 영역을 보고, 복잡한 패턴에 자극을 받는 세포 → 막대 형태의 움직임 처리
- 초복합세포: 각진 부분(모서리)의 움직임 처리
- 단순세포: 국소적인 영역을 보고, 단순한 패턴에 자극을 받는 세포
- 각 세포들은 수직으로 세워놓은 기둥 형태로 조직되어 있음( 시각피질에서만 이런 형태)
- 각 세포들은 서로 다른 방향의 자극에 대해 반응함
- 시각피질에서 이러한 기둥 조직에 의해 방향성 정보를 부호화 하는 것이 시각적 공간을 뉴런에 의해서 재구성하는데 매우 중요한 역할을 하는 것으로 추정됨
- 세포기둥은 세포들의 단순한 집합이 아니라 역동적 기능 단위이다
- 단순세포: 엄격한 위치 선택성을 가짐 (정확한 입력패턴에 반응)
- 복합세포: 입력패턴을 조금 벗어나도 반응함
- 단순세포와 복합세포의 반응성을 모형화
- 눈과 시각피질 사이의 시각정보 처리 방식에서 개념 도입
- 망막에서의 빛 인식 영역 → 입력층
- 시각피질의 단순세포에 의한 입력패턴 대응 영역 → 중간층
- 시각피질의 복합세포에 의한 활성화 및 차원축소 영역 → 출력층
- 해당 영역에 대한 수용야(감수영역이라고도 함) → 필터
- 수용야의 영역 크기 → 윈도우
- 수용야의 이동 범위 → 스트라이드
- 수용야의 영역 처리 → 패딩
- 시각 처리 신경망은 단순세포와 복잡세포가 층을 이루어 구성되었고, 층간 연산에 따라 동작 하는 것으로 관찰되고 있으며, CNN 모델은 이를 반영하고 있음
시각의 전달 경로
- CNN 모델과 DNN 모델은 기본적으로 같다
- 동일한 학습 방법을 따름
- 모든 층에 대하여 추측을 할 때는 Forward Propagation 수행
- 모든 층에 대한 가중치(Weight)를 훈련할 때는 Back Propagation 수행
- 동일한 학습 방법을 따름
- 차이
- DNN 모델
- 목적: 입력에 대하여 원하는 결과가 나올 수 있도록 가중치를 갱신(훈련, 학습)하는 것
- 학습: 각 노드에 대한 가중치를 학습함
- CNN 모델
- 목적: 합성곱(Convolution) 층을 이용하여 유의미한 특징(Feature)을 추출하여 이용하는 것
- 학습: 각 특징에 대한 가중치를 학습함
- DNN 모델
이미지에서 필터의 특징을 가진 영역을 추출(인식)
- 필터A: 수직의 edge를 검출하는 필터 → 보다 큰 값이 있는 위치에 수직의 edge가 있다는 것을 의미함
- 각 층에서 Back Propagation을 수행할 때
- 예측 값과 실제 값을 비교한 오차를 정의(계산)한 후, 각 edge의 가중치를 갱신함
- 합성곱 층(Convolution Layer)에서의 연산과 DNN 모델에서의 연산의 차이
- 기본적으로 가중치가 고정되어 있음 (같은 필터를 이미지 전체에 적용하기 때문)
- 전 결합(Fully Connected) 그래프가 아님
- 필터를 이미지 전체에 적용하는 것이 아니기때문에
- 어느 픽셀이 어느 출력 픽셀에 영향을 주는지 추적해야 함
- 즉 모델의 각 노드에서 적용되는 필터에 따른 가중치의 연산과 갱신이 이루어짐
- 데이터로부터 직접 특징을 학습 → 더 복잡한 패턴 학습 가능, 다양한 문제에 더 유연하게 적용 가능
- 이미지의 공간 구조를 인식하고 학습할 수 있음
- 파라미터 공유로 인해 효율적인 학습이 가능함
- 주어진 이미지가 어떤 카테고리에 속하는지 판단하는 과정
- 이미지 전체를 한 카테고리로 분류
- 영상 분류에서는 이미지 전체를 분석하여 하나의 레이블로 분류함
- 일반적인 CNN 구조가 사용됨
- 마지막 출력 층에서 소프트맥스 활성화 함수 등을 사용하여 카테고리별 확률을 계산함
영상 검출
- 주어진 이미지에서 어떤 객체가 어떤 위치에 존재하는지를 파악하여 해당 영역의 카테고리를 할당하는 작업
- 이미지 내 객체의 위치와 카테고리를 동시에 찾음
- 검출은 이미지 내의 여러 객체를 찾아야 하므로, 로컬 영역에서의 패턴을 파악해야 함
- YOLO, SSD와 같은 특수한 구조를 사용하여 객체의 경계 상자와 함께 클래스 레이블을 예측
- 이미지의 각 픽셀이 어떤 카테고리에 속하는지 판단하는 작업
- 이미지의 각 픽셀 별로 카테고리 할당
- 이미지의 각 픽셀에 레이블을 할당해야 하므로, 공간 정보를 잘 보존해야 함
- U-Net과 같은 구조가 사용됨
- 업샘플링과 다운샘플링을 통해 고해상도의 세그멘테이션 맵을 생성함
- 영상 복원은 손상된 또는 왜곡된 이미지를 복원하는 작업
- 노이즈 제거, 해상도 향상 등
- 손상된 이미지 복원
- 원래 이미지의 특성을 복구해야 하므로, 손실함수와 네트워크 구조가 복잡할 수 있음
- SRCNN, GAN(생성형 ai 초기형태를 이용한 모델) 등의 고급 기술을 사용하여 이미지의 본래 특성을 복원함
- Super Resolution
- 비어있는 부분을 유사한 형태로 복원, 컬러화
- 합성, 열화 문제 해결
- 고해상도 변환
- torch.nn.Conv2d와 torch.nn.MaxPool2d를 사용하여 CNN의 기본 블록(Convolution Layer, Pooling Layer) 구성.
- 다양한 필터 크기와 채널 수를 조정하여 이미지 분류 및 처리 모델을 구축.
- CNN을 사용한 이미지 분류 모델을 학습시키고, 학습 후 테스트 데이터셋에 대한 성능 평가.
- torchvision 라이브러리를 사용하여 데이터셋 로드 및 전처리.
- CNN의 기본 개념과 PyTorch를 사용하여 CNN 모델 구성 및 학습.
- 이미지 분류 모델을 구축하고, 성능 평가 및 결과 시각화.
- 텐서플로우에서 심층 신경망 모델, RNN 또는 LSTM 등의 순환 신경망(Recurrent Neural Network) 구현.
- 자연어 처리(NLP) 또는 시계열 데이터 예제를 사용하여 RNN, LSTM 모델 학습.
- 사전 학습된 모델(Pre-trained Model)을 사용하여 새로운 데이터셋에 맞춰 추가 학습.
- tf.keras.applications을 사용하여 다양한 사전 학습된 모델 불러오기 및 fine-tuning.
- TensorFlow에서 RNN, LSTM 또는 전이 학습과 같은 고급 모델 구현.
- 고급 신경망 구조의 학습, 평가 및 전이 학습 방법.
- 오늘 학습한 실습 내용은 아래 주소에 2024.10.02 날짜 파일들로 정리함
- https://github.com/Astero0803/Machine-Learning-Frameworks-/tree/main
- 오늘의 회고
728x90
'AI' 카테고리의 다른 글
# 24.10.08_전처리:단어의 표현 + 임베딩 (5) | 2024.10.08 |
---|---|
# 24.10.07_자연어 처리 개요 + 전처리: 토큰화 (2) | 2024.10.07 |
# 24.10.04_Yolo+RNN +LSTM 기본 이해 (4) | 2024.10.04 |
# 24.10.01_PyTorch+TensorFlow학습 (0) | 2024.10.01 |
# 24.09.30_AI(인공지능) 개요 + 딥러닝 개요 (3) | 2024.09.30 |