Processing math: 0%
no image
Object Detection Wrap-Up
Object Detection 개인적으로 헷갈리기 쉬운 내용들🔑 Detector 구조의 구성 요소, loss, evaluation metric, Precision & Recall, Corner Pooling, DarkNet Output, AP 계산하기Detector 구조의 구성 요소CornerNetAnchor-free 방식의 one-stage detectorRPN을 사용하지 않음[Input → Backbone → Dense prediction] 구조Fast R-CNNRPN이 없음 (selective search 사용)Neck 구조가 없음[Input → Backbone → Sparse prediction] 구조YOLOOne-stage detector로 RPN 없음[Input → Backbone → Den..
2025.04.05
no image
Advanced Object Detection
🔑 Cascade RCNN, ViT, YOLO, M2Det, CornerNetCascade RCNNCascade RCNN은 학습할 bounding box의 IOU threshold를 0.5에서 더 높여보면 어떨까라는 아이디어에서 출발했음. Cascade RCNN은 Iterative BBox at Inference와 Intergral Loss를 결합하여 기존의 Faster RCNN보다 더 좋은 성능을 나타낸다Cascade RCNN은 Iterative BBox at Inference와 Intergral Loss를 사용해서 Bbox pooling을 반복 수행할 시 성능 향상되는 것, IOU threshold가 다른 Classifier가 반복될 때 성능 향상 되는 것을, IOU threshold가 다른 Ro..
2025.04.02
no image
EfficientNet & EfficientDet
EfficientNet다음은 EfficientNet에서 parameter를 통해 스케일을 설정하는 방법이다. EfficientNet은 b0부터 b7까지 다양한 모델 구조가 존재하는데, 이 구조의 종류를 결정하는 parameter → phi(φ)alpha(α)→ α는 depth scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임beta(β)→ β는 width scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임gamma(γ)→ γ는 resolution scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임phi(φ)→ φ는 compound coefficientb0~b7 모델의 크기를 결정하는 핵심 파라미터φ 값이 커질수록 모델의 크기가 커짐dep..
2025.02.04
no image
Neck
NeckNeck의 등장 배경Backbone에서 나온 여러 feature map을 함께 활용하여 다양한 scale의 객체를 더 잘 탐지하기 위해Neck(예: FPN)의 주요 목적다양한 level의 feature map 활용서로 다른 scale의 정보를 결합상향식, 하향식 정보 전달을 통한 feature 보강결과적으로 다양한 크기의 객체 검출 성능 향상FPN 구현FPN (Feature Pyramid Network)에서 (1) 다양한 feature map들의 채널을 동일하게 맞춰주는 단계, (2) channel을 맞춰준 feature map들을 top-down형식으로 적절히 섞어주는 단계, (3) 최종 3x3 convolution을 통과하여 RPN으로 입력될 feature를 만들어주는 단계에 해당하는 코드im..
2025.01.27
no image
Object Detection Library : MMDetection, Detectron
🔑 Object Detection Library, MMDetection, DetectronObject Detection LibraryMMdetectionMMDetection GithubMMDetection의 주요 config 구성model: 모델 구조 정의data: 데이터 관련 설정optimizer: 최적화 방법 설정scheduler: learning rate 스케줄링runtime: 학습 환경 설정MMdetection pipelineBackbone: 입력 이미지를 특징 맵으로 변형한다→ Backbone은 입력 이미지로부터 hierarchical한 feature map을 추출하는 역할을 수행함.NeckBackbone에서 추출된 feature map들을 재구성하고 보강함FPN(Feature Pyramid ..
2025.01.24
no image
Object Detection Overview
🔑 Object Detection, Detector, One-Stage Detector, Two-Stage Detector, Precision & RecallObject Detecion객체의 위치를 찾는 localization과 객체의 종류를 분류하는 classification을 모두 수행하는 task객체의 위치를 탐지하고 객체의 종류를 분류하는 2가지 과정을 나누지 않고 한번에 수행하면 detection 속도가 훨씬 빠르다.YOLO와 같은 one-stage detector가 이런 방식을 사용하며 더 빠른 속도를 실현함Object detection은 자율 주행, OCR, CCTV 보안에 사용될 수 있는 기술객체의 위치를 완전히 결정하기 위해서 필요한 정보class 종류bounding box의 중심점 좌..
2025.01.17
no image
Computational Imaging
🔑 Computational Imaging, Training data, Advanced loss functionsComputational ImagingComputational Photography이미지 생성과 처리에 컴퓨팅 기술을 추가하는 분야기존의 사진 촬영 방법에 컴퓨터 알고리즘을 결합하여 새로운 방식으로 이미지를 생성하고 개선하는 방법을 제시In-Camera Pipeline (카메라 내 파이프라인)In-camera pipeline은 카메라가 이미지를 캡처할 때 처리하는 단계센서 데이터 캡처: 카메라 센서가 빛을 감지하여 디지털 신호로 변환원시 데이터 처리: 센서에서 받은 원시 데이터를 처리하여 이미지로 변환노이즈 제거: 이미지에서 노이즈를 제거하여 품질을 향상시킴화이트 밸런스 조정: 색 온도를 조..
2025.01.16
no image
Object Detection & R-CNN
🔑 Detection, One-stage Detector, Two-stage Detector, Instance segmentation, R-CNNObject DetectionClassification + Box localizationObject detection architecturesTwo-stage detector : R-CNNRegion-based Convolutional Neural NetworkRegion Proposal (후보 영역 추출)입력 이미지를 받으면, 먼저 Selective Search와 같은 기법을 사용해 이미지에서 객체가 있을 가능성이 있는 후보 영역(Region Proposal)을 수천 개 생성이미지 내에 객체가 존재할 가능성이 높은 영역을 미리 추정하는 과정Feature Ex..
2025.01.15

Object Detection 개인적으로 헷갈리기 쉬운 내용들



Detector 구조의 구성 요소

  • CornerNet
    • Anchor-free 방식의 one-stage detector
    • RPN을 사용하지 않음
    • [Input → Backbone → Dense prediction] 구조
  • Fast R-CNN
    • RPN이 없음 (selective search 사용)
    • Neck 구조가 없음
    • [Input → Backbone → Sparse prediction] 구조
  • YOLO
    • One-stage detector로 RPN 없음
    • [Input → Backbone → Dense prediction] 구조
    • Sparse prediction 대신 Dense prediction 사용
  • Faster R-CNN + FPN
    • Input: 입력 이미지
    • Backbone: 특징 추출 (ResNet 등)
    • Neck: FPN (Feature Pyramid Network)
    • RPN: Region Proposal Network
    • Sparse prediction: RoI Head에서의 예측
    • 문제에서 제시한 5가지 구성요소를 모두 포함
  • RetinaNet
    • One-stage detector로 RPN 없음
    • [Input → Backbone → Neck → Dense prediction] 구조
    • Focal loss를 사용하는 것이 특징





YOLO v1 loss

  1. 첫 번째 부분
    • (x,y) 좌표와 (w,h) 크기에 대한 loss
    • 박스의 위치와 크기를 예측하는 localization loss
  2. 두 번째 부분
    • 객체가 있을 확률(C)에 대한 loss
    • confidence score를 예측하는 confidence loss
  3. 세 번째 부분
    • 클래스 확률(p)에 대한 loss
    • 객체의 클래스를 분류하는 classification loss

localization / confidence / classification

  • 수식의 순서와 정확히 일치
  • 각 loss의 역할을 정확히 반영





Object detection evaluation metric

  • FLOPS (Floating Point Operations Per Second)
    → Object detection에서 사용되는 metric
    • 모델의 연산량을 측정
    • 모델의 효율성 평가
    • 실제 구현 시 중요한 고려사항

  • FPS (Frames Per Second)
    → Object detection에서 사용되는 metric
    • 실시간 처리 속도 측정
    • 초당 처리할 수 있는 프레임 수
    • 실시간 응용에서 중요한 지표

  • FID (Fréchet Inception Distance)
    → Object detection metric이 아님
    • GAN 모델의 성능 평가에 사용되는 지표
    • 생성된 이미지의 품질 평가
    • Object detection과는 관련이 없음

  • mIoU (mean Intersection over Union)
    → Object detection에서 사용되는 metric
    • 예측 박스와 실제 박스의 겹침 정도 측정
    • 위치 예측의 정확도 평가
    • Segmentation에서도 사용됨

  • mAP (mean Average Precision)
    → Object detection에서 사용되는 metric임
    • 검출 정확도를 종합적으로 평가
    • PR 커브의 면적 계산
    • 가장 널리 사용되는 평가 지표





Precision & Recall

  • 먼저 각 요소를 파악
    • Ground truth (실제 고양이): 4마리
    • Positive prediction (빨간 박스): 4개
    • True Positive (TP): (실제 고양이를 맞게 예측)
    • False Positive (FP): (고양이가 아닌 것을 고양이로 예측)
    • False Negative (FN): (놓친 고양이)
  • 총 8개를 검출하고 그 중 3개가 옳은 검출이므로, precision = 3/8 = 0.375
  • 총 4개의 GT가 있고 그 중 3개를 검출했으므로, recall = 3/4 = 0.75





Corner Pooling

CornerNet에서는 corner를 결정하기 위해 corner pooling이라는 방법을 사용한다. 그림과 같은 두 개의 feature maps의 일부가 주어지고 각각에 대해 수직, 수평방향으로 pooling을 할 때, corner pooling의 output map에서 (a), (b), (c), (d) 에 들어갈 숫자의 순서로 옳은 것

Corner pooling은 각 feature map에 대해 horizontal pooling, vertical pooling을 수행한 후 element-wise summation을 수행한다.





DarkNet Output

YOLO v1에서는 입력 이미지를 SxS의 grid cell로 분할하며, 각 cell마다 B개의 bounding box와 confidence score, 그리고 각 cell마다 C개의 class에 대한 conditional class probabilities를 예측한다. Input image의 shape은 288x288x3이며 S=12, B=3, C=100일 경우, YOLO v1 DarkNet의 최종 output으로 나오는 feature map의 shape (W, H, C)이다. 이 때 W+H+C의 값으로 옳은 것

주어진 조건

  • Input image: 288x288x3
  • Grid cell: SxS (S=12)
  • 각 cell당 B개의 bounding box와 confidence score (B=3)
  • 각 cell당 C개의 클래스에 대한 확률 (C=100)

Output shape 계산

  1. 각 Grid cell당 예측해야 하는 값

    • B개의 bounding box 좌표 (x,y,w,h): 4×B
    • B개의 confidence score: 1×B
    • C개의 클래스 확률: C
  2. 전체 계산

    • Cell당 필요한 값 = (4+1)×B + C
    • = 5×3 + 100
    • = 15 + 100
    • = 115
  3. 최종 output shape

    • W = H = S = 12 (grid size)
    • C = 115 (각 cell당 예측값)
    • 따라서 12×12×115 = 139

YOLO v1은 각 grid cell별로 B개의 bounding box(4개의 좌표)와 confidence score, 그리고 C개의 conditional class probabilities를 예측한다. 즉, 각 cell마다 B5+C 개의 예측값이 나오기 때문에 DarkNet의 최종 output shape은 (S, S, (B5+C))이다. 따라서 문제에서 주어진 것처럼 S=12, B=3, C=100일 경우 output shape은 (W, H, C) = (12, 12, (3*5+100)) = (12, 12, 115)이며, W+H+C = 12+12+115 = 139이다





Computing AP

PR Curve를 그리기 위한 표를 보고 실제 AP가 어떻게 계산되는지 직접 계산해 보자.

1x0.2 + 0.8x0.2 + 0.71x0.1 + 0.6x0.1 = 0.49



'Study - AI > Object Detection' 카테고리의 다른 글

Advanced Object Detection  (0) 2025.04.02
EfficientNet & EfficientDet  (0) 2025.02.04
Neck  (0) 2025.01.27
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24
Object Detection Overview  (0) 2025.01.17



Cascade RCNN

Cascade RCNN은 학습할 bounding box의 IOU threshold를 0.5에서 더 높여보면 어떨까라는 아이디어에서 출발했음. Cascade RCNN은 Iterative BBox at Inference와 Intergral Loss를 결합하여 기존의 Faster RCNN보다 더 좋은 성능을 나타낸다

  • Cascade RCNN은 Iterative BBox at Inference와 Intergral Loss를 사용해서 Bbox pooling을 반복 수행할 시 성능 향상되는 것, IOU threshold가 다른 Classifier가 반복될 때 성능 향상 되는 것을, IOU threshold가 다른 RoI head를 cascade로 쌓을 시 성능 향상되는 것을 증명했다.

Deformable convolution

  • Cascade R-CNN의 주요 특징
    • 기존 컨볼루션의 고정된 수용 영역을 개선
    • 객체의 형태에 따라 동적으로 수용 영역을 조절
    • Iterative BBox와 결합하여 성능 향상
    • 특히 변형이 있는 객체 검출에 효과적

Integral Loss

  • 주로 human pose estimation에서 사용되는 loss 함수임

Transformer

  • DETR 등에서 사용됨

Sliding window

  • Cascade R-CNN의 구성 요소가 아님
  • Region proposal 기반 방식을 사용함

Window Multi-Head Attention

  • Transformer 계열의 기술임
  • Swin Transformer 등에서 사용됨





ViT based detector

ViT를 사용하는 Detection network

  • Swin은 Shifted Window Multi-Head Attention를 통해 receptive field가 제한되는 단점을 해결했다
    • Window 기반 self-attention의 한계를 극복
    • Shifted window 방식으로 window 간 정보 교환 가능
  • Swin은 Shifted Window Multi-Head Attention와 Window Multi-Head Attention를 동시에 사용한다
    • 두 가지 attention 메커니즘을 번갈아가며 사용
    • 연산 효율성과 성능을 모두 확보
  • Swin은 position embedding은 사용하나 class embedding은 사용하지 않는다
    • Position embedding으로 위치 정보 인코딩
    • Class embedding은 사용하지 않는 특징
  • 기타 등등
    • DETR은 end-to-end 학습이 가능
    • NMS와 같은 후처리 과정이 필요없음
    • Set prediction으로 직접 고정된 수의 객체 예측

Transformer & ViT

  • Self attention mechanism의 attention 수식에는 softmax를 포함한다

    • Attention(Q,K,V) = softmax(QK^T/√d)V
    • Softmax로 attention score를 정규화
  • MLP head에는 class embedding vector를 입력하여 최종 결과를 추출한다

    • [CLS] 토큰의 출력을 MLP head에 입력
    • 최종 분류 결과 도출
  • ViT는 learnable embedding앞에 class embedding을 추가 해준다

    • [CLS] 토큰을 patch embedding 시퀀스의 맨 앞에 추가
    • 이 토큰이 전체 이미지의 특징을 종합
  • Transformer는 self attention 메커니즘을 활용 NLP에서 long range dependency를 해결한다

    • Self attention으로 모든 위치 간의 관계 고려
    • RNN의 장거리 의존성 문제 해결
  • ViT는 image를 flatten해 3d로 변형 후 learnable embedding 처리를 한다?
    → 틀린 설명

    • Image는 patch 단위로 분할 후 flatten하여 1D로 변형됨
    • 3D가 아닌 2D embedding으로 변환
    • 순서: Image → Patch분할 → Flatten(1D) → Linear Projection → Embedding





YOLO v4

  • Enhancement of receptive field
    → BOS
    • SPP, ASPP, RFB 등의 기법
    • 연산량이 증가하며 receptive field 확장
    • Inference 시간에 영향을 미침
  • Activation function
    → BOS
    • Mish 등의 새로운 활성화 함수
    • 추가 연산이 필요함
    • Inference 속도에 영향을 미침
  • Data augmentation
    → BOF
    • Cutmix, Mosaic 등
    • 학습 시에만 사용되고 추론 시에는 사용되지 않음
    • Inference 비용 증가 없이 성능 향상
  • Feature Integration
    → BOS
    • FPN, PAN, BiFPN 등
    • 추가적인 네트워크 구조 필요
    • Inference 시간 증가
  • Post-processing method
    → BOS
    • DIoU-NMS 등
    • 추가 연산 필요
    • Inference 시간에 영향을 미침





M2Det

M2Det 모델의 FFM(Feature Fusion Module) 구조가 다음 그림과 같이 구성되어 있고 각각의 input shape이 (512, 32, 32), (256, 128, 128)일 때, output feature map의 shape인 (C, H, W)

입력값

  1. (512, 32, 32)
  2. (256, 128, 128)

과정

  1. 첫 번째 입력 (512, 32, 32)의 처리
    • Conv: 512→128채널, 3x3, padding=1
      • (512, 32, 32) → (128, 32, 32)
    • Upsample 4x4
      • (128, 32, 32) → (128, 128, 128)
  2. 두 번째 입력 (256, 128, 128)의 처리
    • Conv: 256→64채널, 3x3, padding=1
      • (256, 128, 128) → (64, 128, 128)
  3. Concat 연산
    • 첫 번째 경로: (128, 128, 128)
    • 두 번째 경로: (64, 128, 128)
    • Concat 결과: (192, 128, 128)

따라서 output feature map의 shape는 (192, 128, 128)이 됨





CornerNet

  • Anchor box의 주요 단점:
    • Box의 크기, 비율 등 많은 hyperparameter 필요
    • 이러한 설계 과정이 복잡하고 번거로움
    • 많은 수의 anchor box 생성 필요
    • 대부분이 negative sample로 class imbalance 문제 발생
    • 학습 효율성이 떨어짐



'Study - AI > Object Detection' 카테고리의 다른 글

Object Detection Wrap-Up  (0) 2025.04.05
EfficientNet & EfficientDet  (0) 2025.02.04
Neck  (0) 2025.01.27
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24
Object Detection Overview  (0) 2025.01.17

EfficientNet

다음은 EfficientNet에서 parameter를 통해 스케일을 설정하는 방법이다. EfficientNet은 b0부터 b7까지 다양한 모델 구조가 존재하는데, 이 구조의 종류를 결정하는 parameter → phi(φ)

  • alpha(α)
    → α는 depth scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임
  • beta(β)
    → β는 width scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임
  • gamma(γ)
    → γ는 resolution scaling을 조절하는 상수이며, 그리드 서치를 통해 미리 정해진 값임
  • phi(φ)
    → φ는 compound coefficient
    • b0~b7 모델의 크기를 결정하는 핵심 파라미터
    • φ 값이 커질수록 모델의 크기가 커짐
    • depth, width, resolution 모두를 동시에 조절
    • b0는 φ=0, b7은 φ=7을 의미

α, β, γ는 그리드 서치로 미리 정해지는 상수값으로,

  • 모델 구조를 결정하지 않음
  • 제약조건 α·β²·γ²≈2를 만족하도록 설정됨





EfficientDet

  • EfficientDet b0부터 b7까지 증가함에 따라 input image의 해상도는 증가한다
    • b0: 512x512
    • b7: 1536x1536
    • compound scaling에 따라 resolution도 증가
  • EfficientNet과 동일한 scaling 방식을 활용하기 위해, backbone으로 efficientNet b0~b6을 사용한다
    • EfficientNet을 backbone으로 사용
    • Compound scaling 방식 적용
  • Object detection은 실생활에 사용되기 위해 efficiency가 중요하기 때문에, 더 높은 정확도와 효율성을 가지는 구조를 만들고자 제안되었다
    • 실시간 처리가 필요한 응용
    • 정확도와 효율성의 균형 추구
  • 서로 다른 feature map을 단순합하지 않고, 각각의 input을 위한 학습 가능한 weight를 두는 BiFPN을 사용한다
    • Feature map 간의 가중치 학습
    • 더 효과적인 feature fusion
  • BiFPN에서 weight는 softmax를 통과하므로 항상 양수임
    • 이는 각 레이어의 상대적 중요도를 나타냄
    • 음수값이 될 수 없도록 설계됨





Scailing

딥러닝 모델의 성능을 효율적으로 올리기 위해 사용하는 scale up 방식으로는 대표적으로 (1) width scaling, (2) depth scaling, (3) resolution scaling 이 있다. EfficientNet에서는 이 세가지를 모두 사용하여 최적의 scaling 방법을 제안했는데, 해당 scaling 방식은 Compound Scailing

  1. Width Scaling (네트워크 너비 조절)
    • 각 레이어의 채널 수(필터 수)를 늘리는 방식
    • 더 많은 특징을 병렬적으로 학습할 수 있음
    • 예: 32채널 → 64채널로 증가
    • 장점: 더 풍부한 특징 추출 가능
    • 단점: 파라미터 수가 크게 증가
  2. Depth Scaling (네트워크 깊이 조절):
    • 레이어의 수를 늘리는 방식
    • 더 복잡한 특징을 순차적으로 학습할 수 있음
    • 예: ResNet-18 → ResNet-50처럼 레이어 수 증가
    • 장점: 더 복잡한 패턴 학습 가능
    • 단점: 그래디언트 소실 문제 발생 가능
  3. Resolution Scaling (입력 해상도 조절):
    • 입력 이미지의 해상도를 키우는 방식
    • 더 세밀한 특징을 포착할 수 있음
    • 예: 224×224 → 380×380으로 증가
    • 장점: 미세한 디테일 포착 가능
    • 단점: 메모리 사용량과 연산량 증가

Compound Scaling의 특징:

  • 위 세 가지 방식을 동시에 균형있게 조절
  • φ(compound coefficient)를 통해 통합적으로 제어
  • depth: d = α^φ
  • width: w = β^φ
  • resolution: r = γ^φ
  • α, β, γ는 작은 그리드 서치로 찾은 상수
  • 세 가지 scaling이 서로 상호작용하며 최적의 성능 도출



'Study - AI > Object Detection' 카테고리의 다른 글

Object Detection Wrap-Up  (0) 2025.04.05
Advanced Object Detection  (0) 2025.04.02
Neck  (0) 2025.01.27
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24
Object Detection Overview  (0) 2025.01.17

Neck

Ja2Hw
|2025. 1. 27. 23:00

Neck

Neck의 등장 배경

Backbone에서 나온 여러 feature map을 함께 활용하여 다양한 scale의 객체를 더 잘 탐지하기 위해

Neck(예: FPN)의 주요 목적

  • 다양한 level의 feature map 활용
  • 서로 다른 scale의 정보를 결합
  • 상향식, 하향식 정보 전달을 통한 feature 보강
  • 결과적으로 다양한 크기의 객체 검출 성능 향상

FPN 구현

FPN (Feature Pyramid Network)에서 (1) 다양한 feature map들의 채널을 동일하게 맞춰주는 단계, (2) channel을 맞춰준 feature map들을 top-down형식으로 적절히 섞어주는 단계, (3) 최종 3x3 convolution을 통과하여 RPN으로 입력될 feature를 만들어주는 단계에 해당하는 코드

import torch.nn.functional as F

laterals = [ lateral_conv(inputs[i]) for i, lateral_conv in enumerate(self.lateral_convs) ]

for i in range(3, 0, -1):
        prev_shape = laterals[i-1].shape[2:]
        laterals[i-1] += F.interpolate(laterals[i], size=prev_shape)  # Fill this line

outs = [ self.fpn_convs[i](laterals[i]) for i in range(4) ]
  • laterals[i]를 이전 레벨의 크기(prev_shape)로 interpolate
  • 크기가 맞춰진 feature map을 더해줌 (+=)
  • 이를 통해 상위 레벨의 의미론적 정보와 하위 레벨의 세부 정보가 결합됨

DetectoRS

Recursive Feature Pyramid (RFP) : neck의 정보를 다시 backbone에 입력하여 feature pyramid를 반복함으로써, backbone의 low level에서도 high level의 정보를 학습할 수 있도록 하는 모듈

DetectoRS의 주요 특징

  • Neck의 output을 다시 backbone에 feedback
  • Feature pyramid를 반복적(recursive)으로 생성
  • 저수준 특징에도 고수준 정보를 포함시킴
  • 이를 통해 더 풍부한 특징 표현이 가능



'Study - AI > Object Detection' 카테고리의 다른 글

Object Detection Wrap-Up  (0) 2025.04.05
Advanced Object Detection  (0) 2025.04.02
EfficientNet & EfficientDet  (0) 2025.02.04
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24
Object Detection Overview  (0) 2025.01.17



Object Detection Library

MMdetection

MMDetection Github

MMDetection의 주요 config 구성

  • model: 모델 구조 정의
  • data: 데이터 관련 설정
  • optimizer: 최적화 방법 설정
  • scheduler: learning rate 스케줄링
  • runtime: 학습 환경 설정

MMdetection pipeline

  • Backbone: 입력 이미지를 특징 맵으로 변형한다
    → Backbone은 입력 이미지로부터 hierarchical한 feature map을 추출하는 역할을 수행함.
  • Neck
    • Backbone에서 추출된 feature map들을 재구성하고 보강함
    • FPN(Feature Pyramid Network)과 같은 구조가 대표적임
    • Anchor 생성은 DenseHead(RPN)의 역할임
  • DenseHead: 특징 맵의 dense location을 수행하는 부분이다
    → 올바른 설명임. Dense prediction을 수행하며, RPN(Region Proposal Network)이 여기에 해당함.
  • RoIHead: RoI 특징을 입력으로 받아 box 분류, 좌표 회귀 등을 예측하는 부분이다
    → RoI pooling/align을 통해 얻은 특징을 바탕으로 최종 객체 분류와 box 위치를 예측함.
  • Backbone: 예시로는 ResNet, VGG 등이 있다
    → 대표적인 CNN 백본 네트워크들

간단한 코드 분석

register_all_modules()

from mmdet.utils import register_all_modules

register_all_modules()

# 이후 MMDetection의 다른 기능들을 사용...

register_all_modules() 함수는 MMDetection 프레임워크에서 중요한 역할을 하는 함수임…

  1. 모듈 등록: MMDetection에서 사용되는 다양한 모듈들(예: 백본 네트워크, 디텍션 헤드, 로스 함수 등)을 자동으로 등록함
  2. 동적 임포트: 필요한 모듈들을 동적으로 임포트하여 시스템에 로드함
  3. 설정 용이성: 사용자가 직접 모든 모듈을 수동으로 임포트하지 않아도 되게 해줌
  4. 확장성: 새로운 모듈을 추가했을 때 자동으로 인식되도록 함

이 함수를 호출함으로써, MMDetection의 모든 컴포넌트들이 시스템에 등록되어 설정 파일에서 쉽게 사용할 수 있게 됨.

일반적으로 MMDetection을 사용하는 스크립트의 시작 부분에서 이 함수를 호출하여 필요한 모든 모듈을 초기화함


setup_cache_size_limit_of_dynamo()

from mmdet.utils import setup_cache_size_limit_of_dynamo

setup_cache_size_limit_of_dynamo()
  • PyTorch의 DynamoCache 크기를 제한하는 데 사용된다
  • 메모리 사용을 최적화하기 위해 DynamoCache의 크기를 제한함
  • 메모리 최적화가 필요한 경우에 사용된다
  • PyTorch의 Dynamo 컴파일러 캐시에 특화된 기능

Runner.from_cfg(cfg) vs RUNNERS.build(cfg)

결과적으로는 두 방법 모두 동일한 Runner 인스턴스를 생선함

→ cfg(설정)이 같다면 생성된 내용도 같을 것!

  1. 메서드 출처

    • Runner.from_cfg(cfg): Runner 클래스의 클래스 메서드
    • RUNNERS.build(cfg): RUNNERS 레지스트리의 build 메서드
  2. 유연성

    • Runner.from_cfg(cfg): 특정 Runner 클래스에 종속적
    • RUNNERS.build(cfg): 더 유연하며, 설정에 따라 다양한 Runner 유형을 생성할 수 있음
  3. 사용 방식

    • Runner.from_cfg(cfg): 직접 Runner 클래스를 통해 인스턴스를 생성
    • RUNNERS.build(cfg): 레지스트리를 통해 간접적으로 Runner 인스턴스를 생성
  4. 확장성

    • Runner.from_cfg(cfg): Runner 클래스 확장 시 새로운 메서드 구현이 필요할 수 있음
    • RUNNERS.build(cfg): 새로운 Runner 유형을 쉽게 추가하고 레지스트리에 등록할 수 있음
  5. 설정 의존성

    • Runner.from_cfg(cfg): 설정에 특정 Runner 클래스가 명시되어 있어야 함
    • RUNNERS.build(cfg): 설정에 Runner 유형이 지정되어 있으면, 그에 따라 적절한 Runner를 생성
  6. 일반적인 사용

     # Runner.from_cfg(cfg) 사용
     from mmdet.engine import Runner
     runner = Runner.from_cfg(cfg)
    
     # RUNNERS.build(cfg) 사용
     from mmdet.registry import RUNNERS
     runner = RUNNERS.build(cfg)

→ RUNNERS.build(cfg)는 최근 MMDetection 버전에서 더 선호되는 방식이라고 함. 이 방법은 모듈화와 확장성을 개선하며, 다양한 Runner 구현을 더 쉽게 지원할 수 있게 해준다





Detectron2

Detectron2 Github

Detectron2의 주요 config 구조

  • MODEL: 모델 구조 관련 설정
  • SOLVER: 학습 관련 설정
  • DATASETS: 데이터 관련 설정
  • INPUT: 입력 처리 관련 설정

solver : 모델 관련 config가 아닌 학습 관련 config

  • 학습률, optimizer 등 학습 관련 설정을 포함
  • MODEL이 아닌 SOLVER 카테고리에 속함
  • 모델의 구조나 파라미터와는 직접적인 관련이 없음
  • IMS_PER_BATCH : 배치당 이미지 수
  • BASE_LR : Learning Rate
  • MAX_ITER : 최대 학습 iteration 수



'Study - AI > Object Detection' 카테고리의 다른 글

Object Detection Wrap-Up  (0) 2025.04.05
Advanced Object Detection  (0) 2025.04.02
EfficientNet & EfficientDet  (0) 2025.02.04
Neck  (0) 2025.01.27
Object Detection Overview  (0) 2025.01.17

🔑 Object Detection, Detector, One-Stage Detector, Two-Stage Detector, Precision & Recall


Object Detecion

  • 객체의 위치를 찾는 localization과 객체의 종류를 분류하는 classification을 모두 수행하는 task
  • 객체의 위치를 탐지하고 객체의 종류를 분류하는 2가지 과정을 나누지 않고 한번에 수행하면 detection 속도가 훨씬 빠르다.
    • YOLO와 같은 one-stage detector가 이런 방식을 사용하며 더 빠른 속도를 실현함
  • Object detection은 자율 주행, OCR, CCTV 보안에 사용될 수 있는 기술
  • 객체의 위치를 완전히 결정하기 위해서 필요한 정보
    • class 종류
    • bounding box의 중심점 좌표 (x, y)
    • height
    • width
  • Segmentation은 모든 pixel을 분류하여 객체를 탐지하는 반면, object detection은 bounding box를 통해 객체의 위치를 지정함





Object Detector

  • DETR
    → 2020년 Facebook AI에서 발표한 모델로, Transformer 구조를 object detection에 처음 적용한 모델. end-to-end로 학습이 가능하며, NMS(Non-Maximum Suppression)와 같은 후처리 과정이 필요없다는 장점이 있음
  • SSD (Single Shot Detector)
    → CNN 기반의 one-stage detector. 여러 scale의 feature map을 사용하여 다양한 크기의 객체를 검출할 수 있음
  • YOLO (You Only Look Once)
    → CNN 기반의 대표적인 one-stage detector. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용.
  • R-CNN (Region-based CNN)
    → CNN 기반의 초기 two-stage detector. selective search를 통해 region proposal을 생성하고, 각 영역에 대해 CNN을 적용함
  • Faster R-CNN
    → CNN 기반의 two-stage detector로, R-CNN의 개선된 버전. Region Proposal Network (RPN)를 도입하여 proposal 생성 속도를 크게 향상시켰음

Detector 구조의 구성 요소

  • Fast R-CNN
    → RPN이 없음. selective search를 사용하여 region proposal을 생성함. [Input → Backbone → Sparse prediction] 구조를 가짐.
  • RetinaNet
    → One-stage detector로 RPN이 없음. [Input → Backbone → Neck(FPN) → Dense prediction] 구조를 가짐. Focal Loss를 도입하여 class imbalance 문제를 해결한 모델임.
  • CornerNet
    → One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 객체의 왼쪽 상단과 오른쪽 하단 corner를 예측하는 방식을 사용함.
  • YOLO
    → One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 단순한 구조로 빠른 속도를 보여줌.
  • Faster R-CNN + FPN
    → Two-stage detector로 문제에서 제시한 모든 구성요소를 포함함. [Input → Backbone → Neck(FPN) → RPN → Sparse prediction]의 구조를 가지며, FPN을 통해 다양한 scale의 feature를 효과적으로 활용할 수 있음.

Object detection evaluation metric

  • mIoU (mean Intersection over Union)
    → Object detection의 metric임. 예측한 bounding box와 실제 ground truth box 간의 겹치는 영역을 평가하는 지표임. segmentation에서도 사용됨.
  • FID (Fréchet Inception Distance)
    → GAN과 같은 생성 모델의 성능을 평가하는 metric임. 생성된 이미지와 실제 이미지의 특징 분포 간의 차이를 측정함. Object detection과는 관련이 없음.
  • FPS (Frames Per Second)
    → Object detection의 metric임. 모델의 실시간 처리 능력을 나타내는 속도 지표임. 특히 실시간 객체 탐지가 필요한 응용에서 중요함.
  • mAP (mean Average Precision)
    → Object detection의 가장 대표적인 metric임. 각 클래스별 AP(Average Precision)의 평균값을 계산한 것으로, 검출 정확도를 평가함.
  • FLOPS (Floating Point Operations Per Second)
    → Object detection의 metric임. 모델의 연산량을 나타내는 지표로, 모델의 효율성을 평가할 때 사용함.

One/Two-stage detectors

  • SSD (Single Shot Detector)
    → One-stage detector임. 단일 네트워크에서 바로 객체 검출을 수행하며, region proposal 과정이 없음.
  • FasterRCNN
    → Two-stage detector임. 1단계에서 RPN으로 region proposal을 생성하고, 2단계에서 classification과 box regression을 수행함.
  • R-CNN
    → Two-stage detector임. 1단계에서 selective search로 region proposal을 생성하고, 2단계에서 CNN을 통해 특징을 추출하여 분류를 수행함.
  • RetinaNet
    → One-stage detector임. FPN 구조와 Focal Loss를 사용하여 class imbalance 문제를 해결한 모델임.
  • YOLO
    → One-stage detector임. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용하며, 빠른 속도가 특징임.





Precision & Recall

TP: 10

TN: 15

FP: 15

FN: 15

precision : TP/(TP+FP) = 10 / (10+15)

precision은 모델이 찾은 모든 detections 중에 정답의 비율을 의미

recall : TP/(TP+FN) = 10 / (10+15)

recall은 모든 정답들 중에 모델이 맞춘 정답의 비율을 의미

Evaluation metric in OD

Object detection 에 평가지표에는 단순히 성능 뿐만 아니라 속도를 평가하는 지표들

→ Recall, AP, IoU 은 모두 성능을 평가하는 지표 중 하나인 mAP를 계산하기 위해 필요한FF 개념

FLOPs

FLOPs 는 model이 얼마나 빠르게 동작하는지 측정하는 metric이다. 아래 그림과 같은 행렬곱에 대하여 FLOPs를 계산했을 때 옳게된 FLOPs

MUL(3x2, 2x3) = 3x3

  • 각 셀 당 연산: 𝑎11 ∗ 𝑏11 + 𝑎12 ∗ 𝑏21
  • 곱셈 • 한 셀 당 2번, 3 x 3 x 2 = 18번
  • 덧셈 • 한 셀 당 1번, 3 x 3 x 1 = 9번 이기 때문에 총 FLOPS는 27





1-Stage Detectors

  • 전체 이미지에 대해 특징 추출, 객체 검출이 이루어진다.
  • 1 stage detector의 예시로는 다음과 같은 모델들이 있음 : YOLO, SSD, RetinaNet, ...
  • 속도가 매우 빠르다 (Real-time detection)
  • Localization, Classification이 동시에 진행한다.
  • 1 stage detector도 충분한 맥락적 이해가 가능함
  • RetinaNet과 같은 모델은 높은 정확도를 보여줌
  • FPN과 같은 구조를 통해 다양한 scale의 정보를 활용
  • 최신 1 stage detector는 2 stage와 비슷하거나 더 나은 성능을 보이기도 함





2-Stage Detectors

R-CNN

R-CNN은 object detection 분야에 CNN을 적용시킨 2-stage detector의 초기 모델로, 다음과 같은 pipeline으로 동작한다

  1. 입력 이미지에서 Selective Search를 통해 약 2k개의 후보 영역(RoI)을 추출한다.
  2. 추출된 RoI를 모두 동일한 사이즈로 warping한다.
  3. Warping된 RoI를 모두 CNN에 넣어 feature vector를 추출한다.

4-1. 추출된 feature vector를 SVM에 넣어 각 영역의 클래스를 예측한다.

4-2. 추출된 feature vector를 Regression에 넣어 각 영역의 bounding box를 예측한다.


Fast R-CNN

2 stage 초기 모델인 R-CNN은 1) 약 2000개의 RoI마다 모두 CNN 연산을 따로 수행해야 하며, 2) CNN의 fc layer의 입력 사이즈에 맞추기 위해 RoI를 강제로 warping해야한다는 단점이 있었다.

