Survey Paper

∙ Deep Domain Adaptive Object Detection: a Survey (IEEE 2020)

∙ Unsupervised Domain Adaptation of Object Detectors: A Survey (IEEE 2023)

 

 

 

Conference Paper

Domain Adaptive Faster R-CNN for Object Detection in the Wild (CVPR 2018)

 Abstract

일반적으로 Detection시, trainingset과 testset이 동일한 분포일 것이라 가정. 즉, 분포가 달라지면 성능이 떨어질 수 밖에 없음

🧐 저자의 제안:

Detection에서 cross-domain 강화에 초점.
2개의 Domain Shift를 다룬다.
  i) Img수준의 변화 --ex) style, 조명 등
  ii) Instance수준의 변화 --ex) 객체외관, 크기 등

SOTA인 Faster R-CNN을 사용,

위에서 말한 2개의 DAC(Domain Adaptation Component)를 삽입해 Domain불일치를 감소시킴


2개의 DAC의 경우, H-Divergence이론에 기반, 적대적 훈련방식으로 Domain Classifier를 학습해 구현.
(
To address the domain shift, we incorporate two do- main adaptation components on image level and instance level into the Faster R-CNN model to minimize the H- divergence between two domains.)


서로다른 Domain Classifier는 일관성규제를 통해 강화되어 RPN학습에 사용

Dataset: Cityscapes, KITTI, SIM10K 등


 

 Image-level. vs. Instance-level Alignment

이미지 수준과 인스턴스 수준 Adaptation의 영향을 더 자세히 분석하기 위해 KITTI → Cityscapes에서 scale변화실험 수행.
Scale 변화 = 모든 인스턴스와 배경에 영향을 미치는 전역적인 변환


tgt img scale변화 → scale불일치 시 vanilla-Faster R-CNN(ex. non-adapt비적응)의 성능이 크게감소.

두 adaptation에 대해 scale변화에 대한 견고성: Imgae > Instance

저자의 설계: 전역 도메인 변화가 주로 Image-level의 조정으로 해결.
Instance-level은 불일치를 최소화하기 위해 사용되며, 심각한 전역 도메인 변화가 발생할 때 Instance 제안의 위치 결정 오류가 증가하기 때문.

그럼에도 불구하고 두 방법을 모두 사용하는 것이 모든 스케일에서 최상의 결과를 얻습니다. 
cf) Scale이 증가할수록 성능↑




 Conclusion





새로운 Domain에도 추가적인 Labeling한 Data없이 잘 탐지할 수 있음.

2가지 방식을 제안.
  i) Img수준의 Adaptation Component
  ii) Instance수준의 Adaptation Component

위의 Adaptation Component는 H-Divergence의 적대적훈련에 기반.

Consistency Regularizer는 추가적으로 Domain에 불변한 RPN을 학습하기 위해 적용됨.


 

 

 

 

 

 

 

 

 

Progressive Domain Adaptation for Object Detection (WACV 2020)

 Abstract


다른 Domain에 적용은 Image의 Distribution이 다르기에 일반화가 쉽지 않다. Domain Adaptation은 존재하는 label을 testing data에 target하는 것이지만, 매우 challengeable하다.


🧐 저자의 제안:

중간 도메인(Intermediate Domain)을 활용.
도메인 간 차이를 줄이고 점진적으로 더 쉬운 적응 하위 작업들을 해결하는 방법.

[중간도메인]
Src를 translate→Tgt을 모방해 구축
Domain Shift문제해결을 위해 feature수준의 분포를 맞추도록 "Adversarial Learning"을 수행.

추가적으로 중간 Domain의 불균형한 img품질을 다루기 위해 weighted task Loss가 적용됨.



 

Progressive Domain Adaptation Framework




 Conclusion


Src→Tgt 이미지로의 변환에 대해 Intermediate Domain을 추가해 Domain Gap간의 교량역할을 진행.

Intermediate Domain 과정:
i) Src에서 중간 Domain으로 Adapt
ii) Tgt Domain에 이를 적응시킴.
∴ Adapt Sub-task를 점진적으로 해결.

Weighted Loss:
Image화질이 불균형한 intermediate domain을 위해 도입

우리의 방법은 많은 시나리오에 적용가능함.

 

 

 

 

Unsupervised Domain Adaptive Object Detection using Forward-Backward Cyclic Adaptation (ACCV 2020)

 Abstract


FBC(Forward-Backward Cyclic) Training으로 Unsupervised Domain Adaptation을 소개한다.

But❗️주변특성분포 조정만은 class조건부분포를 조정하는것까지 보장❌
→ Domain Discrepancy를 더 크게만듬.

따라서 저자가 Instance-level Adapt를 위해 category-level semantic에 대한 Domain불변성을 학습하는 것을 목표로 한다.
 기울기가 유사한 두 Domain이라면, 한 Domain만을 학습시킴으로써 다른 Domain의 학습을 향상시킬 수 있음을 의미.


🧐 저자의 제안:

즉, Gradient조정을 위해 FBC Adaptation을 제안.
 ∙ Forward: Tgt→Src으로의 적응을 계산
 ∙ Backward: SrcTgt으로의 적응을 계산

이 과정을 반복적으로 수행.

Adversarial Training으로 Image-level 조정을 위해 Low-level feature를 강조.


다만, 두 도메인에서 잘 되더라도 Tgt에서 안될 수 있다.
이를 위해 2가지 Regularization방법을 도입, Domain다양성을 강조.
 i) Src에서 최대 Entropy규제로 확실한 Src-specific학습에 penalty
 ii) Tgt에서 최소 Entropy규제로 Tgt-specific학습을 유도.


 





 Conclusion


Label이 없는 Tgt Domain문제(= Unsupervised Learning)에 대해 FBC라는 방법을 제시:

FBC: Gradient방향이 비슷한 Src와 Tgt에 대해 category수준 semantic의 Domain불변성을 학습할 수 있을 것이라는 직관에 기반.
Adversarial Training을 통한 Local feature조정은 전체적인 Image-level의 Domain불변성학습을 위해 수행.

Entropy규제: 확실한 Source-specific학습에 penalty, Tgt-specific유도를 위해 Domain다양성을 제약.

 

 

 

 

 

 Domain Contrast for Domain Adaptive Object Detection (IEEE 2020)

 Abstract

🧐 저자의 제안:

 DA Detector훈련을 위해 대조적학습에서 영감을 받아 "간단하지만 효과적인 Domain Contrast; DC"를 제안.

[DC]:
transferred model의 오류한계최소화 관점에서 유도됨.

DC는 plug-and-play방식의 Cross-Domain Contrast손실로 구현되었으며 이 손실을 최소화함으로써 DC는 Domain의 Class Imbalance문제를 완화한다.


 


 Conclusion

[DC]:
transferred model의 오류한계최소화 관점에서 유도됨.

DC는 plug-and-play방식의 Cross-Domain Contrast손실로 구현되었으며 이 손실을 최소화함으로써 DC는 Domain의 Class Imbalance문제를 완화한다.

 

 

 

 

 


∙ One-Shot Unsupervised Domain Adaptation for Object Detection (IEEE 2020)

 Abstract

UDA(Unsupervised Domain Adaptation)의 문제점:
label이 있는 Src Data 필요.
Unlabeled인 Tgt Data가 "많이"필요
또한, Classification에서만 UDA방법론들이 발전해왔었음.

🧐 저자의 제안:

단지 1개의 Unlabeled Tgt sample만 있으면 됨.
OSFA(One-Shot Feature Alignment)알고리즘은 수준의 Src, Tgt feature을 맞추기 위해 제안됨:
낮은 층의 CNN의 feature map의 평균활성화를 맞춰 Domain Shift를 줄인다.




위쪽)SSD  //  아래쪽) Conv1_1, Conv1_2, Pool1 3개로 구성.

 


 Conclusion




단지 하나의 Unlabeled Tgt sample만 필요.
→ 이를 위해 OSFA가 제안됨.

OSFA는 저차원의 Src,Tgt feature Domain을 맞추기 위해 제안된 알고리즘.

이 방법론은 Tgt sample선택에 상관없이 좋은 DA결과를 보이며, Domain Shift를 성공적으로 줄일 수 있었음.

 

 

 

 


∙ Multi-Source Domain Adaptation for Object Detection (ICCV 2021)

 Abstract

transfer-learning에 초점을 맞춰 UDA를 학습하려는 시도에도 불구하고 간단한 Src Domain의 문제는 일반적인 시나리오를 무시해버려 안좋은 성능이 나온다.

🧐 저자의 제안:

Domain불변성향상 및 식별력유지를 동시에 이루기 위해 통합된 Faster R-CNN기반 framework인 "Divide-and-Merge Spindle Network"; DMSN을 제안한다.

[DMSN]:
- 계층적 Src Subnet: 저/고수준의 특성에 각각 강한 alignment, 약한 alignment를 수행하기위한 계층적 alignment전략을 수행.

- Pseudo Tgt Subnet: 여러 Src Subnet을 가중합, Pseudo Tgt Subnet의 최적매개변수를 근사화하기 위한 새로운 학습알고리즘.

- RPN을 위한 consistency규제: 각 서브넷이 보다 추상적인 불변성을 학습.



 


 Conclusion


DMSN이라는 프레임워크를 개발.

계층적구조로 저∙고차원의 특징을 결합, 독립적인 Subnet에서 지도학습을통해 각 Src특성을 보존.

Pseudo subnet: 서로다른 Src subnet의 지수이동평균 매개변수로 update


 

 

 

 

∙ SimROD: A Simple Adaptation Method for Robust Object Detection (ICCV 2021) 

 Abstract

 

🧐 저자의 제안:

 Simple Robust Object Detection, 일명 SimROD는 난제라 꼽히는 domain shift, psuedo-label noise를 극복하였다.

이를 위해 아래 새로운 메커니즘을 통합한다:
∙ Domain중심 데이터증강
 점진적인 self-labeling adaptation과정
  teacher-guided fine-tuning


이 방법을 사용하면 모델구조변경, 합성데이터생성을 하지않아도 대상 domain sample을 활용해 객체탐지모델을 적응시킬 수 있다.





 Conclusion


우리의 간단한 방법은
i) 새로운 도메인 중심의 데이터 증강
ii) teacher-guided 의사 라벨 정제 절차를 통해
모델을 점진적으로 적응시킵니다.

이는 작은 모델부터 큰 모델까지 향상을 이뤘으며
저수준의 이미지 손상부터 고수준의 cross-domain이나 스타일적 차이까지 다양한 종류의 도메인 이동을 완화할 수 있다.

연구 중에 저자는 점진적 적응이 왜 작동되며 ii)가 모델 적응에 어떻게 도움이 되는지에 대한 통찰을 얻었습니다. 

 

 

 

 

A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data (AAAI 2021)

No Free Lunch from Deep Learning이라는 말이 있을만큼 No Free Lunch라는 말은 유명한데... 이를 정면으로 반박하고 Free Lunch라고 표현한걸 봐서는 매우 자신이 있다는 말로 해석된다?

 Abstract

