InternImage

안민기·2023년 6월 23일
0

Image Detection

목록 보기
2/3

InternImage-H

유튜브 정리
논문
Github

특이사항

  • 아래의 M3I pre-training과 세트임
  • CNN도 TF와 같은 모델 size를 갖으면 CNN도 충분히 좋아질 수 있다.
  • CNN의 단점은 멀리 떨어지면 잘 모름(Long-range dependency)
    • Dynamic sparse kernel로 해결
  • TF의 구조를 가져옴
    • N개의 블럭 : LN + FFN
    • MHA대신 DCN
  • 결론 : 기존의 DCN과 효과적인 TF구조를 결합! (MHA -> DCN변경)

[Core operator 비교]

  • long-range dependence : 멀리 떨어진 정보를 반영할 수 있는가?

  • adaptive spatial aggregation : 결과를 도출할 때 적절한 지역의 정보를 사용하는가?

  • Global Attention : Vit

    • patch의 global한 attention연산 수행
    • 지나친 computing 리소스 사용

  • Local Attention : Swin Transformer

    • 특정 영역을 나누고 해당 영역내에서 attention사용
    • (?)layer마다 특정 영역이 달라지고 블럭(stage)마다 patch merge가 있음

  • Large Kernel : ConvNeXt , RepLKNet , SLaK

    • 위으 모델 순으로 큰 사이즈 커널 , 큰사이즈 커널 + 작은 사이즈 커널 , 듬성듬성하게 랜덤한 위치에 커널 적용(연산량 줄이기)

  • Dynamic sparse Kernel(ours)

    • deformable convolution(DCN)의 개선 버전 : 3x3커널을 적용한다 하면 9개의 픽셀에 기존 처럼 적용하는 것이 아닌 그 주변의 픽셀에 cnn 적용
    • 장점 : 모델이 물체의 다양한 scale을 탐지할 수 있음(커널의 offset이 학습가능)

[모델 구조]
크게 왼쪽의 전체적인 모델구조 / 오른쪽의 DCN구조로 나눌 수 있음

DCN(Deformable Convolution Layer)
(이해하면 지우기)

  • V1 : 위의 DCN구조를 제안, 정해진 grid에서 feature추출x 정해지지 않은 위치에서 feature추출o
  • V2 : V1 + modulation(weight sum) 중요한 위치의 가중치 up
  • V3(our)
    • Convolutional weight 공유(그룹마다 공유하는듯)
    • Multi-group 메커니즘 : 기존은 모든 input feature에 대해 feature map생성
      • 연산량 down , 그룹마다 offset 맵 할당으로 다양한 offset활용
      • ex) (이해한게 맞다면) hxwxc의 경우 channel을 axb로 나눔 -> b개의 그룹이 생성 a개의 필터는 weight 공유이므로 1개 -> 따라서 기존의 커널 k x k x (1xaxb)로 나눌 수 있음
    • modulation 변경 : 0~1값을 갖기 위해 v2에선 sigmoid사용했음 -> softmax로 변경 => Normalize효과
      - sigmoid는 불안정성을 갖을 수 있음
      전체 구조
  • input image->stem(3x3커널 gelu~)->stage+downsampling 반복)
  • stage = (basic block) x N : 기존 트랜스포머 블럭에서 MHA -> DCN
profile
Trendy AI Developer

0개의 댓글