Study/컴퓨터비전 CV

Object Detection

김 도경 2025. 1. 6. 16:23
2-Stage Detector
  • Object Detection = Localization + Classification
    - 두 가지의 task를 분리하여 2 stage로 따로 수행
    - Stage 1: 이미지 내에서 object가 있다고 판단되는 위치 찾기 (Region proposal)
    - Stage 2: 각 위치에 있는 object의 종류 판단 (Classification)

  • R-CNN
    - 2-stage detector의 최초 모델
    - Region proposals + CNN

    - Sliding Window
          - 고정된 크기의 window를 이미지 내에서 sliding하면서 객체의 위치를 찾아내는 방법
          - 계산 비용이 높고 속도가 매우 느림
          - 고정된 크기의 window

    - Selective Search
          - 초기에 매우 작은 픽셀 단위의 region을 잡고, 유사성이 높은 region들을 점차적으로 병합해나가는 방법
          - 색상, 질감, 경계 등을 기준으로 유사성이 높은 region을 병합
          - Sliding window의 두 가지 단점 해결

    R-CNN 동작 과정
    1. Input image에서 selective search를 통해 약 2000개의 RoI(Region of Interest) 생성
    2. 각 RoI 영역을 모두 동일한 크기로 warping : 이후에 통과할 CNN의 마지막 fc layer의 input size가 고정되어 있기 때문
    3. 조정된 RoI를 각각 CNN에 넣어서 feature 추출 (2000x4096)
          - Region마다 4096-d의 feature vector로 추출
          - Pretrained AlexNet 사용
    4-1. 추출된 feature vector를 SVM에 넣어서 각 RoI의 object에 대한 classification (2000x(C+1))
          - C+1: class 개수(C) + background(1)
    4-2. 추출된 feature vector를 regression을 통해 각 RoI의 bounding box 위치 조정
          - Selective search의 부정확한 bounding box 위치 조정

    R-CNN의 단점
    - 약 2000개의 RoI 각각에 대해 CNN 연산 → 연산량이 많고 속도가 매우 느림
    - 모든 RoI를 동일한 사이즈로 맞추기 위해 이미지를 crop/resize하는 과정 필요 → 성능 저하
    - Stage2의 모델(CNN, SVM, bbox reg) 모두 따로 학습

  • Fast R-CNN
    - 단일 CNN을 통해 연산량 감소
    - RoI projection 모듈을 통해 CNN 연산을 줄이고 속도를 개선한 모델
    - RoI pooling 모듈을 통해 이미지 사이즈 강제 조정하는 과정 제거

    - RoI Projection
      - RoI Projection의 등장 배경 : R-CNN에서는 2000개의 RoI를 뽑고, 이후 CNN에 통과 (2000번의 CNN 연산)
          → CNN을 한번만 통과하여, feature vector를 얻을 수 있을까?
          → Feature map을 한번만 추출하고, 그 위에서 RoI 위치에 맞는 feature vector를 추출하자!
           →  CNN 연산 2000번 → 1번

    - 사이즈가 변한 feature map에 RoI를 투영하는 과정
    - CNN 연산 이후, feature map의 사이즈가 변할 수 있음

    - RoI Pooling : 어떤 크기의 feature map이 들어와도 동일한 사이즈로 pooling하고자 하는 방법
      - RoI를 지정된 size(WxH)에 맞추기 위해 그리드 설정 (6*6→2*2 / 4*6→2*2)
      - 설정된 각 그리드에서 max 값을 가져와서 최종적으로 같은 size로 통일

      - RoI Pooling의 등장 배경 : CNN을 먼저 통과하기 때문에 RoI를 crop/resize하는 과정 없음
           - Fc layer의 input으로 들어가기 전에 feature vector 크기를 조정해야 함

    - Fast R-CNN 동작 과정
    1-1. Input image에서 selective search를 통해 약 2000개의 roi 생성
    1-2. 단일 CNN 연산으로 전체 feature map 생성
    2. RoI projection, RoI pooling으로 각 RoI에 맞는 고정된 사이즈의 feature vector 생성
    3. 추출된 feature vector에 대해 linear, softmax 연산 수행
           - 이후, 각 RoI의 object에 대한 classification과 Bounding box regression 수행

    R-CNN, Fast R-CNN의 단점
    - 픽셀 단위부터 영역을 병합하는 selective search는 GPU와 CPU 연산이 모두 필요하며 매우 느림
    - GPU에서만 연산하는 network와 분리되어 end-to-end 학습이 불가

  • Faster R-CNN
    - Selective search를 제거하고 Region Proposal Network(RPN) 모듈을 사용하여 연산을 더 가속화한 모델
    - 전체 프레임워크가 한번에 연산되는 end-to-end 모델

    - Region Proposal Network (RPN) 이란? GPU에서만 연산하여 RoI를 찾는 network를 만들자!
          - 미리 지정된 크기의 anchor box를 이용하여 roi search

    - Region Proposal Network (RPN) 동작 과정
    1. CNN을 통해 얻은 feature map을 input으로 받아서 intermediate layer 생성
          - 3*3*256 또는 3*3*512 convolution 사용
    2. Intermediate layer의 feature map을 입력받아 classification
          - 1*1*18 convolution: 2(object 여부) x 9(anchor의 개수)
    3. Intermediate layer의 feature map을 입력받아 bounding box regression
          - 1*1*36 convolution: 4(bbox의 좌표) * 9(anchor 개수)

    - Non-maximum Suppression (NMS)
        - RPN으로 생성된 RoI 중에서 유사한 bounding box들을 제거하기 위해 사용
    1. 각 class에 대한 confidence score를 기준으로 내림차순 정렬
    2. Score가 가장 높은 box를 기준으로 IoU (Intersection of Union) 계산
    3. IoU가 지정된 threshold 이상인 box들 제거
              - 겹치는 영역이 클수록 같은 물체를 검출하고 있다고 판단
    4. Bbox list가 빌 때까지 내림차순으로 IoU 계산/제거 과정 반복

    Faster R-CNN 동작 과정
    1. CNN을 통해 전체 feature map 추출
    2. 생성된 feature map을 RPN, NMS 연산 후 RoI 생성
    3. RoI projection, RoI pooling을 통해 모든 RoI를 동일한 사이즈로 변환
    4. Softmax + bounding box regression 동시에 수행 (multi-task 학습)

 

