DeepLearning 5

[On-device AI] Pytorch 모델 TFLite로 변환하기(torch->onnx->tf->tflite)

On-device에서 딥러닝 모델을 이용하기 위해 pytorch 모델을 tensorflow lite로 변환하는 방법을 정리해 보겠습니다. 주로 딥러닝 학습은 python에서 pytorch를 이용하여 수행됩니다. 하지만 모바일 또는 엣지 디바이스에서 이용하려면 C++이나 JAVA에서 딥러닝 모델을 불러와야 합니다. Tensorflow lite를 통해 C++, JAVA, Kotlin, Swift에서 딥러닝 모델을 사용할 수 있어 온디바이스를 개발에 많이 이용됩니다.  1. torch-> onnxonnx는 torch, tensorflow와 같은 서로 다른 딥러닝 프레임워크를 호환되게 사용할 수 있도록 만들어진 공유입니다. 우선 torch model을 onnx로 저장합니다. 이때 모델 그래프와 가중치가 함께 저..

DeepLearning 2024.12.26

[CV] ViT 모델 구조 정리

자연어처리 분야에서 Transformer 구조가 SOTA를 차지하며 우수한 성능을 입증했습니다.이러한 Transformer 구조를 Computer Vision 분야에 처음 적용한 논문이 바로 아래 링크의 논문이고, 이를 기반으로 한 방식을 Vision Transformer, 줄여서 ViT라고 합니다.Paper link: https://arxiv.org/pdf/2010.11929 1. ViT 모델 구조위 그림은 ViT의 모델 구조를 도식화한 figure입니다.  a. Patch embedding이미지를 Transformer 입력으로 넣기 위해 이미지를 Patch 단위로 나누어 flatten하게 됩니다. 이후 linear projection을 통해 transformer의 입력 feature size로 맞춰줍..

DeepLearning 2024.10.06

[MLLM] 구글의 오픈소스 VLM 'PaliGemma' 로컬 튜토리얼

PaliGemma란?구글의 오픈소스 경량화 VLM(Vision Language Model) 입니다. 우선 VLM 답게 이미지와 텍스트를 동시에 받아 텍스트를 생성할 수 있어요. 추가적인 학습 없이 OCR, Image Captioning, Segmentation 등의 간단한 Task를 수행할 수 있습니다. 같은 구글에서 만든 Gemini와는 달리 Gemma는 오픈소스라 모델 가중치와 소스코드 모두 공개가 되어있어요. 그리고 경량화된 모델이라 컴퓨팅 성능이 부족하더라도 시도해 볼 수 있답니다.위 그림을 PaliGemma의 모델 아키텍처인데 SigLIP와 Gemma가 합쳐진 형태로 VLM을 개발했어요. SigLIP를 이용해서 이미지를 Encoding 하고 Embedding된 Prompt와 concat해서 Ge..

DeepLearning 2024.10.02

[HuggingFace] OSError: 허깅페이스 403 에러를 아십니까?

발생 상황허깅페이스에서 모델을 불러올 때 계속 아래와 같은 403에러가 발생했습니다. 인터넷도 원활하고, 권한도 부여받았는데 계속 이런 문제가 발생하더라고요..Exception has occurred: OSErrorWe couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like google/paligemma-3b-pt-224 is not the path to a directory containing a file named model-00002-of-00003.safetensors.Checkout your internet connection or see ..

DeepLearning 2024.10.01

[Pytorch] collate_fn: 데이터 샘플을 배치로 합치는 함수

1. Array shape이 다른 데이터를 로드하기 위해 사용!일반적으로 Pytorch의 Dataloader는 Dataset의 리턴을 batch 단위로 concatenate해서 리턴하도록 설계되어있어요. 그러나 각 sample의 array shape이 일치하지 않으면 오류가 발생한답니다.array shape이 다른 대표적인 상황- 시퀀스 길이가 제각각인 시계열 데이터- 샘플마다 Node 수가 다른 그래프 데이터이러한 상황에 사용할 수 있는 것이 바로 collate_fn 입니다! 2. collate_fn 이란?collate_fn은 Dataset에서 getitem 함수로 리턴하는 샘플을 하나의 batch로 모아주는 함수입니다. Dataloader에 입력으로 collate_fn을 넣게되면 작동한답니다. 3. ..

DeepLearning 2024.08.08