Fast R-CNN은 이 단점들을 해결하기 위해 1) 단일 CNN 연산으로 feature map을 추출하고, RoI를 이 feature map상에 매핑하는 RoI projection를 사용하여 연산량을 크게 줄였으며, 2) 매핑된 feature map상의 각 RoI들은 고정된 크기의 vector로 변환해주는 RoI pooling를 사용하여 성능과 속도를 모두 개선할 수 있었다.

  • RoI projection: 입력 이미지를 통째로 CNN에 통과시켜 feature map을 추출하고, 입력 이미지로부터 따로 추출한 RoI를 feature map 위에 그대로 매핑하는 방법을 사용하여 약 2000번의 CNN 연산을 단 한번으로 줄일 수 있었다.
  • RoI pooling: CNN의 fc layer에 입력하기 위해서는 고정된 크기의 벡터가 필요하기 때문에 R-CNN에서는 강제 warping을 사용하였다. 이 방식은 정보 또는 성능의 손실 가능성이 있기 때문에, SPPNet의 아이디어를 차용하여 고정된 크기의 vector로 변환해주는 RoI pooling 방식으로 대체하였다.

Faster R-CNN

Faster R-CNN에서 제안된 RPN(Region Proposal Network)의 동작 과정이다. 지정된 anchor box의 개수가 12개일 경우, 다음 (A,B,C)에 들어갈 숫자

  1. CNN에서 나온 feature map을 input으로 받음.
  2. Input feature map에 3x3x512 convolution을 수행하여 intermediate layer 생성.