UDA는 Src, Tgt에 자유롭게 접근, Domain간 격차를 줄이기위해 함께 훈련한다 "가정"한다.→실제시나리오에는 실전적X

🧐 저자의 제안:

이로인해 Unlabeled Src Data로부터 Tgt에 최적화하는 방향이 주목받게 되었고, 이를 위해 저자는 SFOD(Source Data-Free Domain Adaptive Object Detection)프레임워크를 제안

[SFOD]: Src Data없이도 DA탐지를 가능하게 하며, 이는 Noise있는 Label로 학습하는 것으로 모델링한다.

일반적으로 Src에서 pretrained모델을 활용, Tgt의 가짜라벨생성을 한다.

하지만 Tgt Domain라벨이 없으면, 이런 가짜라벨생성에 대한 평가가 어렵다.



→ SED(Self-Entropy Descent)라는 평가지표 도입!


SED: 가짜라벨에 대해 적절한 신뢰임계값결정을 위해 도입한 metric



다만, 완전히 깨끗한 라벨을 얻는 것은 여전히 어려움을 겪고 있는데,
실험결과 생성된 노이즈가 있는 라벨에서 거짓 음성이 지배적임을 발견.

개선을 위해 FN mining이 도움이 되며, Mosaic와 같은 데이터 증강을 통해 FN시뮬레이션을 용이하게 한다.





 Conclusion

UDA_OD를 위한 새로운 학습 패러다임인 SFOD를 제안한다.

이는 Src Data를 직접사용하는 대신,
Src Domain에서 사전훈련된 모델만을 활용,
Supervision signal을 제공
하는 것이 핵심이다.

이는 noise가 있는 Label로 학습하는 관점에서 해결가능하다 보는데, 많은 Src data기반방법을 넘기도 하지만

Noise Label(FP,FN)을 완전히 제거하는 것에 대해 Unsupervised 방식이 매우 어렵다는점을 인정해야한다.

 

 

 

 

 

 

 


∙ Multi-Granularity Alignment Domain Adaptation for Object Detection (CVPR 2022)

 Abstract

DAOD는 Src와 Tgt간의 독특한 data분포로 난제이다.

🧐 저자의 제안:

Domain불변성학습을 위해 통합된 다중 해상도 정렬 기반의 OD-framework를 제안.
이를 위해 pixel∙instancecategory수준의 서로 다른 해상도 관점 간의 종속성을 동시에 인코딩해 두 도메인을 정렬합니다.

백본 네트워크에서 pixel-level feature map기반, Omni-Scale Gated Fusion 모듈을 개발,
스케일에 민감한 Conv로 instance의 구분력 있는 표현을 집계→ 견고한 다중 스케일 객체 검출을 유도.

동시에, 다중 해상도 판별자가 서로 다른 해상도(픽셀, 인스턴스 및 카테고리)가 어느 도메인에서 왔는지 식별하도록 제안.

특히, 다른 카테고리에서의 인스턴스 구분력 뿐만 아니라 두 도메인 간의 카테고리 일관성도 활용합니다.

다양한 도메인 적응 시나리오에서 실험을 수행하여 FCOS 기반의 앵커 프리 방식과 Faster R-CNN 기반의 앵커 기반 방식을 다양한 백본으로 사용한 상태에서 저자의 프레임워크의 효과를 입증.

 

 


 Conclusion



이 연구에서는 픽셀, 인스턴스 및 카테고리 수준의 다중 해상도 정보 간의 종속성을 인코딩하여 Src 도메인과 Tgt 도메인의 feature 분포를 더 정확하게 정렬했다.

특히, 제안된 omni-scale gated fusion 모듈은 가장 타당한 Conv로 다중 스케일 피쳐 맵에서의 instance feature를 활용할 수 있다.

다중 해상도판별자는 두 도메인에서 다른 카테고리의 인스턴스를 구별할 수 있다. 

 

 

 

 


Cross-domain adaptive teacher for object detection (CVPR 2022)

 Abstract

annotation이 달린 Src와 annotation이 없는 Tgt간의 Domain Gap을 줄이기위해 DA를 다루며
유명한 Semi-Supervised학습법인
Teacher-Student프레임워크(teacher model이 만든 유사라벨로 지도학습)는 cross-domain에서 좋은 성능.
다만 아래 2가지 취약점이 존재.
i) Domain Shift
ii) 많은 저품질유사라벨 생성 (ex. FP)

🧐 저자의 제안:

이 취약점완화를 위해 Adaptive Teacher; AT를 사용:
∙ Domain Adversarial Learning
weak-strong Data Augmentation
를 사용하는 teacher-student framework

∙ Domain Adversarial Learning:
  student모델에서 feature-level 적대적훈련
→ Src와 Tgt간의 유사한 분포를 공유하게함
Student모델이 Domain불변성을 생성하게함

 weak-strong Data Augmentation
 Teacher model: Tgt에서 data생성
 Student model: 양쪽에서 data생성
두 모델간의 상호학습(mutual learning)진행.
Teacher모델이 Src에 편향되어 학습되는걸 방지.





 


 Conclusion


Cross-Domain을 위해 AT라는 새로운 프레임워크를 제안.

Tgt 도메인 Teacher 모델과
Cross-domain Student 모델을 통해
Framework는 mutual-learning으로
Tgt Domain에서 올바른 라벨생성이 가능.

적절한 증강 전략과 적대적 학습을 사용한 학습 파이프라인 설계는 Teacher 및 Student 모델 양쪽에서 Src Domain에 편향되는걸 해결.

 

 

 

 


ConfMix: Unsupervised Domain Adaptation for Object Detection via Confidence-based Mixing (WACV 2023)

 Abstract

UDA: Detect instance의 annotation이 없는 새로운 Tgt Domain에서 Src Domain으로 훈련된 모델을 적응시키는 것.

🧐 저자의 제안:

이전의 여타방법들과 달리 저자는 ConfMix를 제안:
처음으로 적응형 검출기 학습을 위해
region-level 탐지 confidence기반 샘플혼합 전략.

가장 확실한 pseudo detection과 대응되는
Tgt 샘플의 local region을 Src와 혼합,
추가적인 consistency loss요소를 적용,
점진적으로 Tgt분포에 적응시킴

영역에 대한 confidence 점수를 확실히 정하기 위해,
검출기 의존적인 신뢰도와 Bbox 불확실성을 모두 반영하는 (신뢰도 점수 / pseudo detection)을 활용.

더불어, training 기간에 따라 느슨함~엄격함 방식으로
변화하는 신뢰 지표를 사용; 유사 Tgt Detection을 점진적으로 필터링하는 새로운 가짜 라벨링 체계를 제안.






 Conclusion


ConfMix: 신뢰도 기반 혼합 방법
이 방법은 Src에서 훈련된 detector를 비지도 방식으로
Tgt에 적응시키기 위한 것

<혼합방식>:
Tgt img의 가장 확실한 가상검출영역 + Src img
이는 샘플 데이터 확장을 위한 region-level전략

<Adaptation방법>:
pseudo detection에 대한 consistency loss 사용.

<Tgt에서의 성능개선 및 자연스러운 전환을 위해>:
점진적으로 신뢰도 지표를 제한하는 점진적 가짜 라벨링 체계 (progressive pseudo labelling scheme)사용.

 

 

 

 

 

 

ShadowSense: Unsupervised Domain Adaptation and Feature Fusion for Shadow-Agnostic Tree Crown Detection From RGB-Thermal Drone Imagery (WACV 2024)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Journal Paper

Object detection based on semi-supervised domain adaptation for imbalanced domain resources (Machine Vision and Applications 31 2020)

 Abstract

Keywords의 Self-place가 아닌, Self-paced이다.


Src Detector는 "불균형/일관성없는 Domain Shift"로 Tgt이 적은곳에 완벽히 일치❌

🧐 저자의 제안:

appearance & semantic level의 Domain Shift Adaptation을 위한 "Semi-supervised Detector"를 제안한다.
이를 위해 2가지 구성요소가 제안:
∙ instance와 batch normalization이 있는 Appearance 적응신경망 
판별기 손실 re-weighting하는 semantic 적응 신경망
   (불균형한 scale의 두 Domain간의 feature alignment(정렬)향상)


Self-paced training: 쉬운 것부터 어려운 것까지 점진적으로 Tgt도메인에서 유사라벨을 생성





 Conclusion



완전히 라벨링된 Domain → Image수준 라벨링만 있는 Domain으로 강건한 Detector를 설계.

특히, Src와 Tgt이미지 간의 Domain Shift문제를
Appearance & Semantic수준의 alignment로 해결했다.

또한 semantic level adapt과정 중 아래 2가지 문제가 발생.
∙ Scale불균형
∙ Vanishing Problem.
이를 위해 standard adversarial 신경망이 개발, 어려운 클래스 샘플에 초점.
더불어, Self-paced학습법을 도입, 성능개선. 

 

 

 

🏢 ETRI (2024.01.08)

📖 공부! (8:30-12:00)

셔틀버스 운행하는 곳이 내 자취방 근처라는 것을 알고? 일찍와서 공부를 시작할 수 있었다.
(근데 지난주 토요일에 진짜 배탈났었다ㅋㅋ..💦)
지난주에 미리 정리한 논문 리스트에 대한 Abstract와 Conclusion에 대해 정리해 보았다.
https://chan4im.tistory.com/220

 

[DA]: Relative Research paper Brief.

Survey Paper ∙ Deep Domain Adaptive Object Detection: a Survey (IEEE 2020) ∙ Unsupervised Domain Adaptation of Object Detectors: A Survey (IEEE 2023) Conference Paper ∙ Domain Adaptive Faster R-CNN for Object Detection in the Wild (CVPR 2018) ∙ Abs

chan4im.tistory.com

 
 
 
 
 
 
 
 
 
 

🍚 밥이다 밥! (12:30~13:00)

마찬가지로 동편제(한식)
깐풍기 나왔는데 요건 그냥 그랬다.
 
 
 
 
 
 

🏛️ 도서관? (13:00-13:30) 

되게 멋지게 되어있었고
아래 사진처럼 도서분류도 되게 심플하게 되어있어서 책 찾고 고르기도 상당히 쉬웠다!

 
 
 

📖 공부! (13:30-18:00)

지난주에 미리 정리한 논문 리스트에 대한 Abstract와 Conclusion에 대해 정리해 보았다.
이거 계속하고있고 내일도 계속할거같다ㅋㅋㅋ
 
오늘 한 총량은 9개❗️+ 1(집에와서 고려거란전쟁 보고ㅋㅋ 한편 더 진행했다.)
혹시나 적게한게 아닐까 걱정했는데 교수님께서 잘했다고 북돋아주셨다.
추가적으로 논문리뷰할 논문 선택하라고 하셔서 제일 어렵고 복잡한 논문을 골랐다.
바로 이 논문이다:

A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data (AAAI 2021)

 

A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data | Proceedings of the AAAI Conference o

 

ojs.aaai.org

