DH. AI

[Boost Camp AI Tech] Week4 본문

[Boost Camp AI Tech]

[Boost Camp AI Tech] Week4

도환 2023. 4. 30. 23:59
4주차 CV 도메인 기본 지식들을 배는데, 간단히 몇 가지만 정리하겠습니다.
Semantic Segmentation, Object Detection은 level 2, 3에서 정리하려고 합니다.

Computer Vision

  • 과거의 CV 알고리즘 → input data를 보고 feature extraction을 하고 classfication하고 output을 내보냄
    -> 자연과학 학술제에서 고양이, 강아지 이미지를 분류하기 위해 직접 feature extraction 했던 방식... 매우 힘들다.
  • 현재의 CNN기반 딥러닝 → input → deep learning(feature extractoin + classfication) → output

Data Augmentation

  • 모델의 일반화 성능을 올려주기 위해 자주 사용함. input 데이터 분포를 더욱 다양하게 만들어줘서 모델 학습에 도움을 준다. 이미지의 색을 바꾸던지, 회전을 주던지, 자르던지.. 
  • torchvision.transform, albumentation 등의 library가 있음

Classification Models

GoogLeNet

  • 1X1 conv로 채널을 줄여줌. 다른 크기의 filter 를 사용하여 conv 연산을 하여 채널 방향으로 concat 해줌. 즉 나눠서 연산후 다시 합침. (Inception 모듈) -> width를 늘려준 효과
  • gradient가 사라지는 것을 막기 위해서 gradient를 주사기 처럼 중간 중간에 다시 주입함. → 즉 중간 output으로 loss를 구해서 역전파!! -> Auxiliary classifiers
  • Global Average Pooling 사용. FC_layer의 많은 파라미터 수로 인한 계산복잡도를 매우 줄일 수 있음. 

ResNet

  • 중요 내용 : H(x)라는 것을 학습하는 것 대신 H(x) = F(x) + x 중에서 F(x)만 학습하도록 함. -> 잔여학습. shortcut connection
  • shortcut connection 장점 : F(x)에서 gradient vanish가 일어나더라도 x로 흐르는 gradient로 역전파 되어 gradient vanish 문제 해결. gradient가 흐를 수 있는 경우의 수가 2^n 개로 늘어남 -> 더 많은 표현력을 가짐
  • 모두 3X3 conv연산으로 이루어져있고, 채널 수에 따라서 block을 나눈다.
  • 무작정 층을 깊게 쌓으면 계산 복잡도가 증가할 수 있다. 또한 gradient vanishing, exploding 등의 문제가 발생. 그렇지만 shortcut connection을 이용하여 층을 깊게 쌓으면 좋다.
  • He inialization (node의 개수에 반비례하여 초기화) → 더해지는 값이 커지면, 계속해서 큰 값이 더해지므로 작은 값으로 초기

EfficientNet

  • baseline의 성능을 올리기 위해..
    • width scailing 채널축을 늘림. - GoogLeNet
    • depth scailing - ResNet
    • resolution scailing - input 이미지를 큰걸 넣어줌. → 올리면 성능이 급격하게 좋아짐
    • EfficientNet -> compound scailing - 위의 3개스킬의 성능 증가 속도는 결국 모두 수렴함 → 동시에 이것들을 잘 조절해서 성능을 올려보자.

Focal loss

  • Object Detection 문제에서 배경은 많고 실제 Object는 적은 문제인 Class Imbalance문제..
  • Cross Enropy = -log(p)
  • Focal Loss(p) = (1-p)^r * log(p) : Cross Enropy의 변형
  • (1-p)^r 의 뜻 : (gradient 관점에서)잘 맞춘 것들은 더 Loss gradient 를 낮게.. 즉 거의 학습 시키지 않음!
    어렵고 맞추지 못한 것에 대해서는 sharp한 Loss gradient를 줘서 학습 빠르게 → 적은 양의 class의 경우 많은 양의 class로 학습되어있던 모델에 input으로 들어가게 되면 logit 값 (prediction)이 작게 나올텐데 그 때 더 기울기가 큰 gradient를 흘려줘서 적은 class또한 예측 잘 되도록 학습된다. (라고 이해했습니다.) -> Class Imbalance문제 해결!

'[Boost Camp AI Tech]' 카테고리의 다른 글

[Boost Camp AI Tech] Week3  (0) 2023.04.29
[Boost Camp AI Tech] Week2  (0) 2023.03.31
[Boost Camp AI Tech] Week1  (4) 2023.03.20
[Review] 네이버 부스트 캠프 AI Tech 5기 합격 후기  (0) 2023.02.14