3-1. Intermediate layer에 AxAxB convolution을 수행하여 binary classification 수행.

3-2. Intermediate layer에 AxAxC convolution을 수행하여 bounding box regression 수행.

  • A=1, B=24, C=48



'Study - AI > Object Detection' 카테고리의 다른 글

Object Detection Wrap-Up  (0) 2025.04.05
Advanced Object Detection  (0) 2025.04.02
EfficientNet & EfficientDet  (0) 2025.02.04
Neck  (0) 2025.01.27
Object Detection Library : MMDetection, Detectron  (0) 2025.01.24



Computational Imaging

Computational Photography

  • 이미지 생성과 처리에 컴퓨팅 기술을 추가하는 분야
  • 기존의 사진 촬영 방법에 컴퓨터 알고리즘을 결합하여 새로운 방식으로 이미지를 생성하고 개선하는 방법을 제시

In-Camera Pipeline (카메라 내 파이프라인)

In-camera pipeline카메라가 이미지를 캡처할 때 처리하는 단계

  1. 센서 데이터 캡처: 카메라 센서가 빛을 감지하여 디지털 신호로 변환
  2. 원시 데이터 처리: 센서에서 받은 원시 데이터를 처리하여 이미지로 변환
  3. 노이즈 제거: 이미지에서 노이즈를 제거하여 품질을 향상시킴
  4. 화이트 밸런스 조정: 색 온도를 조정하여 자연스러운 색상으로 만듦
  5. 노출 조정: 밝기를 조절하여 최적의 노출을 제공
  6. 샤프닝 및 색상 보정: 이미지의 선명도와 색상을 조정