1-Stage Detector

- 두 단계를 합쳐 속도가 더 빠르고 효율적인, 실시간 탐지에 적합한 모델

 

  • YOLO v1

- Classification과 localization을 동시에 포함하는 loss로 학습하는 end-to-end 모델

- Region proposal 단계를 제거하고, bounding box와 class를 동시에 예측
- 전체 이미지를 한번에 보고 추론하기 때문에 맥락적 이해 증가

동작 과정
1. Input image를 SxS 크기의 grid cell로 분할
     - 객체의 중심이 특정 grid cell에 위치할 경우, 해당 grid cell이 그 object의 탐지를 담당하도록 할당 (assign)
2. 각 grid cell에서 B개의 bounding box와, 해당 bbox에 대한 confidence score 계산
3. 각 grid cell에서, 해당 cell에 객체가 존재한다고 가정했을 때 특정 class일 조건부 확률 계산
4. 각 bbox에 대한 class별 confidence score 계산을 통해 최종 예측

- Darknet : GoogleNet을 변형하여 만든 YOLO v1의 독자적인 네트워크 (ImageNet-pretrained)
      - 24개의 convolution layer: feature map 추출
      - 2개의 fully connected layer: 각각 box, class 예측 담당
  - Darknet Output 후처리
      - 이미지에서 예측된 모든 bounding boxes들의 집합
      - 지정된 threshold를 기준으로, confidence score가 threshold 이하일 경우 해당 box 제거(score 0으로 설정)
      - confidence score를 기준으로 box 내림차순 정렬
      - NMS를 통해 불필요한 box 제거(score 0으로 설정) ( score가 0이 아닌 남은 bboxes의 집합이 최종 prediction)

Loss Function
- 세 가지 loss의 sum of squared error(SSE)로 total loss function 구성
1. Localization loss
2. Confidence loss
3. Classification loss

한계점

- Fast R-CNN과 비교했을 때 높은 localization 에러율