솔직히 쉬운거 고르고 싶었지만 뭔가 이건좀;; 싶어서...ㅎㅎ
그리고 좀 어려운 논문같아 보여서 아직 시작도 안했지만 웬지모르게 걱정도 된다...
https://chan4im.tistory.com/220
 
 

 

🚍 퇴근! (18:30 - 19:00)

스쿼트 하는날은 자전거 절대 타면 안된다. 
힘 아껴서 가야지.
자전거 타고나서 하체에 힘빠지면 진짜 죽을수도 있겠다는 생각이 들기때문에💦
바로 셔틀버스타고 집으로 슝하고 날라갔다.
출퇴근은 셔틀버스가 제일 빠른거 같다. (Shortest Path Algorithm?)

 

🏋🏻 운동! (19:00 -)

오늘은 5X5 Strength A루틴 하는날.
카페인 시원하게 마시고 바로 Squat→Bench Press→barbell row 하러 갔다.
 
 

 
 
 

📌 TODO List:

1. 논문 List마저 읽기
∙ Multi-Granularity Alignment Domain Adaptation for Object Detection (CVPR 2022)
∙ Cross-domain adaptive teacher for object detection (CVPR 2022)
∙ ConfMix: Unsupervised Domain Adaptation for Object Detection via Confidence-based Mixing (WACV 2023)
∙ Object detection based on semi-supervised domain adaptation for imbalanced domain resources (Machine Vision and Applications 31 2020)


2. Deep Learning 2024(Bishop): Chapter 2 읽고 공부하기
∙ 2.1  The Rule of Probability
∙ 2.2  Probability Densities
∙ 2.3  The Gaussian Distribution
∙ 2.4  Transformation of Densities
∙ 2.5  Information Theory
∙ 2.6. Bayesian Probabilites


3. 논문 review:
A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data
 

A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data | Proceedings of the AAAI Conference o

 

ojs.aaai.org

 

'2024 winter > ETRI(일상)' 카테고리의 다른 글

[ETRI]2024.01.10  (4) 2024.01.10
[ETRI]2024.01.09  (2) 2024.01.09
[ETRI]2024.01.05  (4) 2024.01.05
[ETRI]2024.01.04  (0) 2024.01.04
[ETRI]2024.01.03  (4) 2024.01.03

i) Object Measurement

이미지에 나타난 객체의 크기를 알고싶을 수 있다.
단지 pixel수를 세어서는 크기를 알아낼 수 없기에 객체의 크기를 정교하게 측정하는 방법이 필요하다.
 Imaginea Labs에서 제안한 방법에 따라 사진상의 객체를 측정하는 과정을 단계별로 알아보자.
🤔 Reference Object
client의 사진만으로 신발사이즈를 추천해보자.
발치수 예측모델의 추론 시, 다양한 발자국 이미지를 처리하기에 Augmentation이 필수적이다.
또한, 카메라와 종이의 거리같은 요인또한 존재하기에 효과적인 solution을 만들기란 쉽지않다.
이런 scale문제는 거의 모든 client가 갖는 참조객체(Reference Object)를 image에 포함시켜 간단히 해결할 수 있다.
고객 대부분은 표준크기의 카드를 갖고 있을 것이므로 이를 보정객체(calibration object)로 활용할 수 있다.
좌측보다 우측이 좀 더 확대된 이미지
즉, 참조대상을 추가시켜 이를 해당 객체와 발을 비교하는 것으로 단순화시키는 것이다.

 

🤔 Segmentation
모델은 먼저 image를 2가지로 세분화해 추출해야한다.
 ∙ 신용카드
 ∙ 발자국
이를 위해 Mask R-CNN을 사용한다.
Mask분기를 통해 발자국, 신용카드 각각에 대한 마스크를 예측해 위 그림 우측처럼 유사한 결과를 얻는다.

이제 우린 위의 예측된 마스크를 아래처럼 개별적인 각각의 마스크로 볼 수 있다.
이제, 올바른 측정값을 얻기 위해 Mask들을 정렬해야한다.

 

🤔 회전수정
Mask를 얻은 후 회전에 대한 정규화를 수행해야한다.
회전을 수정하기 위해 각 Mask에 대해 PCA로 Eigen Vector값을 얻는다.
가장 큰 고유벡터의 방향의 객체의 크기 = 객체의 길이.
PCA의 특성상2번째 주성분부터의 고유벡터는 분산에 대한 기여도가 점점 줄어든다.
PCA이전, Mask의 차원은 좌측그림처럼 원본 이미지에 대한 차원축을 갖는 vector space에 존재한다.
PCA이후, 고유벡터들이 다른 vector space basis에 위치, 축이 가장 큰 분산의 방향을 따른다(우측그림).
 원래 좌표축과 첫번째 고유벡터사이의 각도를 이용해 얼마나 회전보정해야하는지 결정할 수 있다.

 

🤔 비율 및 측정
회전수정된 Mask를 통해 이제 발자국 측정이 가능하다.
❗️ 발자국과 신용카드의 측정값은 cm가 아닌, pixel단위라는 점에 유의
신용카드의 정확한 치수만 알면 필셀치수와 카드의 실제치수 사이 비율을 통해 신발 치수를 예측, client에게 제공해줄 수 있다.

 

 

 

 

 

 

 

 

 

 

ii) Counting

🤔 Filter 분해
아래 사진에서 포도의 알은 몇개일까?
지금까지의 소개한 개념을 기초로, 아래 접근방식 중 하나를 취할 수 있다.
  • Detection Classifier를 훈련, 열매를 검출, Bbox개수세기
    (박스가 열매를 합쳐버릴 수 있다는 단점)

  • Segmentation방법으로 접근, 군집의 속성에 따라 열매개수결정.
    (열매가 너무 작거나 크면 잘못된 결과 초래.)
    즉, 참조객체를 활용하기 곤란.

  • Regression문제로 접근, image자체로써의 열매수 측정.
    Segmentation처럼 scale문제가 존재.
1,2의 경우, 올바르게 분류되어야 함을 유의해야하고
3의 경우 회귀는 위치를 무시하는데, 위치정보는 이미지에서 중요하기에 이를 유의.

Sol) 밀도추정기술

 

🤔 밀도 추정
객체가 작고 겹치는 상황을 위해 2010년 제안된 논문.
이 방법은 Detection, Segmentation을 수행하지 않고, 위치정보도 잃지 않는다.

[Main Idea]
이미지의 patch에 있는 객체의 밀도를 추정하도록 신경망을 학습!
밀도추정을 위해 밀도를 나타내는 라벨이 필요. → 여기서는 열매 중심을 라벨로 지정.
즉, 신경망이 이 라벨을 추정하는 법을 배우는 것이다.

다만, 일부 열매는 patch에 부분적으로 걸쳐있을 수 있다.
→ 모델에 대한 grid입력 > patch_size

 

 

 

 

 

 

iii) Pose Estimation

🤔 Pose Estimation이란?
사람의 자세를 식별하기 위해 팔꿈치, 무릎, 얼굴 등을 식별하는 것. 
사람이 앉아있는지, 서있는지 등의 자세판별이 가능해 다음과 같은 곳에서 활용가능하다.

Papandreous et al; 2018

🤔 PoseNet
[1단계]

∙ Detection모델을 사용해 Interest point의 Heatmap을 식별
(일반적인 Interest point: 관절(joint or landmark), 눈, 코 등)
(Heatmap: Detection모델 classifier head에서 출력되는 점수 = threshold지정 이전값)

[2단계]
∙ Detect된 각 joint를 기준, 근처 joint의 가장 가능성있는 위치 식별.

[3단계]
∙ Hough Transform이라는 Weighted Voting Mechanism으로 1,2단계에 따라 선택된 Joint기반, pose검출.
이때, 2,3단계는 다양한 joint탐지를 위해 단순 detection모델로는 충분치 않기에 필수적이다.
그렇기에 joint와 joints사이의 offset도 예측하는 것이다.

 

🤔 다중객체의 pose estimation
단일 이미지에서 여러사람의 pose estimation을 위해 위의 step에 몇가지 기술추가가 필요하다.

1. segmentation모델을 활용, 사람에 해당하는 모든 pixel 식별
2. joint조합을 참고해 가장 가능성 높은 신체부위 식별
3. 각 사람에게 사람 pixel을 할당.
(1에서 찾은 mask의 Pixel과 2에서 식별한 가능성높은 joint를 이용.)

 

🧐 Human Pose Estimation 방식

1) Top-Down 방식

: 사람을 먼저 Detect → Detect된 자세를 추정.

정확도가 Bottom-up방식보다 높음.
검출된 사람들을 순회하며 joint들을 찾기에 속도가 Bottom-up방식보다 느리다
보통 저해상도에서 고해상도로 과정이 수행

즉, object detector를 사용해, 개별 instance를 식별(identifying), localizing → 한 사람의 포즈를 추정. 

ex) AlphaPose, Mask-RCNN


2) Bottom-Up 방식

joint를 먼저 Detect → 서로 연결해 자세를 추정.
정확도는 Top-down 방식에 비해 떨어짐.

Object Detection 과정이 없어 속도가 빨라 실시간 처리에 사용 가능
보통 고해상도에서 저해상도로 과정이 수행

즉, 확인되지 않은(identity-free) 의미론적 실체(semantic entities)를 지역화→사람 인스턴스로 그룹화

ex) OpenPose

cf) Pose Estimation Guideline

 

Pose Estimation Guide - Fritz ai

Almost everything you need to know about how pose estimation works Pose estimation is a computer vision technique that predicts and tracks the location of a person or object. This is done by looking at a combination of the pose… Continue reading Pose Est

fritz.ai

 

 

 

 

 

 

 

 

 

 

 

iv) Image Search

[핵심아이디어]: 서로 유사한 이미지에 서로 가까운 embedding이 있다.

🤔 분산 검색
유사한 임베딩 검색을 위해선?
Dataset의 image embedding에 대한 Search Index를 생성해야한다.
이 embedding index를 대규모분산데이터웨어하우스에 저장한다 가정하자.
이때, embedding과 다른 모든 embedding간의 유클리드 거리를 계산하고 가장가까운 일치항목을 표시한다.

 

🤔 빠른 검색
위의 예제에서 대규모데이터웨어하우스는 효율적 검색이 가능하지만
latency가 긴 경향이 있기에 ms로 응답시간을 얻을 수 없다.

실시간 serving을 위해 더 나은 유사 embedding searching방법을 찾아야한다.
이를 위해 ScaNN(Scalable Nearest Neighbors)를 사용할 수 있다.

 

🤔 더 나은 임베딩
더 맞춤화된 embedding을 사용할 수 있다.
ex) 얼굴유사성을 검색할 때, 얼굴을 식별하고 확인하도록 훈련된 모델의 embedding이 일반 embedding보다 더 성능이 좋다.

FaceNet:
목적: facial search
embedding최적화를 위해 얼굴특징을 기반
정렬된 일치/불일치 얼굴패치의 삼중항(triplet)을 사용.
삼중항: 일치하는 얼굴섬네일 2개 + 일치안하는 얼굴섬네일 1개