Computational Photography: Adding Computation into the Imaging Pipeline

Computational photography는 전통적인 카메라 파이프라인에 알고리즘컴퓨터 비전 기술을 추가하여, 이미지 생성과 처리를 향상시키는 접근 방식인데, 이는 단순히 하드웨어의 성능을 개선하는 것을 넘어서, 소프트웨어적으로 이미지를 처리하는 방법도 변화시킴

  • HDR (High Dynamic Range) Imaging: 다양한 노출로 촬영된 여러 이미지를 결합하여 넓은 범위의 명암을 표현할 수 있는 이미지를 생성
  • Image Stitching: 여러 장의 사진을 합쳐서 넓은 범위의 파노라마 이미지를 만듦
  • Computational Refocusing: 사진을 찍은 후, 초점을 조절할 수 있는 기술
  • Low-light Enhancement: 어두운 환경에서도 선명하고 밝은 이미지를 생성하기 위해 복잡한 알고리즘을 사용

응용 분야

  • Low light image enhancement / Denoising
  • Super-resolution
  • Deblurring
  • High dyanmic range imaging
  • Stylization
  • Colorization 흑백 → 컬러
  • 이미지 복원 (Image Restoration): 손상된 이미지를 복구하거나, 노이즈를 제거하고 화질을 개선하는 작업
  • 이미지 개선 (Image Enhancement): 이미지를 더 선명하고, 색상과 밝기를 조정하여 시각적으로 더 매력적으로 만드는 작업
  • 3D 모델링: 2D 이미지에서 3D 형태를 재구성하여, 가상 현실이나 증강 현실에서 활용할 수 있는 3D 모델을 생성




 