- Region proposal-based 방법들에 비해 낮은 recall ⇒ YOLO만큼 빠르면서도 더 정확한 모델 필요

 

  • YOLO v2
    - YOLO 9000: Better, Faster, Stronger
    - Better: 정확도(mAP) 향상
       1. Batch normalization
           - 기존 YOLO v1 모델에서 모든 convolution layer에 batch normalization을 사용하고 dropout 제거
       2. High resolution classifier
           - YOLO v1에서는 224*224 기준으로 pretrained된 network를 사용하면서 448*448의 input 이미지를 사용하여 해상도 불일치 문제가 있었음
           - YOLO v2에서는 network를 448*448 image에 다시 fine-tuning하여 사용
       3. Convolutional with anchor boxes
           - YOLO v1은 anchor box가 없으며, bbox의 좌표를 랜덤값으로부터 직접 예측
           - YOLO v2에서는 fc layer를 모두 제거하고 anchor box 도입
           - 좌표값 x,y,w,h를 직접 예측하는 것보다 상대적 offset을 보정하는 것이 쉽기 때문
       4. Dimension clusters
           - Anchor box의 개수를 미리 지정하는 대신 최적의 개수를 학습하여 찾음
           - K-means clustering를 사용해서, 5개의 anchor box를 사용했을 때 가장 좋은 성능을 보임
       5. Direct location prediction
          - YOLO 모델에 anchor box를 도입할 경우, 학습 초기 단계에 모델이 불안정함
          - 좌표의 학습 계수인 와 에 제한된 범위가 없어서 x, y값이 무한할 수 있기 때문
          -  Grid cell에 상대적인 위치 좌표를 예측하는 방법 사용
       6. Fine-grained features
          - 크기가 작은 feature map은 low-level 정보 부족함
          - 이전 convolution layer의 output을 분할하여 연결한 vector를 가져오는 방식 사용
       7. Multi-scale training
          - 다양한 input 이미지를 학습하여 모델의 robustness 증가
          - 10 batch마다 input 이미지의 크기를 랜덤하게 선택
          - 모델이 32배로 downsample하도록 설계되어 있기 때문에, 32배수인 {320, 352, … , 608} 중에서 선택

    - Faster: 속도(fps) 향상
         - Darknet-19라는 독자적인 네트워크를 사용하여 YOLOv1보다 parameter 수를 줄이고 속도 향상
         - 마지막 fc layer를 제거하고 global average pooling 사용
         - 1*1 convolution layer 추가

    - Stronger: 더 많은 class에 대한 학습/예측
         - Classification의 데이터셋(ImageNet)과 detection의 데이터셋(COCO)를 함께 사용 → class 개수 9000개
         - ImageNet의 label들은 영어 단어의 의미적 관계를 연결하는 WordNet에서 가져온 것
         - 그래프로 표현된 WordNet으로부터 계층 트리(hierarchical tree)인 WordTree 구축
         - “물리적 객체”(“physical object”)라는 class를 root node로 두고 그 하위 범주들을 자식 노드로 뻗어나가서 계층 구성
         - WordTree 구성 이후 각 node의 확률을 예측할 때는 조건부 확률 사용 : Root node인 physical object까지 따라 올라가며 확률곱
         - (ImageNet 데이터셋 : COCO 데이터셋 = 4 : 1) 비율 조정
         - WordTree를 사용하여 classification과 detection dataset을 함께 학습하는 joint training

  • YOLO v3
    - Multi-scale feature maps 사용을 통해 다양한 크기의 객체를 더 잘 탐지하도록 모델 개선
    - 더 빠른 속도와 정확도를 달성하는 Darknet-53 backbone 사용
    - 세 개의 feature map scale을 사용하여 객체 탐지 수행
    - Feature pyramid network 사용

    - Darknet-53
        - Residual connection 적용
        - 총 53개의 Convolution layer
        - Darknet-19보다 나은 성능이지만 여전히 ResNet-101, ResNet-152보다 빠른 속도

  • YOLO v4
    - 당시의 최신 딥러닝 기법들을 활용하여 정확도와 속도 향상
    - Bag of Freebies, Bag of Specials (에 포함되는 8가지 기법 사용)
    - CSPDarknet-53 backbone 사용
    - Inference cost를 증가시키지 않고 training cost만 추가하여 정확도를 향상시키는 기법
       (CutMix and Mosaic data augmentation, Dropblock regularization, Class label smoothing)
    - Inference cost를 조금 증가시키지만 정확도를 크게 향상시키는 기법
       (Mish activation, Cross-stage partial connections (CSP), Multi-input weighted residual connections (MiWRC))

    - CSPDarknet-53
        - CSPNet과 YOLOv3의 DarkNet-53 구조를 결합한 네트워크
        - parameter 수가 많음에도 속도가 빠르고, 작지 않은 receptive field를 가짐
        - CSPNet (Cross Stage Hierarchical Networks): 네트워크 중간에서 feature map을 두 부분으로 분할
          이후 하나의 feature map에 대한 연산 후에 다시 결합하는 방법
        - 정확도는 유지하면서 연산량 줄이기, 연산 bottleneck 제거, 메모리 cost 감소

 

