입사하고 제일 열받는 것 중 하나가 줄임말이다.
별다줄~
AI 필드에서도 다를 게 없다. 걍다줄이라고 보면 된다..
오늘은 F 패밀리를 다뤄본다.
일단 두괄식으로 간다.
분류 | 구조 | 활용 분야 | 특징 |
FCL | Dense Layer | 이미지 분류, 회귀 | 모든 뉴런이 이전 layer의 뉴런과 연결, 주로 최종 분류에 사용 |
FCNN | Fully Connected Layer로만 구성 | 분류, 회귀 | Convolution 없이 Dense Layer로 구성된 신경망, 주로 1차원 데이터에 사용 |
FCN | Convolutional Layer와 up-samping으로만 구성 | Semantic Segmentation | 픽셀 단위 분류, Convolutional 구조로 공간 정보 보존 |
FPN | Bottom-up 및 Top-down 경로 | Object Detection, Instance Segmentation(OD+누끼따는거 까지) | 다중 스케일 feature 결합, 다양한 크기의 객체 탐지에 유리 |
1. FCL (Fully Connected Layer)
FC Layer는 딥러닝의 가장 기본이 되는 구성 성분으로 신경망의 개별 층을 의미한다. (FCL보다는 FC Layer라고 많이 함)
FC Layer를 구성하는 weight matrix W의 각각의 열을 뉴런이라고 하는데, 각각의 layer의 모든 뉴런들은 이전 layer의 모든 뉴런들과 연결 되어 있는 구조라 fully connected 되어있는 dense layer인 것이다.
1.1. 구조
FC Layer는 weight matrix W와 bias vector B로 구성되어 있다.
weight matrix와 bias vector는 nn.Linear 함수 정의해주면 이 내부가 알아서 정의되며, 뉴런 개수는 설계자가 직접 정하는 하이퍼파라미터다.
FC Layer 동작 시에는 입력되는 vector와 weight matrix W를 곱한 결과에 bias vector b를 더하는 연산을 통해 결과를 만든다. (자세한 동작 원리는 다음에 정리하자.)
1.2. 활용
FC Layer는 주로 뉴럴 네트워크의 마지막 부분에 위치하며
- 입력 데이터의 고차원 feature를 낮은 차원의 벡터로 매핑하거나,
- 최종 분류나 회귀 출력을 생성하기 위해, feature map을 고차원의 벡터로 변환하는데 사용된다.
1.2.1. 고차원 feature를 낮은 차원의 벡터로 매핑하는 경우
고차원 feature를 저차원으로 변환하는 경우는 feature를 압축하는 것을 목적으로 한다.
예를 들어, CNN의 중간 레이어(Conv Layer)에서 추출된 고차원 feature map을 FC Layer에 전달하여 낮은 차원의 벡터로 변환(Flatten)하여 이미지의 공간적 특징에서 중요한 패턴을 더 압축된 형태로 나타낼 수 있다.
🤷🏻♀️ 왜 압축하는디?
➡️ 최종적인 분류를 수행하기 전에 데이터를 압축해 네트워크의 효율성을 높이기 위해 차원 축소 또는 정보 요약이 목적이다!
1.2.2. 최종 분류나 회귀 출력을 생성하는 경우
Output Layer에서 FC Layer는 분류나 회귀의 최종 출력을 생성하는 데 사용되기도 하는데, 이때 FC Layer의 뉴런 개수를 분류할 클래스의 수 또는 예측해야 할 출력 차원에 맞춰 설정하는 것이다.
🤷🏻♀️ 왜?
➡️ 뉴런 개수는 우리가 정할 수 있는 하이퍼파라미터니까!
예를 들어, 이미지 분류 모델에서는 최종 FC Layer 각 클래스의 확률을 나타내는 값을 출력하여 특정 클래스를 예측하게 한다.
2. FCNN (Fully Connected Neural Network)
신경망 각 층이 모두 Fully Connected Layer로 구성되어 있는 네트워크다. 즉, Conv Layer나 Pooling Layer 없이 순수하게 FC Layer로만 이루어진 구조인 것이다.
☝🏻 FCNN은 Convolutional Layer를 포함하지 않는다는 것이 CNN이나 FCN과의 차이!
MLP(Multi-Layer Perceptron)가 FCNN에 해당한다!
2.1. 구조
MLP의 경우, input layer와 output layer 사이에 다수의 Fully Connected Hidden Layer가 존재한다.
입력 데이터의 패턴을 학습하여 각 층에서의 ReLU나 Sigmoid 등 활성화 함수를 통해 비선형성을 추가하고 복잡한 패턴을 모델링한다.
2.2. 활용
주로 텍스트, 수치 데이터 등 1차원 데이터를 처리하는 데 사용된다.
분류, 회귀 등의 작업에 사용되며, 간단한 이미지 분류를 위해서도 쓰일 수도 있지만 공간적 특성을 잘 반영하지 못하므로 복잡한 이미지 처리에는 적합하지 않다.
3. FCN (Fully Convolutional Network)
Convolutional Layer와 Up-sampling Layer로만 구성된 신경망으로, FC Layer가 없는 신경망 구조다.
☝🏻 이 구조의 핵심은 입력 이미지의 크기를 유지하면서 각 픽셀마다 클래스를 예측하는 것!
3.1. 구조
FCN의 출력은 Convolutional Layer에서 나온 feature map을 업샘플링한 결과로, 특정 위치와 클래스의 대응 관계를 유지한다.
FCN은 모든 연산을 Convolutional Layer로 처리하기 때문에 이미지의 공간적 정보를 잘 보존한다는 것이 특징이다. (바로 직전 FCNN과의 차이점!)
3.2. 활용
입력 이미지의 해상도를 유지하면서 각 위치에 대해 예측을 수행하기 때문에, 이미지의 위치 정보가 중요한 이미지 분할에 사용된다.
Semantic Segmentation에 사용되어 이미지의 각 픽셀을 특정 클래스로 분류하고, 마지막에 업샘플링을 통해 입력 이미지와 같은 해상도로 복원하여 픽셀 단위의 분류 결과를 출력할 수 있다.
4. FPN (Feature Pyramid Network)
CNN에서 다양한 해상도의 feature map을 결합하여 object detection 등의 작업에서 멀티스케일 정보를 활용할 수 있도록 설계된 네트워크다.
Bottom-up Path와 Top-down Path의 두 경로로 구성되어, 고해상도 feature map과 저해상도 feature map을 결합하여 다중 스케일 정보를 얻는다.
☝🏻 다중 해상도 피처를 효과적으로 결합하는 것이 핵심
4.1. 구조
이미지 내의 다양한 크기의 객체를 검출하기 위해 네트워크 내 다양한 계층의 특징 맵을 활용한다.
4.1.1. Bottom-up path
- 일반적인 CNN 구조에서 입력 이미지로부터 추출한 특징을 저해상도에서 고해상도까지 피처 맵을 생성하는 경로
- 입력 이미지의 저차원 정보부터 고차원 정보까지 추출
4.1.2. Top-down path
- 고해상도에서 저해상도로 스케일을 변화시키며, 각 피처 맵을 업샘플링하여 이전 단계의 피처 맵과 결합
- 추출된 피처를 고해상도로 변환하면서 상위 계층과의 skip connection을 통해 다양한 해상도의 피처를 결합
- 객체의 크기와 위치에 관계없이 탐지 성능을 높일 수 있음
4.2. 활용
다양한 크기의 객체를 탐지하는 데 최적화되어 있기 때문에 Object Detection, Segmentation, Instance Segmentation에서 주로 사용된다.
4.3. ref
a. 위키독스-FPN(Feature Pyramid Networks) - Neck
5. FPN (Fractional Pyramid Network)
Fractional Pyramid Network는 딥러닝 논문에서 제안된 새로운 개념의 네트워크 이름으로, Feature Pyramid Network와는 관련이 없는 다른 아이디어를 지칭한다.
Fractional Pyramid Network는 아직 많이 사용되는 개념은 아니라고 한다.
5.1. 구조
특정한 문제나 영역에 따라 해상도를 점진적으로 조절하거나 부분적으로 확장하여 feature map을 생성하는 네트워크다.
기존의 FPN과는 달리, Fractional Pyramid Network는 필요에 따라 Fractional한 해상도를 조정하면서 피처를 통합하는 방식이다.
5.2. 활용
Fractional하게 스케일을 조절함으로써 해상도의 세밀한 조정이 필요할 때 사용된다.
5.3. Feature Pyramid Network vs. Fractional Pyramid Network
Feature Pyramid Network | Fractional Pyramid Network | |
주요 목적 | 멀티스케일 정보를 결합하여 다양한 크기의 객체를 탐지 | 비정수 배율(Fractional)로 해상도를 조정하며, 세밀한 피처 맵 생성에 초점 |
구조 | Bottom-up과 Top-down 경로, 스킵 연결을 통한 피처 맵 결합 | 특정 논문에 따라 비정수 배율의 해상도 조정을 포함한 피처 맵 생성 방식 |
활용 분야 | 객체 탐지, 인스턴스 분할, 이미지 세그멘테이션 | 특정 연구나 실험적인 딥러닝 구조에서 사용 |
사용 예 | 객체 탐지를 위한 다양한 딥러닝 프레임워크에서 사용 | 특정 논문이나 연구에서 제안된 실험적 구조로 일반화되지 않음 |
'SWE > AI' 카테고리의 다른 글
Non-linear activation function (0) | 2024.11.09 |
---|---|
내가 가장 좋아하는 Layer는 (0) | 2024.11.08 |
Network Model 로드맵 (0) | 2024.10.23 |
크고 소중한 우리의 Data Preprocessing (0) | 2024.10.15 |
EDA vs Preprocessing 결국 필요한 것은 (0) | 2024.10.15 |