Training data in computational imaging

Case 1 : Image Denoising

  • 이미지의 노이즈를 제거하여 선명하고 깨끗한 이미지를 복원하는 과정
    • 노이즈는 이미지 품질을 저하시키고, 특히 저조도 환경에서 더 두드러지게 나타날 수 있음

Camere noise

  • Pre-ADC Noise:
    • 이미지를 디지털로 변환하기 전, 즉 아날로그 신호 단계에서 발생하는 노이즈를 의미 → 저조도 조건에서는 이 노이즈가 더욱 두드러짐
  • Signal-dependent Noise (신호 의존 노이즈)
    • Photon shot noise광자(photon) 수의 변동으로 인해 발생하는 노이즈
      • 이는 양자화(quantization)와는 관련이 없으며, 물리적 현상으로 인해 생기는 노이즈
      • 저조도 환경에서는 광자가 적게 들어오기 때문에, 광자 수의 변동이 더 큰 영향을 미치게 되어 노이즈가 증가함
      • 이 노이즈는 신호 강도에 비례하여 발생하기 때문에, 밝은 부분에서는 노이즈가 덜 눈에 띄지만, 어두운 부분에서는 더 두드러지게 된다
  • Signal-Independent Noise (신호 독립 노이즈)
    • Read Noise
      • Read noise는 이미지 센서가 신호를 읽을 때 발생하는 노이즈
      • 센서의 전기적 특성에서 비롯되며, 신호의 강도와 관계없이 일정한 양의 노이즈를 추가
      • 이 노이즈는 센서의 읽기 과정에서 항상 발생하므로, 저조도에서도 일정하게 나타난다
    • Quantization Noise
      • Quantization noise는 아날로그 신호를 디지털로 변환할 때 발생하는 노이즈
      • 변환 과정에서 아날로그 신호의 연속적인 값을 디지털 값으로 변환하면서 발생하는 오차
      • 디지털 비트 깊이와 관련이 있으며, 비트 깊이가 낮을수록 더 많은 양의 노이즈가 발

 

Noise Model

  • 이미지에서 발생하는 노이즈를 수학적으로 표현하는 방법
  • Gaussian noise는 가장 일반적으로 사용되는 노이즈 모델로, 이미지의 품질을 저하시킬 수 있음

 

Gaussian Noise

  • 정규 분포를 따르는 노이즈로 통계적으로 가장 많이 발생하며 실제 상황에 잘 맞는 모델임
  • 수학적으로 단순하고 분석 및 처리가 쉬워서 가장 널리 사용되는 노이즈 모델

 

Mathematical Model

  1. 노이즈 모델:
    • 이미지의 노이즈를 수학적으로 표현할 때, 노이즈 없는 원본 이미지 x에 가우시안 노이즈 n이 추가되어 손상된 이미지 y를 형성
    • y = x + n
      • y = 노이즈가 추가된 이미지
      • x = 노이즈가 없는 원본 이미지
      • n = 가우시안 노이즈
  2. Gaussian Noise Distribution
  • Gaussian noise n은 정규 분포를 따름
    • 즉, 노이즈 n은 평균이 0이고, 분산이 σ^{2}인 정규 분포 N(0, σ^{2})를 따른다
  • 정규 분포: n ~ N(0, σ^{2})
  • σ^{2} = 노이즈의 분산 → 노이즈의 강도를 결정. 분산이 클수록 노이즈의 강도가 강해진다

 

가우시안 노이즈의 확률 밀도 함수

  • σ^{2} = 노이즈의 분산, n = 노이즈 값



Case 2 : Image super resolution

Image super resolution

  • Super resolution(초해상도)은 저해상도 이미지를 입력으로 받아 고해상도 이미지로 복원하는 기술
  • 이미지의 디테일을 향상시키고, 픽셀 수를 증가시켜 더 선명하고 정밀한 이미지를 생성하는 것을 목표로 함

 

Synthetic data generation

  • 실제 데이터를 사용하지 않고, 특정 목적에 맞는 인공 데이터를 생성하는 과정
  • 기계 학습이나 컴퓨터 비전에서 훈련 데이터를 확보하기 어려울 때 많이 사용
  1. 고해상도 자연 이미지 수집
    • 먼저, 고해상도 이미지들을 수집 → 이러한 이미지들은 원본 데이터로 사용되며, 이후 저해상도 이미지를 생성하기 위한 출발점
  2. 저해상도 이미지 생성
    • 고해상도 이미지를 다운샘플링(down-sampling)하여 저해상도 이미지를 생성
      • 다운샘플링은 이미지의 픽셀 수를 줄여 해상도를 낮추는 것
      • 이는 다양한 방법으로 수행될 수 있지만, 일반적으로 양큐빅 보간법(bicubic interpolation)과 같은 보간 기법이 사용된

 