Neck

- 등장 배경 : 기존의 detector 모델들은 일반적으로 하나의 고정된 해상도의 feature map 사용 → 다양한 크기의 객체를 동시에 처리하는 것은 어려움

 

  • Neck
    - 다양한 크기의 물체를 더 잘 탐지하기 위해 보완된 구조
    - 다양한 객체를 더 잘 탐지할 수 있음
    - 예시 : FPN, PANet, DetectoRS, BiFPN, NasFPN, AugFPN

    - CNN의 여러 layer에서 추출되는 feature map은 객체의 다양한 크기와 모양을 탐지하는데 적합
    - CNN을 거치면서 feature map의 spatial resolution은 줄어들기 때문에
         - Early layers: 작은 객체나 low-level feature 탐지에 더 적합
         - Later layers: 큰 객체나 high-level feature 탐지에 더 적합
FPN

 

  • 기존방법
    Featurized Image Pyramid
    - 이미지를 여러 scale로 변환하여 feature map을 생성하고, 네트워크에 입력하는 방법
    - 다양한 scale의 객체를 탐지하는 성능 ↑ 각 이미지를 독립적으로 처리하기 때문에 속도 ↓

    Single Feature Map
    - 단일 scale의 이미지만 사용하여 feature map을 생성하고, 단일 feature map으로 예측하는 방법
    - 다양한 scale의 객체를 탐지하는 성능 ↓  단일 이미지만 사용하기 때문에 속도 ↑

    Pyramidal Feature Hierarchy
    - 단일 이미지만 사용하고, CNN에서 지정된 layer마다 feature map을 추출하여 예측하는 방법
    - feature map을 독립적으로 사용하여 다른 해상도에서 얻은 semantic을 활용하지 못함

 

  • Feature Pyramid Network (FPN)
    - 지정된 layer의 feature map을 사용하며, 상위 level의 semantic을 함께 활용하는 방법
    - Bottom-up pathway: CNN에서 이미지를 forward-pass하며 해상도가 작아지는 feature map을 추출하는 과정
    - Top-down pathway: Lateral connection을 통해 각 layer에서 나온 feature map을 하위 layer의 feature map 해상도와 동일하게 맞추는 과정

    - Lateral connection
        - Nearest neighbor upsampling을 통해 상위 layer의 feature map 해상도를 2배로 키움
        - 1*1 convolution을 통해 하위 layer의 feature map channel을 조정하고 두개의 map을 결합

    동작 과정
    1. {C2, C3, C4, C5}: Bottom-up pathway를 통해, 해상도가 2배씩 작아지는 feature map 추출
         - Backbone CNN으로는 ResNet 사용
    2. {M2, M3, M4, M5}: Top-down pathway와 lateral connection을 통해 상위 level부터 feature map의 semantic 전달하여 결합
    3. {P2, P3, P4, P5}: 결합된 feature map에 3*3 convolution을 수행하여 최종 feature map 생성
    4. 최종 feature map에서 classification, bounding box regression을 수행한 후에 가장 확률이 높은 top-N개의 bounding box 선택

    한계점
    - Low-level에 가까운 feature일수록 output까지 semantic이 잘 전달되지 않음
    - Top-down의 단방향 feature 통합은 semantic 교환이 충분히 이루어지지 않음
    - 고정된 architecture 또는 고정된 layers, receptive fields를 가질 경우 context 정보가 충분하지 않을 수 있음

  • FPN 이후
    - PANet (Path Aggregation Network for Instance Segmentation) : Bottom-up path를 한번 더 추가하고, low-level과 high-level semantic이 더 잘 통합되도록 설계
    - BiFPN (Bi-directional Feature Pyramid) : Feature를 양방향으로 통합하여 더 많은 정보 교환이 이루어질 수 있도록 설계
    - NAS-FPN (Neural Architecture Search-FPN) : 더 다양한 scale의 feature를 보고, 효율적이고 성능이 좋은 FPN architecture를 자동으로 찾을 수 있도록 설계
    - AugFPN (Augmented Feature Pyramid Network) : Pyramid layers에 추가적인 convolution 연산을 추가하여 더 많은 -context를 볼 수 있도록 설계
    - A2-FPN, GraphFPN 등… Neck 구조의 성능을 향상시키는 여러 모델 발전

 