Triplet Loss:
가능한 최대거리만큼 양성쌍과 음성쌍을 분리하는 것이 목표인 함수.
라벨로 함께 군집화한 embedding생성에 사용가능.

<아래 3개의 image>로 정의된다.
 anchor이미지, 같은 label의 다른 이미지(두번째 이미지와 anchor가 양성쌍을 형성)
 다른 label을 갖는 3번째 이미지(세번째 이미지와 anchor는 음성쌍을 형성)
세 이미지에 대해 삼중항 (a,p,n)손실은 거리 d(a,p)가 0을 향하고
거리 f(a,n)이 f(a,p)보다 일정한 여유만큼 더 크게 정의된다.
이때,&nbsp; &alpha; 는 margin(= positive와 negative의 거리)을 의미.
이 손실에 대해 음성은 3가지로 나뉜다.
 Hard Negative: 양성보다 앵커에 더 가까움
 Easy Negative: 앵커에서 아주 멀리 떨어져있음

 Semi-Hard Negative: 양성보다는 멀리있으나 여유거리내에 있음

Linear Layer추가 후, Semi-Hard Negative에 초점을 맞춰 해당이미지의 삼중항손실을 최소화하도록 모델을 훈련시켜 embedding을 개선시킬 수 있다.
결과적으로 결과 embedding이 유사한 label로 clustering된다.

 

 

 

 

 

 

 

v) ETC (InternImage)

 

[논문 review] - InternImage(2023): Exploring Large-Scale Vision Foundation Models withDeformable Convolutions

📌 InternImage [CVPR 2023] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions Paperswithcode 홈페이지에서 Detection, Segmentation 등 많은 Benchmark Dataset에서 최고의 성능(SOTA)를 달성한 (무친

chan4im.tistory.com

 

 

 

🏢 ETRI (2024.01.05)

📖 공부! (9:00-12:00)

먼저 읽을 논문 리스트부터 뽑아보았다.

Unsupervised Domain Adaptation of Object Detectors: A Survey (IEEE 2023)
Deep Domain Adaptive Object Detection: a Survey (IEEE 2020)

Domain Adaptive Faster R-CNN for Object Detection in the Wild (CVPR 2018)
Multi-Source Domain Adaptation for Object Detection (ICCV 2021)
Multi-Granularity Alignment Domain Adaptation for Object Detection (CVPR 2022)
Progressive Domain Adaptation for Object Detection (WACV 2020)
SimROD: A Simple Adaptation Method for Robust Object Detection (ICCV 2021) 
ConfMix: Unsupervised Domain Adaptation for Object Detection via Confidence-based Mixing (WACV 2023)
Domain Contrast for Domain Adaptive Object Detection (IEEE 2021) 
Unsupervised Domain Adaptive Object Detection using Forward-Backward Cyclic Adaptation (ACCV 2020)
One-Shot Unsupervised Domain Adaptation for Object Detection (IEEE 2020)
A Free Lunch for Unsupervised Domain Adaptive Object Detection without Source Data (AAAI 2021)
Object detection based on semi-supervised domain adaptation for imbalanced domain resources (Machine Vision and Applications 31 2020)
Cross-domain adaptive teacher for object detection (CVPR 2022)

 

 

 

 

 

 

 

 

 

 

 

🍚 밥이다 밥!

마찬가지로 동편제(한식)... ETRI표 떡갈비 진짜 맛있었다!!(사실 경양식 불고기? 느낌이었지만)

 

 
 
 
 
 

🛠️ 서버 작업! (14:00-18:00) 

 

 


GPU 넣고 새로 OS(Linux) 깔고 작업하는데 힘들어 죽는줄ㅠㅠ

GUI에 문제가 있는 서버, Linux 접속이 안되는 서버 등등 GPU도 장착하고 약간 밑바닥부터 시작하는 느낌이어서 새롭기도 했고, 그동안 이미 만들어진 서버로 🍯빨고 있었던 것 같아서 좀 반성(?)도 되었던 시간이었다ㅎㅎ


 

 

 

 

 

 


 
 

🍚 밥이다 밥!

ETRI동기분들이랑 간단한? 식사를 가졌다.

미소야라는 곳에서 먹었었는데 총 12명(나포함)이 식당에 들어서니 한 공간을 다 차지해 버렸다.

식사로는 우삼겸 덮밥을 골랐다. (이름만 보고 골랐던게 진짜진짜 실수였다.)

우삼겹 덮밥이래요 이게...

우삼겸 덮밥....이게...?

내가 아는 우삼겹 덮밥은 간장소스 베이스로 만들어져야하는데

분명히 사진속에서는 약간 갈색빛이 돌았던 것 같았는데... 시뻘건 무언가가 왔다.

진짜 처음에는 다른사람 메뉴가 나한테 잘못 배달온줄 알았다.

매워 죽는줄 알았는데 감사하게도 물을 따라주셔서 살았다.(사실 이 글을 적는 지금도 배 아픈 것 같다)


 

 

 


 

🚲 퇴근! (21:00 -)

2차로 카페에서 아이스크림까지 먹고(다이어트 실패ㅋㅋㅋ)

당연히 자전거 타슈타고 퇴근했다. 퇴근길에 찍은 신세계 백화점은 멋있구만...

좌)주행중 사진;;&nbsp; &nbsp;우)신세계백화점


 

🏋🏻 운동! (22:00 -)

열심히 벤치프레스만 했다ㅎㅎ (하체는 자전거로 이미 유산소겸 하체운동겸 끝이라...)

현대인은 운동부족이랬나... 당연히도 매일같이 헬스장에 가서 운동을 하니까 난 상관없겠지?

근데 헬스장 밖에서 이렇게 찍으니 감옥같....ㅋㅋㅋ

 

 


 
 
 

📌 TODO List:

1. Detection분야 Domain Adaptation 논문 List: 
  ∙ Abstract, Conclusion 정리 → ppt만들기

2. Deep Learning 2024(Bishop): Chapter 2 읽고 공부하기

'2024 winter > ETRI(일상)' 카테고리의 다른 글

[ETRI]2024.01.10  (4) 2024.01.10
[ETRI]2024.01.09  (2) 2024.01.09
[ETRI]2024.01.08  (4) 2024.01.08
[ETRI]2024.01.04  (0) 2024.01.04
[ETRI]2024.01.03  (4) 2024.01.03

🛏️ 2024.01.03

사이클 및 헬스의 여파로 9시에 잠을 청해버렸다.
대략 새벽 4시정도에 기상할 것으로 기대한 내 마음과는 달리 11시에 칼같이 기상해 버렸다...
진짜 망했다ㅠㅠ
출근준비시간이 8시간이나 남아버린것...
 
어찌할 방도 없이 바로 공부 시작!🔥
 
공부를 하다보니 어느덧 4시... 출근시간까지 2시간 남아 잠을 잘까 말까 고민했지만 바로 냅다 자버렸다.
 
 
 
 
 
 
 
 
 
 

🏢 ETRI (2024.01.04)

🚕 가는 길

🏃🏻 출발!

새벽 6시에 알람을 맞췄지만 귀신같이 일어난 시각은 8시 10분!!

물론 일어날 때도 귀신같이 "으악! 늦었다, 치코쿠 치코쿠(지각)~"하면서 일어나 버렸다.
(또 늦잠 자버렸다ㅠㅠ 데자뷴가...)

 
운이 좋게도(?) 타슈(🚲)가 날 반겨주고 있을 시간 따윈 없었다!
바로 카카오T 택시 잡고 출발했다!!!
 
 

🏢 ETRI 도착!

택시에서 내리니 8시 50분경... 9시까지인줄 알고 허겁지겁 달리니 정문에서 보안요원?들이 어디가시는거냐 물었고, 인턴하러 간다고 답했다.
다시 찾아보니 9시 30분까지였던건 안비밀ㅠㅠ 내 7500원💦

 
어찌저찌 통과한 뒤 아래 사진의 큰 건물로 들어가서 OT를 들었다.

 

가까이 가보니 1동 건물이라고 하는데 여기 회의실에서 간단한? OT를 가졌다.
OT에서 보안서약서 쓰고 출입증을 받았다ㅎㅎ

 

🏢 과연 내가 있을 건물은?

OT가 끝나고 12동에 배정받아 가는길에 연못도 보여서 구경하다보니

 
 
12동에 도착해버렸다!
12동 건물이 제일 멋진듯?

도착해서 간단하게 자리배정 및 프로젝트 주제배경설명만 듣고 질의응답을 진행했다.
프로젝트 주제도 비밀...
 
 

🍚 밥이다 밥!

도착해서 간단하게 자리배정 및 프로젝트 주제배경설명만 듣고 질의응답 후 밥을 먹으러 갔다.

서편제와 동편제(특식)가 있었는데, 동편제가 2500원 더 비쌌다.
신기했던 점은 모든 밥과 반찬을 양껏 담을 수 있다는 점이었다! 그래서 위 사진처럼 진짜 많이 받아서 먹었다.
 
 
 
 
 

📖 공부! (13:00-18:00)

식사 후 교수님께서 친절하게 ETRI 건물 안내해 주셨고, 간단하게 데이트?를 즐긴다음 공부에 돌입했다.
공부내용은 Domain Adaptation!
공부내용은 ETRI(공부 참조!)

 

[DA]: Visual Domain Adaptation

Part 1. Basic Concepts. &. Traditional Methods 📌 Basic Concepts 🤔Domain과 DA란? Domain: 데이터가 유래한 곳이나 특정 분포를 의미 DA 기본개념: 아래와 같이 source와 target 분포간의 Domain Shift가 발생하고, 그 정

chan4im.tistory.com

 
 
 
 
 
 
 

🏃🏻 퇴근! (18:00 -)

아 진짜 힘들다ㅋㅋㄲ
퇴근길 한장  찰칵


빨리가서 벤치랑 스쿼트나 해야겠다ㅋㅋ
 
 
 
 

📌 TODO List:

1. Detection분야 Domain Adaptation 논문 읽기
  i) Deep Visual Domain Adaptation - VI.C. Object Detection part
 ii) Domain Adaptive Faster R-CNN for Object Detection in the Wild

2. PaperswithCode Search

3. 관련 GitHub Search
 

Deep Visual Domain Adaptation: A Survey

Deep domain adaption has emerged as a new learning technique to address the lack of massive amounts of labeled data. Compared to conventional methods, which learn shared feature subspaces or reuse important source instances with shallow representations, de

arxiv.org

 

Domain Adaptive Faster R-CNN for Object Detection in the Wild

Object detection typically assumes that training and test data are drawn from an identical distribution, which, however, does not always hold in practice. Such a distribution mismatch will lead to a significant performance drop. In this work, we aim to imp

arxiv.org

 

Papers with Code - Paper tables with annotated results for Unsupervised Domain Adaptation of Object Detectors: A Survey

Paper tables with annotated results for Unsupervised Domain Adaptation of Object Detectors: A Survey

paperswithcode.com


 