주의점: 다운샘플링의 한계

  • 다운샘플링의 비정확성:
    • 다운샘플링은 실제 카메라가 이미지를 캡처할 때 수행하는 모든 복잡한 과정을 정확히 모사하지 않음.
      • 저해상도 이미지로 변환되면서 고해상도 이미지의 중요한 피쳐를 온전히 반영하지 않게 될 수 있다는 것이 단점이라는 말!
    • ex) 카메라에서 발생하는 노이즈, 렌즈의 비네팅, 색상 왜곡 등은 단순한 수학적 보간으로는 재현할 수 없음
  • 바이큐빅(양큐빅) 보간법 (Bicubic Interpolation)
    • 입력 이미지의 16개 인접 픽셀을 고려하여 새로운 픽셀 값을 계산
    • 그러나 이는 카메라의 실제 물리적 동작을 정확히 반영하지 않기 때문에, 원본 고해상도 이미지의 특성을 모두 보존하지 못할 수 있

 

RealSR

  • RealSRSuper Resolution(SR) 모델을 훈련시키기 위해, 보다 현실적인 훈련 데이터를 생성하는 방법 → 실제 카메라의 이미징 시스템을 모사한다!
    • 기존의 단순한 다운샘플링 방식 대신, 실제 카메라의 작동 방식을 모사하여 보다 현실적인 저해상도-고해상도 이미지 쌍을 만들어낸다
  • 실제 카메라를 이용해서 최대한 실제적인 데이터 취득을 시도함

실제 DSLR 카메라의 이미징 시스템을 얇은 렌즈 모델(Thin Lens)로 모사함.

→ 카메라 렌즈의 물리적 특성을 수학적으로 표현하며, 이를 통해 현실적인 저해상도 이미지를 생성

얇은 렌즈 모델은 렌즈의 초점 거리(f), 물체와 렌즈 사이의 거리(u), 이미지 센서와 렌즈 사이의 거리(v) 간의 관계를 나타내는 수식으로 정의

  • f: 렌즈의 초점 거리
  • u: 물체와 렌즈 사이의 거리
  • v: 이미지 센서와 렌즈 사이의 거리

실제 카메라에서 발생하는 포커싱, 왜곡, 심도, 노이즈 등 다양한 물리적 효과를 고려하여 보다 실제적인 저해상도 이미지를 생성할 수 있다

 

RealSR의 장점

  1. 현실성 향상: 실제 카메라의 이미징 시스템을 모사하여, 더 현실적인 저해상도 이미지를 생성할 수 있음 → SR 모델의 실제 성능을 높이는 데 도움이 됨
  2. 정밀한 훈련 데이터: 얇은 렌즈 모델을 사용하여 생성된 훈련 데이터는 기존 방법보다 정밀하고 세부적인 특징을 반영 → 모델이 더 나은 화질을 복원할 수 있게 됨

저해상도(LR)와 고해상도(HR) 쌍을 만듦 → 단순히 해상도 차이만 두고 생성하는 것보다, 카메라의 초점 거리(focal length)를 다르 촬영하면, 더 현실적인 차이를 반영할 수 있게 된다

  • 초점 거리가 짧을수록(광각 렌즈) 더 넓은 영역이 촬영되지만, 디테일이 상대적으로 줄어듦
  • 초점 거리가 길수록(망원 렌즈) 더 좁은 영역을 확대하여 촬영하지만, 더 많은 디테일을 포착



Case 3 : Image deblurring

  • deblurring은 블러(blur)로 인해 손상된 이미지를 복원하는 과정을 의미
  • 블러는 이미지가 흐릿해지거나 왜곡되는 현상으로, 주로 카메라 흔들림이나 객체의 움직임으로 인해 발생
  • Motion Blur (모션 블러):
    • 원인: 카메라가 흔들리거나 촬영하는 동안 객체가 움직이는 경우 발생
    • 특징: 블러가 이미지에서 특정 방향으로 길게 늘어나는 현상 등
      • ex) 움직이는 차량의 바퀴가 길게 늘어나 보임… 샤샤샥
  • Lens Blur (렌즈 블러):
    • 원인: 초점이 맞지 않아 발생 (지금 과정에서는 자세히 안 다룬다!)
    • 특징: 렌즈의 초점이 맞지 않아 이미지의 특정 부분이 흐릿해지거나 부드럽게 나타남

 

Deblurring 과정

  1. 블러 모델링
    • 블러 유형 파악: 먼저, 이미지에서 발생한 블러의 유형을 파악 → 모션 블러의 경우, 블러의 방향과 길이를 모델링할 수 있어야 함
    • 블러 커널 추정: 블러를 복원하기 위해, 블러의 커널(kernel)을 추정 → 커널은 블러가 적용된 방식과 패턴을 나타낸다
  2. 복원 알고리즘 적용:
    • 역블러 필터: 블러 커널을 알고 있거나 추정한 경우, 역블러 필터(deblurring filter)를 사용하여 블러를 제거
    • 최적화 기술: 역블러 필터를 적용하기 전에, 최적화 기술을 사용하여 블러 커널을 정확히 추정 → 이는 이미지의 선명도를 복원하는 데 중요
  3. 후처리:
    • 노이즈 제거: 디블러링 과정에서 노이즈가 추가될 수 있으므로, 노이즈를 줄이기 위한 후처리 단계를 포함할 수 있음
    • 세부 조정: 복원된 이미지의 품질을 개선하기 위해 추가적인 세부 조정을 수행

 

Deblurring 방법

  1. 데이터 기반 방법:
    • 딥러닝 접근법: CNN(Convolutional Neural Networks)이나 GAN(Generative Adversarial Networks)을 활용하여 블러를 제거하고 선명한 이미지를 복원
  2. 모델 기반 방법:
    • 복원 필터링: 전통적인 접근법으로, 복원 필터(restoration filters)를 사용하여 블러를 제거하는 방법 → 블러의 커널을 알고 있는 경우 효과적
  3. 주파수 도메인 방법:
    • 푸리에 변환: 이미지의 주파수 도메인에서 블러를 제거하는 방법으로, 블러의 주파수 특성을 분석하고 이를 반전시켜 복원

 

고속 촬영 카메라를 사용한 현실적인 데이터 획득 방법

  • 여러 개의 짧은 노출 프레임을 촬영하여 긴 노출 효과를 만들어내고, 이를 처리하여 실제적인 블러를 얻는 기술
  • 블러를 시뮬레이션하고 이해하는 데에 유용
  1. 고속 촬영 카메라 사용:
    • 고속 촬영 카메라(예: GoPro)를 사용하여 매우 빠른 프레임 속도로 이미지를 촬영한다. 이 카메라는 짧은 노출 시간 동안 많은 수의 프레임을 캡처할 수 있다.
  2. 짧은 노출 프레임 촬영:
    • 카메라는 짧은 노출 시간을 사용하여 이미지의 선명한 장면을 여러 번 촬영한다. 이로 인해 각 프레임이 선명한 세부 사항을 담고 있지만, 블러가 없는 상태로 캡처된다
  3. 긴 노출 이미지 생성:
    • 촬영된 짧은 노출 프레임들을 합산하여 긴 노출 이미지를 생성한다. 이 과정에서 여러 프레임의 정보가 합쳐져서 블러가 포함된 이미지를 만든다
  4. 비선형 카메라 응답 함수(CRF) 적용:
    • 생성된 블러 이미지에 대해 비선형 카메라 응답 함수(Camera Response Function, CRF)를 적용하여 신호를 픽셀 값으로 변환한다. CRF는 카메라 센서의 비선형 응답을 보정하는 함수
  5. 블러 축적 과정:
    • 여러 개의 짧은 노출 프레임을 축적하여 긴 노출 효과를 얻는 이 과정에서 이미지의 움직임이나 초점 불량에 의한 블러가 자연스럽게 반영된다

 

RealBlur

  • 이미지 복원 및 슈퍼 해상도(Super-Resolution) 분야에서 사용되는 실제적인 블러(Blur) 데이터 생성 방법
  • 실제 이미지에서 블러를 시뮬레이션하여 훈련 데이터를 생성하는 데 중점
  • RealBlur의 목표는 실제적인 블러 현상을 모델링하여 훈련 데이터를 생성하는 것으로, 이 훈련 데이터는 블러를 포함한 이미지와 블러가 없는 원본 이미지를 포함하여, 모델이 블러를 효과적으로 제거할 수 있도록 학습시키는 데 사용한다



'Study - AI > Computer Vision' 카테고리의 다른 글

Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



Object Detection

Classification + Box localization





Object detection architectures


Two-stage detector : R-CNN