Transformer-based Detector
  • Transformer-based Detector
    - 여러 task에서 뛰어난 성능을 보이는 Transformer 구조를 활용함으로써, 더 간결한 구조로 높은 성능을 보임
    - Anchor boxes, RPN, NMS와 같은 hand-crafted 과정 제거
  • Why DETR (DEtection TRansformer)?
    - Object detection이란 image에서 object의 bounding box와 class를 같이 예측하는 set prediction
    - 기존의 object detection algorithm (Yolo, Faster-RCNN 등)은 indirect set prediction
    - 또한 기존의 모델들은 사람이 미리 정의한 prior knowledge를 사용
          - NMS, anchor box 등 사람이 정의한 post processing algorithm
          - 즉, 사람의 bias가 모델 성능에 많은 영향을 끼침
    - DETR에서는 direct set prediction으로 object detection task에 접근
        - Direct set prediction으로 object detection task를 풀기 위해서는?
          - Architecture for direct set prediction
          - Direct set prediction loss

  • Overview
    1. Backbone(feature extractor) + positional encoding
         - Transformer encoder로 들어갈 input processing
    2. Encoder
         - Transformer encoder 구조를 활용하여, image feature에 대한 전역적인 context 생성
    3. Decoder
         - 인코딩된 feature를 기반으로 N개의 query에 맞는 object 예측
    4. Prediction heads
         - Decoder의 output을 보정
         - Query에 순서가 없기 때문에 예측 bbox와 gt bbox를 맞춰주는 set-prediction 수행

  • Pipeline
    - Backbone
        - CNN backbone으로 ImageNet-pretrained ResNet 사용 ( 3*H*W → C*h*w (C=2048, h=H/32, w=W/32 사용))
        - 1*1 convolution으로 channel dimension 축소 (C*h*w → d*h*w (d))
        - Sequence 정보를 없애기 위해 flatten (d*h*w → d*hw (hw=h*w))

    - Positional Encoding
        -  Vanilla transformer의 positional encoding을 2D로 일반화하여 적용
        -  Sin과 cos 각각 독립적으로 2/d만큼 생성한 후 concat
        -  동일하게 d*hw 크기의 vector(positional embedding)가 생성


    - Positional Encoding
        - Vanilla transformer의 positional encoding을 2D로 일반화하여 적용
        - Sin과 cos 각각 독립적으로 2/d만큼 생성한 후 concat
        - 동일하게 d*hw 크기의 vector(positional embedding)가 생성

    - Encoder
        - Input 형태에 맞게 변환된 feature vector d*hw와 positional embedding d*hw을 더하여 encoder에 입력
        - Positional encoding은 key와 query에만 적용
        - Attention mechanism을 통해 feature map의 모든 pixel 사이의 관계를 학습
        - Locality 특성을 가지는 CNN과 달리 전역적인 정보를 보며, 이미지 내 object의 위치, 관계 등을 함께 학습
        - FFN을 통한 추가적인 선형 연산과 normalization 등을 통해 학습 보조
        - 최종적으로 전체 이미지의 맥락을 학습한 output embedding d*hw 생성

    - Object Query
        - DETR은 사전에 지정된 N개의 object만 탐지하는 모델
        - 이미지 내 object의 정보를 담기 위한 slot인 object query 활용
        - Zero initialized된 query vector(N*d) 생성

    - Decoder
        - 첫 번째 self-attention을 통해 N개의 query간의 관계 학습
        - 해당 layer는 큰 성능 차이 없이 제거 가능
        - Encoder의 output vector와 object queries 입력
        - 이미지 내의 전역적인 정보를 담고 있는 encoder의 결과물과 attention을 함으로써, N개의 query가 어떤 위치에서 object를 찾을 수 있는지 학습
        - 추가적인 선형 연산과 normalization 등을 통해 학습 보조
        - 최종적으로 N개의 query에 대한 예측 정보를 담고 있는 output embedding d*hw 생성
       1. Encoder-decoder attention: N개의 query를 배치할, object가 있을 확률이 높은 위치 탐지
       2. Self-attention: N개의 query가 같은 object를 탐지하지 않고 일대일 매칭을 잘 수행할 수 있도록 분배

    - Classification Head
        - Decoder의 output 입력
        - FFN을 통해 각 N개에 대한 class probability 계산
        - class개수(C) + background(1)
        - FFN을 통해 bounding box 계산

    - Bipartite Matching
        - Decoder에서 object query는 parallel하게 생성됐기 때문에, output 예측에 object 순서가 없는 상태
        - N개의 예측이 이미지 내의 어떤 object를 탐지하는지 1:1로 매칭해주는 set prediction 필요
        - Prediction bbox와 gt bbox의 perfect bipartite matching problem
        - 이를 1:1 매칭했을 때, 가장 loss가 작은 조합이 올바른 매칭일 것이라고 가정
        - N*N개의 모든 조합을 고려하면 계산적, 시간적으로 비효율적이기 때문에 hungarian algorithm을 이용하여 최적 탐색

    - Hungarian Algorithm
        - Source 집합 I와 target 집합 J가 있을 때, i∈I, j∈J인 원소들에 대해 i→j의 매칭 비용을 c(i,j)라고 한다면
        - 모든 일대일대응 σ: i→j 중에서 가장 c가 작은 조합을 찾는 것
    1. Source 집합 I(prediction bboxes)와 target 집합 J(gt bboxes)를 행렬로 표현
    2. 각 bbox 조합에 대한 cost를 연산하여 행렬값 채우기 → Matching cost에는 classification loss와 bbox loss를 함께 사용
      2-1. Classification loss: class probability 사용
      2-2. bbox loss: l1-loss Anchor와 같은 어떠한 가정 없이 bbox가 예측되기 때문에 bbox loss가 매우 큼
        - 절대적인 거리를 측정하는 l1-loss만 사용하면 bbox 사이즈에 따른 상대적인 loss 차이가 큼
        - bbox의 크기가 크면 좌표값의 차이도 크고 bbox의 크기가 작으면 좌표값의 차이도 작음
      2-2. bbox loss: l1 loss + Generalized IoU (GIoU)를 함께 사용하여 해결
        - GIoU는 bounding box의 scale에 의존적이지 않은 loss
        - Pred bbox와 gt bbox를 동시에 포괄하는 새로운 box C 생성
      2-3. Matching cost = classification loss와 bbox loss의 합
    3. Hungarian algorithm을 통해 최적의 일대일 조합 찾기 : Matching cost를 최소화하는 최적의 조합
      3-1. 첫 번째 행(row)에서 최솟값을 구한 후, 모든 원소에서 빼주기
      3-2. 모든 행에 대해 동일한 연산 수행
      3-3. 모든 열(column)에 대해 동일한 연산 수행 : 최소값이 0일 경우 해당 열의 연산 생략
      3-4. 모든 0을 커버(cover)할 수 있는 행 또는 열을 최소 개수로 search
        - 찾은 행 또는 열의 최소 개수가 원소의 개수(n=4)와 같거나 클 경우, 바로 최적의 매칭 찾기
        - 현재의 경우처럼 원소의 개수보다 작을 경우, 이어서 연산 수행
      3-5. 찾은 행 또는 열을 제외한 나머지 원소 중에서 최소값을 구한 후, 해당되지 않는 모든 행의 원소에서 빼주기
      3-6. 음수가 포함된 열에서, 최소값의 절댓값 더해주기
      3-7. cover하는 행과 열의 수가 아직 같은 조건이므로 동일한 연산 한번 더 수행
      3-8. cover하는 행과 열의 개수가 n보다 크거나 같기 때문에 연산 종료
      3-9. 최적의 매칭 찾기
    4. 매칭된 최적의 조합을 기반으로 최종 loss function인 hungarian loss 계산
         - classification loss로 negative log likelihood 사용

  • DETR with Huggingface
    - ResNet50 backbone을 가지는 huggingface의 pretrained-DETR 불러오고 사용해보기
    - DetrImageProcessor: 이미지는 모델에 입력하기 전에 전처리를 수행하는 프로세서
    - DetrForObjectDetection: DETR 모델이 구현되어 있는 클래스
    - 프로세서를 통해 입력 이미지를 전처리한 후 모델에 inference
    - post_process_object_detection 함수를 사용하여 모델 output 후처리

 

'Study > 컴퓨터비전 CV' 카테고리의 다른 글

Segmentation  (0) 2025.01.09
Backbone  (1) 2025.01.06
CV Metrics  (0) 2025.01.06
Semantic Segmentation  (0) 2025.01.03
Object Detection  (1) 2025.01.03