GitHub - zhaoxin94/awesome-domain-adaptation: A collection of AWESOME things about domian adaptation

A collection of AWESOME things about domian adaptation - GitHub - zhaoxin94/awesome-domain-adaptation: A collection of AWESOME things about domian adaptation

github.com

 

Papers with Code - Domain Adaptation

**Domain Adaptation** is the task of adapting models across domains. This is motivated by the challenge where the test and training datasets fall from different data distributions due to some factor. Domain adaptation aims to build machine learning models

paperswithcode.com

 

Papers with Code - Open World Object Detection

Open World Object Detection is a computer vision problem where a model is tasked to: 1) identify objects that have not been introduced to it as `unknown', without explicit supervision to do so, and 2) incrementally learn these identified unknown categories

paperswithcode.com

 
 

'2024 winter > ETRI(일상)' 카테고리의 다른 글

[ETRI]2024.01.10  (4) 2024.01.10
[ETRI]2024.01.09  (2) 2024.01.09
[ETRI]2024.01.08  (4) 2024.01.08
[ETRI]2024.01.05  (4) 2024.01.05
[ETRI]2024.01.03  (4) 2024.01.03

Part 1. Basic Concepts. &. Traditional Methods

📌 Basic Concepts

🤔 Domain과 DA란?

Domain: 데이터가 유래한 곳이나 특정 분포를 의미

DA 기본개념:
아래와 같이 source와 target 분포간의 Domain Shift가 발생하고,
그 정도가 심해지면 test성능은 떨어진다.

 

🤔 synthetic data란?

target domain과 유사한 source dataset을 synthetic data라 한다.

 

 

🤔  DA의 목적


인 target과 source dataset에 대해


를 만족하는
transformation T(.)함수를 찾는 것.

 

∙ Concept Shift [Ling et al; ICCV2013]

∙ Prior Shift [Kouw & Loog ; 2018]

등이 있었으나 본 내용은 Covariate Shift문제에 대해 다룬다.

 

 

 

 

 

 

 

📌 Traditional DA

Metric Learning

Metric Learning은 "거리기반"DA를 진행한다.
Src, Tgt의 label이 같다면 threshold보다 거리가 가깝도록 학습한다.

단점) Source, Target의 label이 모두 필요.

 

 

Subspace Representations

Src와 Tgt이 다른 subspace에 놓여있을 때,
이 둘의 subspace에 대해 subspace를 sampling하거나 Integration하는 등 alignment(조정)하여 해결.

 

 

Matching Distributions

Domain Shift로 인한 Distribution차이를 직접적으로 해결

📌 MMD방식 (Maximum Mean Discrepancy)
1. Src와 Tgt를 Hilbert Space(Completeness를 갖는 내적공간)로 mapping
2. Distribution의 차이를 계산
(Intra class간의 차이는 적어야하고)
(Inter class간의 차이는 커야함)

cf) MMD를 변형해 source sampling에 weight를 학습하거나 resampling하는 방법도 존재


📌 TCA방식 (Transfer Component Analysis)
TCA방식은 Feature space → Hilbert space → Latent space로 옮겨가며 mapping하는 W를 학습하는 방법이다.




📌 DIP방식 (Domain Invariant Projection)
TCA 역순, MMD minimize하도록 학습.

 

 

 

 

 

 

 

Part 2. Visual DA in Deep Learning

DNN을 통해 출력된 Deep features는 더 추상적이고 이미 Domain bias가 줄어들었기 때문에 Deep Learning의 도입은 빠른 성능발전을 야기시킬 수 있었다.

 

또한, 더 깊게 fine-tuning하는 것이 마지막 층에서만 하는 것보다 나은 효과를 보였다

 

MMD-based Network

📌 Deep Domain Confusion(2014)
[Src Domain]:
labeled data로 Lc를 최적화 + Tgt의 Unlabeled data로 feature vector추출
→ Src와 Tgt data간의 MMD 계산, minimize

 

 

 

DANN(🌟)

Domain-Adversarial Training of Neural Networks (2015)


[목적]:
∙ Src domain에서 classification성능이 높아야함. (Discriminativeness는 유지)
∙ Src domain과 Tgt domain을 구별하지 못해야함. (Domain-Invariance도 고려)

일종의 GAN에서 사용되던 Discriminator를 가져다 사용한 느낌!
다만, 이전 방법들은 Feature space Distribution을 match하기위해 Reweighting, transformation을 찾는 방법을 사용했으나
DANN은 ① Feature Representation자체를 바꾸는 방식 + ② DA와 Deep Feature Learning을 하나의 학습과정안에서 해결한다. 추가적으로 ③ 분포간 차이측정 시, Deep Discriminatively-Trained Classifier를 사용(GAN컨셉) 또한 사용한다.

Feature Extraction을 위한 Embedding model에 대해
Src Domain Classification Loss를 줄임
Domain Classifier는 Src인지 Tgt인지 구분
이때, Domain구분못하게 학습해야해서 Gradient를 바꿔서 backward한다.

 

 

 

 

 

 

 

 

 

Part 3. Beyond Classical DA

그림에 굉장히 많은 것들이 표시되어 있는데, 이중에서 대표적인 방식 4가지만 여기서 짚고 넘어가자.

 

 

 

i) Transfer Learning

가장 기본적인 방식, Pretrained model과 Tgt data만 필요.
Src data로 pretrain → Tgt data로 Fine-tuning

 

 

ii) Semi-supervised DA

labeled Src data와 labeled Tgt data 같이 활용.

Domain과 상관없이 Class가 동일하면(Intra-class) Loss가 작아지게 학습하고
Class가 다르면(Inter-class) Loss는 어느 정도까지 (보통 margin을 설정해) 커지게 학습

 

 

 

iii) Transductive Unsupervised DA

🤔 Truansductive...?
labeled Src data와 Unlabeld Tgt data를 사용해 학습하는 것

 

 

 

iv) Self-Supervised Learning

Label없이 학습가능한 self-learning task생성 후, 이를 이용해 Unlabeled Learning을 진행.
위의 Jigsaw퍼즐처럼 쪼개어 섞은 후, 원래의 순서를 학습하도록 하는 것이다.
이는 Src data와 Tgt data의 유무에 다라 다른 기법들과 같이 사용가능하다.

Ex)
Tgt > Src : Transfer Learning과 같이 사용
Labeled Src 가 존재 : Unsupervised DA방식 사용

 

 

 

 

 

 

 

 

 

Part 4. Perspectives. &. Outlook

📌 Multi-Domain Learning

🤔 Mutli-Domain Learning? 그게 뭐죠
여러 도메인에서 발생하는 데이터를 사용해 모델을 학습하거나 적용시켜 새로운 환경에서 강건하게 동작하게 하는 기술.
Domain: 데이터가 유래한 곳이나 특정 분포를 의미,

Multi-domain learning은 주로 다음과 같은 상황에서 활용된다:
∙ Domain Adaptation: 모델이 학습한 도메인과 테스트 도메인이 다를 때 발생하는 문제를 해결하기 위해 사용. 
Domain Generalization: 여러 도메인에서의 데이터를 사용하여 일반적인 특성을 학습함으로써 새로운 도메인에 대한 성능을 향상시키는 것을 목표. 즉, 모델이 여러 도메인에서 얻은 지식을 더 일반적인 형태로 확장하는 것을 의미.

이점)
∙ 메모리 절약 및 multi-task효과,
Incremental Learning (존에 학습된 지식을 유지하면서 새로운 데이터 또는 클래스를 추가해 모델을 업데이트 하는 것.)


이에 대해 어떻게 sharing/seperation을 진행할 것인지에 대한 다양한 MDL방법론이 존재한다.
∙ Independent Networks
Maximally Shared
Residual Adapters

 

 

 

📌 Meta-Learning for DA & DG

Meta-Learning Brief

🤔 DA vs Meta-Learning

[DA]: 
 목표) 학습된 모델을 다른 도메인으로 전이(transfer), 성능향상을 위해 모델을 조정.

 방법) 주로 한 도메인에서 얻은 데이터를 사용하여 모델을 학습, 그 모델을 다른 도메인의 데이터에 적용합니다.
이를 위해 도메인 간의 차이를 최소화하거나 조정하는 방법을 적용합니다.

[Meta-Learning]:
∙ 목표) 은 데이터에서 빠르게 학습하고 일반화할 수 있는 모델을 만드는 것이 목표로 학습하는 방식 자체의 개선으로 새 도메인에 빨리 적응,학습에 초점.
즉, "좋은 Inductive Bias"를 찾는 것이 중요!

 방법) 작은 데이터셋에서 빠르게 학습하고 새로운 작업에 대해 일반화할 수 있는 학습 방법이나 알고리즘을 개발합니다.

[Summary]
DA: 하나의 도메인에서 학습된 모델을 다른 도메인으로 전이하는 방법에 중점
[Meta-Learning]: 모델 자체의 학습 방식을 개선하여 새로운 작업이나 도메인에 빠르게 적응하고 일반화하는 방법에 중점

 

 

Meta-Learning for DA 

많은 인기있는 DA알고리즘들은 좋은 시작점에 위치했는지에 의존적이다.
→ 이에 대해 Meta-Learn이 좋은 시작점이 될 수 있을까?


 

 

Meta-Learning for DG

DG Problem설정에 대해 생각해보자.


🤔 어떻게 Meta객체를 정의할 것인가?
Multi-Src에서, validation domain성능을 최적화해야한다.

어떤 하이퍼파라미터를 (meta)-learning에 사용해야할까?


∙ MetaReg (NeurIPS-18):
MetaReg는 도메인 일반화를 위해 메타-정규화를 사용, 일반화 성능향상을 위해 메타-정규화를 가정합니다.

∙ Feature-Critic (ICML-19):
Feature-Critic는 이질적인 도메인 일반화를 위한 기법 중 하나로 특징 품질을 평가하는 '비평가(critic)' 네트워크를 추가적인 손실 함수로 사용하여 도메인 간의 차이를 줄이고 일반화 성능을 향상시키려고 합니다.

🤔 어떻게 Meta-최적화를 할 것인가?
Meta-Learning에서 최적화는 일반적으로 비용이 많이 들고 불안정한 경우가 많은데, 이를 극복하기 위해 몇 가지 방법들이 제안된다.


∙ Bilevel Optimization:
meta-train 단계에서, 모델을 최적화하는 동안 다른 최적화 문제를 해결하는 방법으로
메타-트레이닝에서 더 나은 성능을 갖는 모델을 찾기 위해 메타-러닝을 수행한다.


실제 적용:
실제로는 전통적인 모델 업데이트와 함께 모델을 업데이트하고, 메타-러닝을 사용하여 도메인 간의 성능을 개선하는 방법을 번갈아가며 적용한다.
이러한 접근 방식들은 메타-러닝에서의 최적화를 개선하고, 비용과 안정성 문제를 극복하기 위한 것이다.

🤔 Conclusion
Meta-DA 및 Meta-DG가 기존의 DA & DG 연구를 보완할 수 있다는 점을 강조한다.

 

 

 

 

📌 Emerging Problem Areas & Applications

DG: Heterogeneous Case

∙ Homogeneous DG (동질적 도메인 일반화):
공유된(Src와 Tgt에서 동일한) Label space가 존재. 즉 label의 종류가 동일하거나 공유된다.


 Heterogeneous DG (이질적 도메인 일반화): 
Src와 Tgt 간 Label space가 안겹치거나 분리되어 있다.
이런 경우, 주로 특징 일반화(Feature Generalization)에 초점을 맞춥니다.
즉, Label space가 다른데도 특징(feature)을 일반화하려는 것이 중요합니다.
Ex) ImageNet pretrained CNN을 feature extractor로 다른 도메인의 이미지에 대한 특징을 추출하고 이를 통해 일반화를 시도

 

 

Cross-Domain FSL

 Traditional FSL(Few-Shot Learning):
meta-train에서 획득한 지식을 meta-test로 전이(transfer), 일반화하는 방식.


 CD-FSL (Cross-Domain Few-Shot Learning):
Domain-shift를 고려한 Few-Shot Learning.
Meta-Dataset과 같은 접근 방식은 어떻게 도메인 간의 변화를 전이하고 학습하는지에 초점 

 "Learned Feature-Wise Transforms" (ICLR-20)
특징별로 변형된(transformation) 학습.
stochastic layers는 DG를 향상시킬 수 있다는 것을 보여준다.
또한, Meta-Learning을 적용해 Noise Distribution 학습을 시도했다.

 

 

 

Sim2Real Meta-Learning

∙ 목표: Sim2Real for Object Detection & Segmentation:

∙ Meta Representation: Simulator/Dataset.
Idea: 시뮬레이터를 학습, 해당 시뮬레이터가 생성하는 데이터를 실제 환경에서 사용할 수 있는 형태로 만들어 모델을 학습시키면, 실제 환경에서 높은 정확도를 얻을 수 있을 것.

cf) RL/Evoluation Strategy 필요(시뮬레이터는  미분 불가능하기 때문.)

Simulator는 미분 불가능한(non-differentiable) 특성을 갖기에, 이를 다루기 위해 RL 또는 ES와 같은 기법들이 필요하며, 이런 접근 방식은 시뮬레이션 환경에서 생성된 데이터를 실제 환경에 적용할 수 있는 방식으로 학습하여, 객체 감지와 분할에서 시뮬레이션에서 실제로 사용될 때의 성능을 향상시킨다.


 

 

 

 

 

 

 

 

📌 InternImage [CVPR 2023]

InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions

Paperswithcode 홈페이지에서 Detection, Segmentation 등 많은 Benchmark Dataset에서 최고의 성능(SOTA)를 달성한 (무친성능의) 모델이다.

 

🤔 Brief

Architecture

 

Basic block: transformer와 같이 Layer Norm, FFN으로 구성
StemDownsampling layer: 기존 CNN의 설계(s2, p1은 각각 stride=2, padding=1)

 

 

 

 

목적

ViT, EfficientNet처럼 새로운 backbone모델Computer Vision분야에서도 GPT같은 foundation model을 만들겠다!!
(By. Deformable Convolutions)

 

 

 

 

 

 

 

 

 


1.  태생적인 CNN의 문제점과 극복

🤔 Why? Transformer > CNN

최근, ViT와 같은 Attention-base 모델들이 CNN보다 널리 사용되고 좋은 성능을 낸다.

 

Reason 1)

∙ CNN은 3x3처럼 고려 
 Transformer(MSA)는 모든 input을 고려.
 CNN은 Receptive field가 너무 작아 상대적으로 멀리보지 못함(= Long-Range Dependency 차이)

Reason 2)

CNN은 layer가 쌓이면서 이런 단점을 극복되는 것이 철학.
항상 모든 input을 고려, 학습하는 ViT와 비교해 넓은 공간적 통합이 부족


Ex) ERF의 경우
  ∙ ViT의 경우, layer는 항상 input에 적절한 영향을 받는다.
  ∙ CNN은 filter_size의 크기에 따라 커진다.
(ERF: 출력층의 하나의 뉴런에 영향을 미치는 input_pixel들의 공간 크기를 나타내는 것.)

 

 

 

 

 

 

 

 

 


Sol) DCN (Deformable Convolution)

1. ERF

  • Convolution filter가 고정되지 않고 알아서 퍼지기에 넓은 범위를 볼 수 있다!!
  • 이에 대한 증명으로 ERF를 사용 (ERF 확인 시, 넓게 퍼짐을 통해 증명)


2. ViT & Main Contribution

따라서 이 논문에서는 SOTA ViT에서 MSA 대신, 

"DCN(Deformable Convolution)을 잘 끼워 넣는다는 것"이 주요 내용이다.

→ 정확도∙연산량 등 transformer SOTA보다 더 좋다는 것이 main contribution


3. DCN v1 / DCN v2

[등장이유]

  • 크기, 포즈, 시점 등의 이유로 SIFT, Affine transform 등의 전처리가 필요한 경우가 존재.
  • CNN내에서, 알아서 conv연산이 필요한 경우, conv연산이 이루어지도록 학습해보자!라는 취지

 

 

[기존 CNN 연산]

3x3 filter의 경우, 하나의 output feature element를 만들기 위해 다음과 같은 연산을 진행한다.

  • Feature vector의 3x3크기만큼 conv연산 진행, 그 값을 모두 더함 하나의 element로 만드는 작업을 반복

 

[DCN V1의 주장]

  • 이때, pn을 학습하게 하는 것이 DCN 이다!

 

📌 이때, pn 3x3상수가 아닌, learnable param인 ∆pn이 된다면?

→ 이상적으로 알아서 학습이 필요한 위치에서 convolution이 진행될 것.

 

 

🚩 위치 학습 방법

1. 기존 convolution과 별개로 pn을 학습할 수 있는 convolution(∆pn)을 하나 더 붙임
2. p 를 weight처럼 학습
3. 그 p 를 feature x를 통해 convolution을 진행.
4. 이를 통해 위치정보가 반영된 convolution을 할 수 있게 됨.

 

 

 


[DCN V2의 주장]

위치 + 중요도∙영향력도 고려.

  • filter의 위치에 따른 영향력, mn(modulation변수)를 고려해보자! 

 

🚩 영향력 학습 방법

1. 앞과 같이 단순히 convolution을 하나 추가
2.
같은 방법으로 영향을 받는 정도까지 학습

 


 

4. DCN V3

<기존 DCN V1, V2의 문제점>

위의 DCN V2를 그대로 ViT에 넣으려고 하니 다음과 같은 문제가 발생

문제점

Prob 1) ViT SOTA에 끼워넣을 때, Convolution 개수에 따라 linear하게 parameter와 memory복잡성이 증가

Prob 2) DCN V2의 modulation이 불안정


ERF의 경우

  ∙ modulation filter의 sigmoid: 어떨 때는 평균이 1에 가깝고 어떨 때는 0에 가까움
  ∙ 이는 output에서 어느 것이 중요한지 판단이 안됨 (= 불안정)

 

 

 

 

 

<DCN V3의  3가지 Solution>

1. MobileNet에서 사용되는 "Depthwise Convolution"을 도입, weight를 합침
(= 경량화; 최종 결과를 토대로 볼 때, 성능보다는 연산량, 경량화를 우선)
weight를 합쳐 경량화를 하기 위해
   i) group을 나눠 group별로 하나의 weight만 학습하게 함
   ii) 그 group안에서 Depth-Wise Convolution을 진행, position과 modulation 학습
   iii) 이때, modulation factor는 softmax로 계산

2. Self-Attention처럼 MHA의 느낌이 나도록 "Group Convolution"을 도입


3. Sigmoid대신 Softmax를 사용 (→ 불안정성을 3x3 filter로 해결)

 

 

 

 

 

 


🤔 Appendix와 마무리...

ViT에서 benefit을 가져오고, EfficientNet처럼 쌓는다.(Scaling규칙)

 

 

 

Appendix

Appendix 내용을 볼 때, Stage별 ERF를 보면, 
∙ Stage 1,2에서는 작은 부분을 보고
 Stage 3,4에서는 ERF가 크게 커지는 것을 알 수 있다.



추가적으로, ResNet은 ERF가 학습이 되든 말든 Local하게 존재하지만
InternImage는 ERF가 Stage 3, 4가 넘어가게 되면, ERF가 많이 커짐을 알 수 있다. 

 

 

 

 

Limitation

높은 속도를 요구하는 경우, 그렇게 좋지는 않다.
(MobileNet에서 사용되는 "Depthwise Convolution"을 도입해 weight를 합침을 통해 경량화를 진행했음에도 불구하고)
But, 자신들이 처음이어서 봐달라는 식으로 마무리되었다.

🛏️ 2024.01.02

연말동안 너무 놀았다는 생각과 후회로 급히 인턴십을 위한 배경지식을 조금이라도 쌓고자 다시 공부를 시작했다.

공부를 하다보니 잘 시간이 거의 다 되어 새벽 6시알람을 맞춘 후 인턴십 발대식에 갈 생각에 잠에 들었다.

 

 

 

🏢 ETRI (2024.01.03)

🚲 가는 길

🏃🏻 출발!

새벽 6시에 알람을 맞췄지만 귀신같이 일어난 시각은 11시!!

물론 일어날 때도 귀신같이 "으악! 늦었다, 치코쿠 치코쿠(지각)~"하면서 일어나 버렸다.

 

운이 좋게도(?) 새로운 모델의 타슈(🚲)가 날 반겨주고 있었다.

앞으로의 길이 얼마나 험난할 지는 모른 채, 행복하게 타슈에 탑승해 출발했다ㅎㅎ

 

 

🚴🏻 가는 길!!

그래도 평탄한 자전거 도로가 신세계 백화점까지는 이어져서 그나마 덜 힘들게? 21분동안 자전거를 탔다.

신세계 백화점

 

위의 사진을 뒤로 진짜 지고쿠(지옥)가 펼쳐졌는데, 오르막길 진짜 힘들어 죽는줄 알았다ㅠㅠ

(돌아올 때, 페달 밟지도 않고도 이곳까지 돌아올 수 있는 걸로 말 다했다 진짜...)

 

 

진짜 진짜 힘들게 페달을 밟고 낑낑대면서 가다보니 바닥에 부산 국제영화제 바닥마냥 연구소들 팻말? 같은게 쫙 깔려있었는데 신기했다.

국방과학연구소 (ADD)

어릴 적, 초등학교 때부터 가보고 싶었던 국방과학 연구소도 보였고,

이번 겨울방학 인턴을 하게 될 ETRI도 보였다.

한국전자통신연구소(ETRI)

 

또 조금 가다보니 아래처럼 사택이 있었는데 LG연구원들을 위해 제공되는? 집 같았는데 되게 깔끔하고 직장도 가깝고 

LG의 복지가 좋다고 새삼 느낄 수 있게 되었다.

 

 

 

🏢 ETRI...??

가다보니 드디어 ETRI가 보였다.

심지어 자녀가 있는 ETRI연구원분들을 위해 ETRI 어린이집까지 바로 옆에 있는 걸 봐선 대전에 있는 연구단지들의 연구소들은 거의 대부분 직원복지가 상당히(너무) 좋아보였다.

그런데 생각한 것 보다 아담한 규모에 조금 의아했었기에 카카오맵을 다시 보니 갈길이 멀리도 있었다.

(갈길도 멀었는데 심지어 모두 오르막길이라 진짜 힘들었..💦)

 

 

 

 

🏢 ETRI...!!

진짜 큰 규모에 이게 연구단지구나 싶게 여러 연구소들이 밀집한 지역에 들어섰고, 멀디 먼 갈길을 재촉해서 가니

드디어! ETRI를 영접?하게 되었다. 엄청난 규모에 놀랐고, 내일부터 인턴십할 생각에 설레버렸다🔥!

 

 

 

 

 

 

🏫 UST 연구인턴십 발대식

약 40분정도 걸쳐 1시 정각에 도착을 하게 되었다! (자전거 주행시간만 37분...)

연구인턴십 발대식을 시작했는데 ETRI쪽이 가장 사람이 많았던 것? 같았다.

무려 대강당의 2줄 반정도...

 

이후 4분정도가 발대식 발표를 해주셨는데, 무려 8.1 : 1의 경쟁률을 뚫었다는 말씀을 해주셨다.

(특히 ETRI의 경우, 인기가 많았던것 같은게 나는 면접에서만 10명 지원자들이 있었던 것을 생각하면 진짜 지원자들이 많았던 것 같았다.)

질문해주시면 소정의 상품을 드립니다라는 말씀에 귀신같이 질문을 드렸다.

 

질문 이후 아래와 같은 상품?을 받았는데 뭐...머그컵이나 수건이겠지...라고만 생각했었는데

 

강의 다 끝나고 ETRI인턴 지원하신 분들과 연락처 교환한 이후 포장을 뜯어보니 이게 웬걸?

1단 독서대가 톽! 

 

 

 

집에서 아주 유용하게 사용하고 있다ㅎㅎ

(집에 오니 자전거로만 소모한 칼로리가 무려 400kcal... 진짜 힘들었다💦)

 

 

내일부터는 인턴십에서 배운 내용들을 정리하는 좀 더 알찬 내용을 적고자 한다.

(한번도 이런 일상내용?을 적은 적이 없었기에...)

'2024 winter > ETRI(일상)' 카테고리의 다른 글

[ETRI]2024.01.10  (4) 2024.01.10
[ETRI]2024.01.09  (2) 2024.01.09
[ETRI]2024.01.08  (4) 2024.01.08
[ETRI]2024.01.05  (4) 2024.01.05
[ETRI]2024.01.04  (0) 2024.01.04

📌 목차

1. The Impact of Deep Learning
2. A Tutorial Example

3. A Brief History of Machine Learning

 

 


1. The Impact of Deep Learning

preview
Deep Learning은 상당히 강력하고 다목적을 위해 data로부터 학습된다.
또한, 요즘에는 AI와 Machine Learning이라는 용어가 서로 대체되어 사용된다.

꾸준한 발전으로 인해 AGI는 매우 급격한 발전을 이룩했는데, 특히 LLM은 매우 두드러진 능력을 보인다.
즉, LLM은 AGI로 가는 길의 효시라 할 수 있다.

 

본문 예제
주 내용: "기존 일상의 문제들" → 직접 algorithm을 짜서 풀기에는 문제가 난해하였음.
❗️Deep Learning을 사용함으로써 이를 해결.
(by. 많은 양의 training set 확보, 이를 training(=learning)시킴으로써 모델이 문제를 풀게함.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


2. A Tutorial Example

input(training set): x1, . . . , xN
target set: t1, . . . , tN

목표: 새로운 x에 대해 t값을 잘 예측하는 것 = generalization

 

Linear Models
Linear Model들은 선형적인 unknown parameter라는 중요한 특징이 있을 뿐만 아니라 "중요한 한계점"또한 존재.

 

Error Function
training data에 다항식을 fitting시켜 error function을 최소화 시킬 수 있다.

 

Model Complexity
이때, Model의 M(다항식 차수)를 고르는 것은 남아있는 중요한 과제이다.
M의 값에 따라 model이 overfitting이 될 수도, underfitting이 될 수도 있기 때문이다.
이때, Overfitting이 보통 주요한 문제이기 때문에 Regularization을 Loss항에 도입한다.

 

Regularization
위의 Loss function은 L2 Regularize항을 추가한 것으로
가 성립하며,  λ계수는 regularize항과 MSE항 간의 상대적 중요성을 결정하는 상관계수(coefficient)로 Loss function에 penalty를 줌으로써 overfitting의 정도를 결정할 수 있다.

 

Model Selection
λ는 w 결정을 위해 J(w)를 최소화하는 동안 고정되는 하이퍼파라미터이지만
단순히 w와 λ에 대해 에러 함수를 최소화해 λ → 0으로 수렴하게 되면, error값이 작은 과적합된 모델이 되어버릴 수 있다.
마찬가지로 단순히 M에 대한 trainingset의 오차를 최적화하면 M의 값이 커지고 과적합 될 수 있다.
따라서 하이퍼파라미터의 적절한 값을 찾기 위한 방법을 찾아야 한다.

위의 결과는 가능한 데이터를 가져와 train-valid-split방법을 제안한다.
trainset으로 w를 결정하고 validset에서 가장 낮은 오차를 갖는 모델을 선택한다.
그러나 제한된 크기의 dataset를 사용해 모델을 여러 번 설계하면, validset에 과적합될 수 있기에
마지막으로 선택된 모델의 성능을 평가하기 위해 세 번째 테스트 세트를 유지해야 할 수도 있다.

∙ Cross Validation
일부 응용 프로그램에서는 훈련 및 테스트용 데이터의 제공이 제한될 수 있다.
좋은 모델을 구축하려면 가능한 많은 데이터를 사용하여 훈련해야 하지만 validset이 너무 작으면 예측 성능의 상대적으로 노이즈가 많은 추정치를 제공할 수 있다.
이러한 딜레마의 해결책 중 하나는 아래 그림에서 설명된 교차 검증을 사용하는 것이다.
이를 통해 데이터의 (S - 1)/S의 비율로 훈련에 활용모든 데이터를 사용하여 성능을 평가할 수 있다.

∙ 'leave-one-out' 기법
특히나 데이터가 부족한 경우, datapoint의 총 수인 N과 같은 경우인 S = N을 고려하는 것. 


교차 검증의 주요 단점:
∙ S의 배수로 학습 실행 횟수가 증가되어, 자체적으로 계산 비용이 많이 드는 모델에서 문제가 될 수 있다는 것.
∙ 단일 모델에 여러 복잡성 하이퍼파라미터가 있을 수 있으며, 이런 하이퍼파라미터들의 설정을 조합하는 것은 지수적으로 많은 학습 실행 횟수를 요구.

 

 

 

 

 

 

 

 

 

 

 

 

 

 


3.  A Brief History of Machine Learning

Step 1. single neuron은 선형결합(Linear Combination)으로 생성됨
Step 2. 생성된 single neuron에 non-linear function으로 transform.

이를 수학적으로 표현하면 아래와 같다.
이때, a라는 값은 pre-activation이라 불리며, 
f(.)activation funtion이라 불리고 yactivation이라 불린다.

 

Backpropagation 
MLP에서 중간 층의 노드는 hidden unit이라 하는데, 이는 trainset에 나타나지 않는 값이기 때문이다.
(trainset은 input과 output값만 제공하기 때문.)

여러 층의 가중치를 가진 신경망을 학습하는 능력은 1980년대 중반쯤부터 다시 관심이 증폭되는 계기가 되었는데, 특히, 확률 이론과 통계학에서의 아이디어가 신경망과 머신 러닝에서 중요한 역할을 한다는 것이 인식되었다.
학습에서의 배경 가정들, 사전 지식이나 귀납적 편향으로 불리기도 하는 것들이 포함될 수 있음을 한 가지 중요한 통찰은 말해준다.
이러한 가정들은 명시적으로 통합될 수 있는데, 예를 들어 피부 병변의 분류가 이미지 내 병변의 위치에 의존하지 않도록 신경망의 구조를 설계할 수 있다. 또는 모델의 수학적 형태나 훈련 방식으로부터 발생하는 암묵적인 가정 형태로 나타날 수 있습니다.



❗️Backpropagation 사용이유?
모델은 수천억개의 파라미터를 가지며, Loss function은 이런 parameter들의 높은 비선형함수일 것이기에
∙ Loss function을 닫힌 형태(e.g 선형 회귀)로 최소화하는 것이 아니라

파라미터에 대한 Loss function의 도함수(= ∂J(w) / ∂w)를 기반으로
반복적인 최적화 기술(= Backpropagation Algorithm)을 통해 최소화해야 한다.
이러한 모든 과정은 전문적인 컴퓨팅 하드웨어가 필요하며 상당한 계산 비용이 들 수 있다.

 

Deep Networks
많은 가중치를 가진 신경망을 '심층 신경망(deep neural networks)'이라고 하며, 이러한 신경망에 중점을 둔 기계 학습의 하위 분야를 '딥 러닝(deep learning)'이라 한다(LeCun, Bengio, and Hinton, 2015).
위 그림은 최첨단 신경망을 훈련하기 위해 필요한 연산 주기의 증가를 나타내며, 연산 주기의 두 가지 구분된 성장 단계를 보여준다.
수직 축은 지수적 스케일을 가지며 (petaflop/s-days) 단위로 표시된다.
∙petaflop: 1015(천 조)개의 부동 소수점 연산
∙petaflop/s-days: 초당 하나의 피타플롭을 의미.
petaflop/s-days은 24시간 동안 피타플롭/초의 속도로 계산되고, 대략 1020개의 부동 소수점 연산을 나타내며, 그래프의 최상단은 인상적인 1024개의 부동 소수점 연산을 나타낸다. 그래프의 직선은 지수적 성장을 나타낸다.

혁신적인 아키텍처 개선이나 더 정교한 형태의 귀납적 편향을 포함하는 경우
즉, 모델이 특정한 가정이나 선행 지식을 사용해 데이터를 해석
 --> 성능 향상


∙ 표현 학습(representation learning)
심층 신경망의 숨겨진 레이어 역할
신경망이 입력 데이터를 의미 있는 새로운 표현으로 변환, 마지막층이 해결해야 할 훨씬 더 쉬운 문제를 만들어낸다(Bengio, Courville, and Vincent, 2012).
이러한 내부 표현은 전이 학습을 통해 관련된 문제의 해결을 가능하게 할 수 있다.

∙ Foundation Models
여러 가지 downstream 작업에 적합하게 조정되거나 세부 조정될 수 있는 큰 신경망
넓은 적용 가능성을 갖도록 대규모이고 이질적인 데이터 세트를 활용할 수 있다(Bommasani et al., 2021).


∙ 규모 이외 방법을 이용한 발전.
규모 확장 외에도 딥 러닝의 성공에 도움이 된 다른 발전 사항들이 있었는데, 예를 들어, 단순한 신경망에서 깊은 신경망의 연속적인 층을 통해 역전파될수록 훈련 신호가 약해지는 현상을 해결하기 위해 잔차 연결(residual connections)을 도입(He et al., 2015a).

또 다른 주요 발전방법: by coding:
역전파를 수행하여 오류 함수의 그래디언트를 계산하는 코드 = loss.backward()
→ 순방향 전파를 지정하는 코드에서 자동으로 생성하는 자동 미분 방법의 도입. = autograd 내장.
 

torch.autograd 에 대한 간단한 소개

torch.autograd 는 신경망 학습을 지원하는 PyTorch의 자동 미분 엔진입니다. 이 단원에서는 autograd가 신경망 학습을 어떻게 돕는지에 대한 개념적 이해를 할 수 있습니다. 배경(Background): 신경망(NN; Neur

tutorials.pytorch.kr

 

 

🧐 정리

∙ LLM ← AGI로 가는 효시.

 Deep Learning의 목표:
Generalization이 잘 되도록 하는 Universal Approximation이 목표, 
이를 위해 적절한 model의 차수 M을 찾는것이 목표. (over/underfitting문제)


이때, input과 output제외, trainset에 안나타나는 값을 hidden unit이라 함.

∙ 확률론과 통계학이 중요한 이유?
학습에서 prior, posterior, inductive bias 등의 포함가능성으로 인해 모델이 잘 작동하지 못할 수 있음.
물론, 정교한형태의 inductive bias를 포함하면 모델이 특정 가정이나 선행지식으로 데이터 해석을 하여 성능향상도 가능함.


∙ Representation Learning?
hidden layer의 역할, 문제해결을 더 쉽게 만드는 것.
input을 "유의미한 새로운 표현으로 변환하는 것."


❗️Backpropagation 사용이유?
Loss function=수천억개 parameter의 높은 비선형함수일 것이기에
∙ Loss function을 닫힌 형태(e.g 선형 회귀)로 최소화하는 것이 아니라
파라미터에 대한 Loss function의 도함수(= ∂J(w) / ∂w) 기반,
반복적인 최적화 기술(= Backpropagation Algorithm)을 통해 최소화 진행.

 

📌 목차

1. YOLO v3로 정지영상에서 Object Detection하기
2. YOLO v3로 비디오에서 Object Detection하기(랩탑 캠사용)

 

0.  파일준비 및 YOLO v3 공통코드

먼저 자신의 로컬 폴더에 다음 3개의 파일이 있어야한다.
'coco_names.txt' (이 파일은 1~80행까지 복사후 txt파일을 생성해 붙여넣는다.)
'yolov3.weights'
'yolov3.cfg'


이후 아래 코드에 대해 설명해보겠다.
- 5~13행: YOLO 모델 구성함수
- 15~38행: YOLO모델로 img영상에서 물체탐지 후 반환하는 함수
def construct_yolo_v3():
    f=open('coco_names.txt', 'r')
    class_names=[line.strip() for line in f.readlines()]

    model=cv.dnn.readNet('yolov3.weights','yolov3.cfg')
    layer_names=model.getLayerNames()
    out_layers=[layer_names[i-1] for i in model.getUnconnectedOutLayers()]
    
    return model,out_layers,class_names

def yolo_detect(img,yolo_model,out_layers):
    height,width=img.shape[0],img.shape[1]
    test_img=cv.dnn.blobFromImage(img,1.0/256,(448,448),(0,0,0),swapRB=True)
    
    yolo_model.setInput(test_img)
    output3=yolo_model.forward(out_layers)
    
    box,conf,id=[],[],[]		# 박스, 신뢰도, 클래스 번호
    for output in output3:
        for vec85 in output:
            scores=vec85[5:]
            class_id=np.argmax(scores)
            confidence=scores[class_id]
            if confidence>0.5:	# 신뢰도가 50% 이상인 경우만 취함
                centerx,centery=int(vec85[0]*width),int(vec85[1]*height)
                w,h=int(vec85[2]*width),int(vec85[3]*height)
                x,y=int(centerx-w/2),int(centery-h/2)
                box.append([x,y,x+w,y+h])
                conf.append(float(confidence))
                id.append(class_id)
            
    ind=cv.dnn.NMSBoxes(box,conf,0.5,0.4)
    objects=[box[i]+[conf[i]]+[id[i]] for i in range(len(box)) if i in ind]
    return objects

model,out_layers,class_names=construct_yolo_v3()		# YOLO 모델 생성
colors=np.random.uniform(0,255,size=(len(class_names),3))	# 클래스마다 색깔​

 

05~13행의 construct_yolo_v3 함수를 살펴보자.
∙ 06~07행은 COCO 데이터셋의 클래스이름을 담고 있는 coco_names. txt 파일에서 클래스 이름을 읽어 class_names에 저장한다.

09행은 YOLO v3 모델 정보를 파일에서 읽어 yolo_model 객체에 저장한다.

yolov3.weights 파일에서는 신경망의 가중치 정보를 읽어오고 yolov3.cfg 파일에서는 신경망의 구조 정보를 가져온다.

10~11행은 getUnconnectedOutLayers 함수를 이용하여 yolo 82, yolo 94, yolo_106 층을 알아내어 out_layers 객체에 저장한다.

13행은 모델, 층, 클래스 이름을 담은 객체를 반환한다.


15~38행의 yolo_detect 함수를 살펴보자.
16행은 원본 영상인 img의 높이와 너비 정보를 height와 width에 저장한다.

17행은 OpenCV의 blobFromImage 함수로 영상을 YOLO에 입력할 수 있는 형태로 변환해 test_img에 저장한다.
이 함수는 [0,255] 범위의 화솟값을 [0,1]로 변환하고 영상 크기를 448 X 448로 변환하며 BGR 순서를 RGB로 바꾼다.원본 영상은 img에 남아있다.

19행은 test_img에 저장되어 있는 영상을 신경망에 입력한다.

20행은 신경망의 전방 계산을 수행하는데, out layers가 출력한 텐서를 output3 객체에 저장한다.
이로 인해 Ouput3 객체는 아래 3가지 텐서를 갖는다.
14×14×85×3,
28×28×85×3,
56×56×85×3 

 22~34행은 output3 객체로부터 물체 위치를 나타내는 박스 정보와 함께 물체 클래스와 신뢰도 정보를 추출한다.
22행은 박스와 신뢰도, 클래스정보를 저장할 리스트를 생성한다.
23행은 세 개의 텐서를 각각반복 처리하며
24행은 85차원 벡터를 반복 처리한다.
85 차원 벡터는 (x, y, w, h,o, p1. p2, … p80)으로 표현되며
앞의 네 요소는 박스, o는 신뢰도, 뒤의 80개 요소는 클래스확률이다.

 25~27행은 뒤의 80개 요소 값에서 최고 확률에 해당하는 클래스를 알아내 클래스 번호는 class_id, 확률은 confidence에 저장한다.

 28행은 confidence가 0.5보다 크지 않으면 버린다.
0.5보다 크면 29~31행에서 [0,1] 범위로 표현된 박스를 원래 영상 좌표 계로 변환해
왼쪽 위의 위치를 x와 y, 너비와 높이를 w와 h에 저장한다.

 32~34행은 박스와 신뢰도, 클래스 정보를 리스트에 추가한다. 박스는 왼쪽 위와 오른쪽 아래 구석 좌표를 저장한다.


 22~34행으로 검출한 박스들에는 상당한 중복성이 있다.
즉, 이전시간에 설명한 그림에서 빨간색 유니폼 선수를 검출한 박스가 검은색 칸에만 나타나지 않고 그 주위에 여럿 나타나는 현상이다.

 36행의 NMSBoxes 함수는 박스를 대상으로 비최대 억제를 적용해 중복성을 제거한다.

 37행 은 비최대 억제에서 살아남은 박스의 위치, 신뢰도, 클래스 이름을 모아 objects 객체에 저장한다.

 38행은 objects를 반환한다.

∙ 40행은 contruct yolo_v3 함수로 YOLO 모델을 구성한다.

∙ 41 행은 물체 클래스를 고유한 색으로 표시하기 위해 컬러 목록을 만들어 colors 객체에 저장한다.

 

 

 


1. YOLO v3로 정지영상에서 Object Detection하기

메인 프로그램이 시작되는 
∙ 43행은 입력 영상을 읽어 img에 저장한다.
∙ 46행은 yolo_detect 함수로 원본 영상 img에서 물체를 검출해 res에 저장한다.
∙ 48~52행은 res에 있는 박스와 클래스 이름, 신뢰도를 영상에 표시한다.

프로그램 실행 결과를 보면, 왼쪽과 오른쪽 선수를 각각 100%와 94.1% 신뢰도의 person 클래스로 제대로 검출했다.
또한 축구공을 99.9% 신뢰도로 sports ball 클래스로 옳게 검출했다.
img=cv.imread('soccer.jpg')
if img is None: sys.exit('파일이 없습니다.')

res=yolo_detect(img,model,out_layers)	# YOLO 모델로 물체 검출

for i in range(len(res)):			# 검출된 물체를 영상에 표시
    x1,y1,x2,y2,confidence,id=res[i]
    text=str(class_names[id])+'%.3f'%confidence
    cv.rectangle(img,(x1,y1),(x2,y2),colors[id],2)
    cv.putText(img,text,(x1,y1+30),cv.FONT_HERSHEY_PLAIN,1.5,colors[id],2)

plt.imshow(img[...,::-1])

 

 

 

 

 

 

 

 

 

 

 

 


2. YOLO v3로 비디오에서 Object Detection하기 (랩탑 캠사용)

∙ 43~64행은 웹 캠에서 비디오를 읽어 디스플레이하는 코드에 YOLO를 적용한다.
∙ 50행은 비디오에서 획득한 현재 프레임을 yolo_detect 함수에 입력해 물체를 검출하고 결과를 res에 저장한다.
∙ 52~56행은 검출한 물체 정보를 영상에 표시한다. 
cap=cv.VideoCapture(0)
if not cap.isOpened(): sys.exit('카메라 연결 실패')

while True:
    ret,frame=cap.read()
    if not ret: sys.exit('프레임 획득에 실패하여 루프를 나갑니다.')
        
    res=yolo_detect(frame,model,out_layers)   
 
    for i in range(len(res)):
        x1,y1,x2,y2,confidence,id=res[i]
        text=str(class_names[id])+'%.3f'%confidence
        cv.rectangle(frame,(x1,y1),(x2,y2),colors[id],2)
        cv.putText(frame,text,(x1,y1+30),cv.FONT_HERSHEY_PLAIN,1.5,colors[id],2)
    
    cv.imshow("Object detection from video by YOLO v.3",frame)
    
    key=cv.waitKey(1) 
    if key==ord('q'): break

 

+ Recent posts