Region-based Convolutional Neural Network

  1. Region Proposal (후보 영역 추출)
    • 입력 이미지를 받으면, 먼저 Selective Search와 같은 기법을 사용해 이미지에서 객체가 있을 가능성이 있는 후보 영역(Region Proposal)을 수천 개 생성
      • 이미지 내에 객체가 존재할 가능성이 높은 영역을 미리 추정하는 과정
  2. Feature Extraction and Classification (특징 추출 및 분류)
    • 각 후보 영역을 CNN(Convolutional Neural Network)에 통과시켜, 각 영역의 특징을 추출
    • 추출된 특징을 이용해 각 후보 영역이 어떤 클래스(예: 사람, 자동차, 개 등)에 속하는지 분류
    • 각 후보 영역의 위치를 조금 더 정확하게 조정하기 위해 경계 박스 회귀를 수행
  3. Output (출력)
    • 최종적으로 객체의 클래스와 위치(경계 박스)를 출력

장점

R-CNN은 각 후보 영역에 대해 정밀한 분류를 수행하기 때문에 정확도가 높음


단점

많은 후보 영역을 각각 CNN에 통과시켜야 하기 때문에 계산량이 매우 많고, 속도가 느리다



One-stage detector : YOLO

  1. Single Forward Pass (단일 단계 처리)
    • 이미지를 그리드로 나누고, 각 그리드 셀이 해당 영역에서 객체가 있는지를 예측
    • 각 그리드 셀은 객체가 있을 확률과 그 객체의 클래스, 그리고 객체의 경계 박스를 동시에 예측
  2. Output (출력)
    • 전체 이미지에 대해 한 번의 네트워크 통과만으로, 모든 객체의 위치와 클래스를 예측

장점

매우 빠름 → 전체 이미지를 한 번에 처리하기 때문에 실시간 객체 탐지에 적합


단점

속도가 빠른 대신, 작은 객체나 복잡한 이미지에서는 정확도가 떨어질 수 있음. 특히, 객체가 그리드 셀 경계를 넘어 있을 때 탐지가 어려울 수 있다



One-stage detector vs Two-stage detector

One-stage detector

단일 단계: 전체 이미지 처리 및 탐지 (Single Step Detection)

  • 이미지를 여러 개의 그리드 셀로 나누고, 각 셀이 담당하는 영역에서 객체가 있는지를 예측
  • 각 셀은 해당 영역 내에서 객체의 클래스와 위치(경계 박스)를 동시에 예측
  • YOLO는 전체 이미지를 한 번에 보고, 동시에 객체의 위치와 클래스 정보를 예측하는 원 스테이지 디텍터
  • 한 번에 처리: 이미지 전체를 보고 객체 탐지 및 위치 예측
  • 매우 빠른 처리 속도
  • 상대적으로 정확도는 낮을 수 있음 (특히 작은 객체에 대해)

Two-stage detector

  • 첫 번째 단계: 후보 영역 추출 (Region Proposal)

    • Selective Search 등의 알고리즘을 사용해 입력 이미지에서 잠재적인 객체가 있을 만한 후보 영역(Region Proposals)을 여러 개 생성
      • 이 후보 영역들은 객체가 있을 가능성이 높은 이미지의 작은 부분
  • 두 번째 단계: 후보 영역 분류 및 경계 박스 회귀 (Classification and Bounding Box Regression)

    • 각 후보 영역을 CNN(합성곱 신경망)에 입력하여 특징을 추출하고, 이를 사용해 객체가 어떤 클래스에 속하는지 분류

    • 각 후보 영역의 경계 박스 위치를 정밀하게 조정(회귀)하여 객체의 정확한 위치를 예측

      먼저 후보 영역을 생성한 후, 이를 각각 CNN에 통과시켜 객체를 탐지하는 두 단계를 거치기 때문에 투 스테이지 디텍터

  • 두 단계로 나뉘어 처리: 후보 영역 생성 → 후보 영역 분류 및 위치 조정

  • 일반적으로 더 높은 정확도

  • 계산량이 많아 속도가 느림



Class imbalance problem 클래스 불균형 문제

  • 객체 탐지에서 발생하는 문제로, 원 스테이지 디텍터(YOLO, SSD 등)들이 이 문제에 취약한 편

  • 이미지 내에서 실제로 객체가 존재하는 앵커 박스(양성 앵커 박스)보다 객체가 없는 앵커 박스(음성 앵커 박스)가 훨씬 더 많음

    • ex) 한 이미지에 객체가 10개밖에 없더라도 앵커 박스는 수천 개가 될 수 있음. 대부분의 앵커 박스는 객체가 없는 음성 앵커 박스
  • 모델이 학습할 때, 음성 앵커 박스가 너무 많아 모델이 음성 앵커 박스를 잘 분류하는 데 집중하게 되고, 상대적으로 양성 앵커 박스의 분류에는 덜 민감해짐 → 모델의 성능이 저하될 수 있음

  • 앵커 박스 Anchor Box

    앵커 박스는 객체 탐지 모델이 이미지에서 다양한 크기와 모양의 객체를 찾아내기 위해 사용하는 사전 정의된 사각형들

    앵커 박스는 이미지를 나눈 그리드 셀 위에 겹쳐서 여러 크기와 비율의 사각형 모양으로 미리 설정됨

    1. 이미지에 사각형 격자(그리드)를 씌운다
      • 모델은 이미지 전체를 여러 개의 작은 사각형 셀로 나눈다
        • 이 사각형들이 격자 모양으로 배열되어 있다고 생각할 것
    2. 각 그리드 셀에 여러 개의 앵커 박스를 설정한다
      • 각 그리드 셀 위에 여러 개의 사각형 박스를 겹쳐놓음. 이 박스들은 크기와 모양이 다 다름
    3. 앵커 박스가 객체를 찾는 방법
      • 모델은 이 앵커 박스들이 이미지에서 실제 객체와 얼마나 잘 맞는지(겹치는 정도)를 평가
      • 만약 이미지에 있는 객체의 위치와 모양이 어떤 앵커 박스와 잘 맞는다면, 그 앵커 박스는 "양성(positive)"으로 분류
      • 반대로, 객체와 거의 맞지 않는 앵커 박스는 "음성(negative)"으로 분류

Focal Loss

클래스 불균형 문제를 해결하기 위해 개발된 손실 함수

  • Improved Cross Entropy Loss (개선된 교차 엔트로피 손실 함수):
    • Focal Loss는 기본적으로 교차 엔트로피 손실을 기반으로 함. 교차 엔트로피 손실은 분류 문제에서 많이 사용하는 손실 함수로, 예측과 실제 클래스 간의 차이를 측정
    • Focal Loss는 이 교차 엔트로피 손실을 개선하여, 모델이 학습할 때 특정 문제를 더 잘 다루도록 만든다
  • Deal with Class Imbalance (클래스 불균형 문제를 다룸):
    • 클래스 불균형은 음성(객체가 없는) 샘플이 양성(객체가 있는) 샘플보다 훨씬 많은 상황을 의미하는데, Focal Loss는 모델이 음성 샘플에만 치우쳐 학습하지 않도록 함
    • Over-weights Hard or Misclassified Examples (어려운 예제나 잘못 분류된 예제에 더 높은 가중치를 부여):
      • Focal Loss는 모델이 잘못 분류한 예제들이나, 분류하기 어려운 예제들에 대해 더 큰 가중치를 부여함
        • ex) 모델이 특정 객체를 제대로 인식하지 못하면, Focal Loss는 해당 예제에 대해 더 많은 학습이 이루어지도록 유도
    • Down-weights Easy Examples (쉬운 예제에는 낮은 가중치를 부여):
      • 반대로, 이미 잘 분류된(쉬운) 예제들에 대해서는 가중치를 줄여, 모델이 이미 잘 처리하는 데이터에 너무 많은 자원을 쓰지 않도록

RetinaNet

  • 원 스테이지 네트워크 → RetinaNet은 객체 탐지를 한 번의 과정으로 수행해 속도가 빠름!

Feature Pyramid Networks (FPN) + class/box prediction branches

  • Feature Pyramid Networks (FPN)
    • FPN은 이미지의 여러 스케일에서 객체를 탐지하기 위해 사용되는 네트워크 구조
    • FPN은 이미지에서 다중 스케일 피처를 추출하여, 작은 객체부터 큰 객체까지 다양한 크기의 객체를 효과적으로 탐지할 수 있도록 해줌
    • 이는 기본적으로 기존의 CNN에서 나온 특징 맵(feature map)을 여러 레벨로 쌓아 올려, 각 레벨에서 객체를 탐지할 수 있게 한다
  • Class/Box Prediction Branches (클래스/박스 예측 분기)
    • RetinaNet은 각 피라미드 레벨에서 두 가지 분기를 사용
      1. 클래스 예측 분기 (Classification Branch):이 분기는 이미지의 특정 위치에서 어떤 클래스가 있는지를 예측
        1. ex) 특정 위치에 사람이 있는지, 자동차가 있는지를 분류
      2. 박스 예측 분기 (Box Regression Branch):이 분기는 이미지 내에서 객체의 경계 박스를 예측함 → 객체의 정확한 위치를 나타내는 사각형의 좌표를 예측
    • 이 두 가지 분기는 FPN에서 생성된 특징 맵을 기반으로 하며, 모델이 객체의 위치와 클래스를 동시에 예측할 수 있게 함

RetinaNet의 특징

  • Focal Loss:

    RetinaNet은 Focal Loss를 사용하여 클래스 불균형 문제를 효과적으로 해결!

    이는 모델이 어려운 예제에 집중하고, 클래스 불균형으로 인해 발생할 수 있는 문제를 줄여줌. 이로 인해 원 스테이지 디텍터임에도 불구하고 높은 정확도를 달성 가능

  • Feature Pyramid Networks (FPN):

    FPN을 통해 이미지의 다양한 스케일에서 객체를 탐지할 수 있게 되어, 작은 객체나 큰 객체 모두에서 좋은 성능을 보여준다

