본문 바로가기

분류 전체보기

(124)
11 모델 배포 (2) 모델 경량화 1. Knowledge Distillation 지식 증류(Knowledge Distillation)는 복잡한 신경망은 교사 신경망의 지식을 학습하는 단순한 신경망인 학생 신경망에 전달하여 성능을 개선하는 방법이다. 응답 기반 지식 증류(Response-based) 교사 신경망의 출력값을 활용해 학생 신경망을 학습시키는 방법이다. 교사 신경망의 출력값을 soft label(각 클래스에 대한 확률분포)로 사용하요 학생 신경망이 해당 확률 분포를 모방하도록 학습한다. 확률분포는 소프트맥스로 구하는데 이때 온도 매개변수 T를 추가한다. T는 소프트맥스 출력 분포를 변화시키는 용도인데, T가 크면 출력 분포가 넓어지고, T가 작으면 출력 분포가 좁아진다. 손실 함수를 코드로 보면 다음과 같다. def distil..
쿨백 라이블러 발산 wikipedia 쿨백 라이블러 발산(Kullback-Leibler divergence, KLD)은 두 확률분포의 차이를 계산하는 데 사용하는 함수로, 어떤 이상적인 분포에 대해, 그 분포를 근사하는 다른 분포를 사용해 샘플링을 한다면 발생할 수 있는 정보 엔트로피 차이를 계산한다. 의미 어떠한 확률분포 $P$가 있을 때, 샘플링 과정에서 그 분포를 근사적으로 표현하는 확률분포 $Q$를 $P$ 대신 사용할 경우 엔트로피 변화를 의미한다. 따라서, 원래의 분포가 가지는 엔트로피 $H(P)$와 $P$ 대신 $Q$를 사용할 때의 교차 엔트로피 $H(P, Q)$의 차이를 구하면 다음과 같다. $D_{KL}(P \parallel Q)=H(P, Q)-H(P)$ $=( -\underset{x}\sum p(x) \lo..
11 모델 배포 (1) 모델 경량화 모델 경량화(Model Compression)란 모델 크기와 연산량을 줄여서 작은 메모리 공간과 적은 연산량으로도 효율적으로 작동할 수 있게 만드는 프로세스를 의미한다. 모바일이나 임베디드 환경에서는 제한된 메모리 및 연산 능력을 가지고 있으므로 모델 경량화가 중요하다. 임베디드 환경(Embedded Environment)은 늑정한 기능이나 작업을 수행하기 위해 설계된 전용 시스템이나 장치를 가리킨다. 이러한 임베디드 시스템은 주로 특정한 작업에 중점을 둔 하드웨어와 소프트웨어의 조합으로 이루어져 있다. 예를 들면 웨어러블 기기, 자율 주행 차량 등이 있다. 모델 경량화의 주요 이점은 다음과 같다. 모델 크기 감소 : 작은 모델은 메모리 요구사항이 적어 메모리 용량 제약이 있는 모바일 장치나 임베디드 시..
URL 데이터 다운로드 urllib.request.urlretrieve() 함수는 지정된 URL에서 파일을 다운로드하여 로컬 파일 시스템에 저장하는 데 사용됩니다. urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None) url: 다운로드할 파일의 URL을 나타내는 문자열입니다. filename: 로컬 파일 시스템에서 저장할 파일의 경로와 이름을 나타내는 문자열입니다. 이 매개변수를 생략하면 다운로드된 파일의 내용이 메모리에 저장됩니다. reporthook: 다운로드의 진행 상황을 추적하기 위한 콜백 함수입니다. 기본값은 None이며, 다운로드 상태를 표시하는 데 사용될 수 있습니다. data: POST 요청의 데이터를 나타내는 바이트열입니다. 기본값..
10 비전 트랜스포머 (3) CvT pytorch 실습 CvT(Convolutional Vision Transformer)의 이론적인 내용은 이전 포스팅에서 확인할 수 있다. 2024.03.12 - [논문 리뷰] - [논문 리뷰] CvT: Introducing Convolutions to Vision Transformers ViT, Swin Transformer와 마찬가지로 허깅페이스 라이브러리로 사전 학습된 CvT 모델을 FashionMNIST 데이터셋으로 간단한 fine tuning 실습을 진행한다. 코드가 거의 동일하기 때문에 변경점과 모델 구조 등을 알아보고 평가 결과만 확인한다. 이미지 프로세서 "microsoft/cvt-21" 모델은 이미지 크기를 조절할 때 shortest_edge 키를 사용해 전처리를 진행한다. shortest_edge는 이미지..
[논문 리뷰] CvT: Introducing Convolutions to Vision Transformers Vision Transformer와 CNN에 대한 지식이 있다면 논문 내용이 어렵지 않으니 직접 읽어보시는 것을 추천함 CvT: Introducing Convolutions to Vision Transformers 1. Introduction ViT(Vision Transformer)는 이미지를 겹치지 않는 패치로 분할(예를 들면 16x16)한 뒤 특수한 위치 인코딩과 함께 표준 Transformer layer에 입력한다. 이는 분류를 위해 패치간의 global relationship을 모델링한다. ViT가 대규모 데이터셋에 대해서는 괜찮은 성능을 보였지만 적은 데이터로 훈련됐을 때는 CNN보다 낮은 성능을 보였다. 이는 ViT가 CNN이 가지고 있는 이미지 데이터에 대한 귀납적 편향이 부족하다고 설명될..
10 비전 트랜스포머 (2) Swin Transformer pytorch 실습 Swin Transformer의 이론적인 내용은 이전 포스팅을 참고 바랍니다. 2024.03.09 - [논문 리뷰] - Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 허깅페이스 라이브러리로 사전학습된 Swin 모델을 FashionMNIST 데이터셋에 미세 조정하는 실습을 해본다. 학습 전에 patch embedding 출력과 patch merging 출력 등을 확인하여 논문에서 배운것과 동일한지 확인해보고 모델 학습을 진행한다. 사전 학습된 Swin 모델 불러오기 "microsoft/swin-tiny-patch4-window7-224" 모델을 사용한다. ImageNet-1K 데이터셋으로 224x224, 패치 해상도 4x4,..
[논문 리뷰] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 1. Introduction Transformer의 언어 도메인에서의 높은 성능을 vision 도메인으로 전이하는데 있어 2가지 challenges가 있다. scale의 차이 word token과 비교하여 visual elements는 scale에서 차이가 있다. token이 고정된 scale을 가지고 있어 vision 응용에 적합하지 않다. 단어에 비해 이미지는 너무 고해상도 pixel을 가지고 있다. pixel level에서 sementic segmentation 작업 같은 dense prediction은 적합하지 않다. self attention의 복잡도가 이미지 크기에 ..