[Pytorch] 허깅페이스 Feature Extractor

Mollang·2023년 3월 22일
0

딥러닝

목록 보기
2/2

HuggingFace의 feature extractor를 알아보자.

  • HuggingFace는 ai플랫폼으로, 트랜스포머 기반으로 하는 다양한 모델과 학습에 사용되는 기능을 구현해놓은 모듈이다. 자연어, 음성, 이미지, 멀티모달 등의 모델이 오픈되어있다.

최근 ViT모델을 학습 중인데 HuggingFace에서 원하는 모델을 클릭하면, 해당 모델을 inference하는 코드를 확인할 수 있다. google vit base 모델의 경우, img데이터를 사전에 feature extractor에 통과시킨 후 리턴값을 모델에 넣어 추론하는 구조였다.

살펴볼 모델은 ViT로, google/vit-base-patch16-224이다.

🤗 허깅페이스에서 해당 메서드가 어떤 기능을 수행하는지 확인할 때엔 HuggingFace 깃에서 소스 코드를 확인하는 것을 추천한다.

허깅페이스에서 feature extractor의 정의는 다음과 같다.

A feature extractor is in charge of preparing input features for audio or vision models. This includes feature extraction from sequences, e.g., pre-processing audio files to Log-Mel Spectrogram features, feature extraction from images e.g. cropping image image files, but also padding, normalization, and conversion to Numpy, PyTorch, and TensorFlow tensors.

  1. 먼저 코랩에서 google/vit-base-patch16-224의 feature extractor를 로드하여 어떤 기능을 수행하는지 확인해보자.
extractor  = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224')
print(extractor)
  • 출력
ViTFeatureExtractor {
  "do_normalize": true,
  "do_rescale": true,
  "do_resize": true,
  "image_mean": [
    0.5,
    0.5,
    0.5
  ],
  "image_processor_type": "ViTFeatureExtractor",
  "image_std": [
    0.5,
    0.5,
    0.5
  ],
  "resample": 2,
  "rescale_factor": 0.00392156862745098,
  "size": {
    "height": 224,
    "width": 224
  }
}

사이즈 조정, 정규화 등 모델 사전 학습 전에 필수로 수행되어야 하는 기능을 수행하는 것을 확인할 수 있다.
즉 전처리 모듈인 것이다.

  1. 허깅페이스 도큐먼트를 확인하자.
  • 파라미터

(1) PIL IMAGE : 일단 PIL 이미지 객체를 INPUT으로 받는다.
(2) SIZE : (SIZE, SIZE) 크롭할 사이즈를 전달할 수 있다.
만약 파라미터로 전달한 사이즈보다 이미지의 크기가 작다면, Padding을 통해 나머지를 채워넣는다.

이미지 데이터를 augmentation을 하지 않는다면 단순하게 PIL을 사용해 이미지를 오픈하고 Feature extractor에 집어 넣어 편하게 전처리를 진행할 수 있을 것이다.
그러나 보통은 augmentation은 거의 필수로..진행하기때문에 그럴 일은 없을 것 같다.
추론을 할 때 편하게 이미지를 전처리하는 용도로 사용하면 편할 것 같다.

결론은, huggingFace에서 feature Extractor 모듈은 전처리 모듈이다.


+) feature extractor를 구글링하다가, TIMM의 feature extraction 모듈을 발견하였다.
사용하는 모델의 feature extractor(구조적 의미)에서 원하는 구조만 cut한 객체를 저장한다. 그 객체에 image를 전달하여 cut 이후 feature extractor가 이미지 피쳐를 어떻게 추출하는지 확인할 수 있다.

https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055#0583

0개의 댓글