RetinaNet은 원 스테이지 객체 탐지 모델로, Focal Loss와 Feature Pyramid Networks (FPN)을 결합하여 높은 정확도와 빠른 속도를 동시에 달성. FPN은 이미지의 여러 스케일에서 객체를 탐지할 수 있게 하며, 클래스와 박스를 동시에 예측하는 분기를 사용해 객체의 위치와 클래스를 정확하게 예측함






Instance segmentation

Instance segmentation = Semantic segmentation + distinguishing instances

Instance segmentation은 이미지에서 개별 객체를 식별하고 각 객체의 단위 경계를 정확하게 구분하는 작업

  • 세맨틱 세그멘테이션 (Semantic Segmentation):
    • 세맨틱 세그멘테이션은 이미지의 각 픽셀을 특정 클래스에 할당하는 작업
      • ex) 이미지에서 모든 "사람" 픽셀을 동일한 색상으로 칠해 사람이라는 것을 표시하는 것
    • 하지만 이 방법은 같은 클래스에 속하는 여러 객체(예: 여러 명의 사람)를 구분하지는 않음. 모든 사람이 같은 색상으로 칠해지기 때문에, 개별 객체를 구분할 수 없다
  • 인스턴스 세그멘테이션 (Instance Segmentation):
    • 인스턴스 세그멘테이션은 세맨틱 세그멘테이션을 확장하여, 같은 클래스에 속하는 객체들도 개별적으로 구분하는 작업
      • ex) 여러 명의 사람이 있는 이미지에서 각 사람을 각각 다른 색상으로 표시해, 서로 다른 객체임을 명확히 구분할 수 있음
    • 즉, 세맨틱 세그멘테이션을 수행한 후, 그 결과를 바탕으로 같은 클래스에 속하는 객체들 사이의 경계를 구분해주는 과정이 추가된 것



Mask R-CNN

객체 탐지와 인스턴스 세그멘테이션을 동시에 수행하는 딥러닝 모델

  • Faster R-CNN을 기반으로 하고 Mask Branch를 더한 것

  • 객체의 경계 상자 뿐만 아니라 각 객체의 정확한 픽셀 단위 마스크도 예측할 수 있음

  • Faster R-CNN

    • Faster R-CNN투 스테이지 객체 탐지 모델로, 이미지에서 객체의 위치(경계 상자)를 예측하고, 그 경계 상자 안에 어떤 객체가 있는지를 분류
    1. Region Proposal Network (RPN)
      • 이미지에서 객체가 있을 만한 위치(후보 영역, Region Proposal)를 제안하는 네트워크로, RPN이 제안한 후보 영역들은 이후 단계에서 더 정확히 분류되고, 경계 상자가 조정
    2. ROI Pooling 및 클래스/박스 예측
      • 제안된 후보 영역에 대해, 어떤 클래스의 객체인지 분류하고, 경계 상자(박스)를 더 정확하게 조정
  1. Region Proposal

    • Faster R-CNN과 동일하게, Region Proposal Network (RPN)을 통해 이미지에서 객체가 있을 가능성이 있는 후보 영역을 제안
  2. ROI Align

    • Mask R-CNN은 ROI Pooling 대신 ROI Align이라는 방법을 사용. ROI Align은 후보 영역의 좌표를 보다 정확하게 처리하여, 픽셀 단위로 더 정밀한 결과를 얻을 수 있게 한3다

    • RoI Align이란?

      • RoI AlignMask R-CNN에서 사용되는 기술로, 픽셀 단위의 정밀한 정보를 유지하여 객체 탐지와 인스턴스 세그멘테이션의 정확성을 높이는 역할

      • RoI Align은 RoI Pooling의 개선된 버전으로, 픽셀 단위의 정밀한 위치 정보가 필요할 때 사용

        RoI Pooling vs. RoI Align

      1. RoI Pooling

        • RoI Pooling은 Faster R-CNN에서 사용되는 기법으로, Region of Interest (RoI), 즉 객체 후보 영역을 고정된 크기로 변환하는 방법
        • RoI Pooling은 후보 영역을 그리드로 나누고, 각 그리드 셀에서 최대값을 추출하여 고정된 크기의 출력 피처 맵을 생성 → 이 과정에서 위치 정보의 손실이 발생할 수 있음
          • RoI Pooling은 후보 영역을 비슷한 크기의 셀로 나누어, 각 셀에서 가장 큰 값을 선택함으로써 정보의 손실을 일으킬 수 있음
      2. RoI Align

        • RoI Align은 RoI Pooling의 문제를 해결하기 위해 제안된 기법으로, 픽셀 단위로 정확한 위치 정보를 유지할 수 있도록 설계
        • RoI Align은 후보 영역을 작은 격자(grid)로 나누지 않고, 직접적으로 픽셀 값을 보간하여 정밀한 피처를 추출함. 이때, bilinear interpolation을 사용하여 각 RoI의 피처 맵을 더 정밀하게 샘플링
        • RoI Align은 격자 나누기를 사용하지 않고, 입력 피처 맵에서 실제 픽셀 위치를 참조하여 더 정확한 결과를 제공

        RoI Align의 작동 과정

      3. 후보 영역의 정확한 위치 계산

        • RoI Align은 후보 영역의 좌표를 직접적으로 활용하여, 픽셀 단위로 정확한 위치를 보정함. 이는 격자 셀을 사용하는 대신, 더 정밀한 정보를 보장
      4. Bilinear Interpolation (양선형 보간법)

        • RoI Align은 격자 셀 내의 값을 보간하여, 각 RoI의 특징을 보다 세밀하게 추출. 이 과정은 픽셀 단위의 세밀한 위치 정보를 유지한다
      5. 피처 추출

        • 각 후보 영역에서 정확한 피처 맵을 추출하고, 이를 통해 더 정밀한 객체 인식과 분류를 수행

        왜 RoI Align이 중요한가?

      • 정밀한 객체 탐지: RoI Align은 픽셀 단위로 정확한 위치 정보를 유지할 수 있어, 객체의 모양과 경계를 더 정확히 추정할 수 있음
      • 인스턴스 세그멘테이션: 인스턴스 세그멘테이션에서는 객체의 형태를 정확히 추출하는 것이 중요. RoI Align은 이 과정에서 정보 손실을 줄여줌.
  3. 클래스/박스 예측

    • 제안된 영역에 대해 Faster R-CNN과 동일하게, 객체의 클래스와 경계 상자를 예측함
  4. 마스크 예측

    • Mask Branch가 각 객체에 대한 픽셀 단위의 바이너리 마스크(객체가 있는 부분은 1, 없는 부분은 0)를 예측 → 이 마스크는 객체의 형태를 정확히 추출하는 데 사용됨



DensePose R-CNN

DensePose R-CNN = Faster R-CNN + 3D surface regression branch

  • DensePose R-CNNFaster R-CNN3D 표면 회귀(branch)를 추가하여, 2D 이미지에서 3D 표면의 정확한 매핑을 수행하는 모델
  • *2D 이미지를 기반으로 *인체의 3D 표면을 매핑하여, 인체의 3D 자세를 추정하는 모델

  1. Faster R-CNN:
    • Faster R-CNN은 객체 탐지를 위한 모델로, 이미지에서 객체의 위치(경계 상자)와 클래스(객체 종류)를 예측
  2. 3D 표면 회귀(3D surface regression)(branch):
    • DensePose R-CNN은 객체의 2D 이미지를 기반으로 객체의 3D 표면을 예측
    • 2D 이미지에서 인체의 3D 표면(예: 인체의 피부 표면)을 매핑하여, 인체의 각 부분이 3D 공간에서 어떻게 나타나는지를 추정
    • 이를 통해, 2D 이미지를 통해 인체의 3D 자세를 추정할 수 있음

작동 방식

  • DensePose R-CNN은 먼저 이미지에서 객체를 찾고(기본적인 Faster R-CNN 단계), 인체 표면의 3D 좌표를 추정하여, 2D 이미지에서 3D 표면의 세부적인 디테일을 제공



Mesh R-CNN

Mesh R-CNN = Faster R-CNN + 3D surface regression branch

  • Mesh R-CNNFaster R-CNN3D 표면 회귀(branch)를 추가하여, 3D 메쉬 형식으로 객체의 표면을 예측하는 모델
  • 2D 이미지에서 객체의 3D 메쉬를 예측하여, 객체의 정밀한 3D 표면을 생성하는 모델

  1. Faster R-CNN:
    • 기본적으로 Faster R-CNN을 사용하여 객체의 위치와 클래스 정보를 예측
  2. 3D 표면 회귀(branch):
    • Mesh R-CNN은 3D 메쉬를 예측
      • 메쉬는 3D 객체의 표면을 구성하는 다각형(삼각형 등)의 집합
    • 이 모델은 객체의 표면을 3D 메쉬 형태로 생성하여, 보다 상세하고 정밀한 3D 표면 모델을 제공

작동 방식

  • Mesh R-CNN은 먼저 이미지에서 객체를 탐지하고(기본적인 Faster R-CNN 단계), 각 객체에 대해 3D 메쉬를 예측하여, 객체의 정확한 3D 형태를 생성
  • 이 메쉬는 3D 공간에서 객체의 표면을 나타내는 삼각형의 집합



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13