Kaggle - Colab API 연동

Page content

개요

  • API 토큰을 내려받은 후, 구글 코랩에서 데이터를 다운로드 받도록 한다.

API 토큰 발급

  • Kaggle Profile - Settings - API를 순차적으로 클릭 후, Create New Token 버튼을 클릭한다.

Untitled

  • 아래 화면처럼 다운로드를 받을 수 있다.

Untitled

Google Colab API 코드 업로드

  • 이제 해당 파일을 바탕화면 등 적당한 곳에 위치시킨 후 아래 코드를 실행한다.
# kaggle.json 파일을 업로드하세요.
from google.colab import files
files.upload()

Untitled

Untitled

  • 마지막으로 ~/.kaggle 폴더를 만들고 키 파일을 복사한 후, 보안을 위해 현재 사용자만 이 파일을 읽을 수 있도록 하는 명령어(chmod 600)를 실행한다.
!mkdir ~/.kaggle
!cp kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json

캐글 데이터 다운로드

  • 이제 사용할 데이터를 내려받는다.
!kaggle competitions download -c dogs-vs-cats
  • 만약 403 Forbidden 에러 발생 시, 이는 데이터셋에 연관된 규칙에 미동의한 상태로 동의를 진행해야 한다. https://www.kaggle.com/c/dogs-vs-cats/rules 페이지로 이동 후, I Understand and Accept 버튼을 누른다.

Untitled

압축 풀기

  • 훈련 데이터는 dogs-vs-cats.zip 이름의 압축 파일이다.
  • unzip 명령어를 활용하여 압축 파일을 풀도록 한다.
  • 압축 해제 시, unzip 메시지가 출력되지 않도록 옵션을 추가한다. (-qq)
!unzip -qq dogs-vs-cats.zip
!unzip -qq train.zip

Untitled

데이터셋 분리

  • 훈련 데이터, 검증 데이터, 테스트 데이터셋으로 분리하는 코드를 작성한다.
import os, shutil, pathlib

original_dir = pathlib.Path("train")
new_base_dir = pathlib.Path("cats_vs_dogs_small")

def make_subset(subset_name, start_index, end_index):
    for category in ("cat", "dog"):
        dir = new_base_dir / subset_name / category
        os.makedirs(dir)
        fnames = [f"{category}.{i}.jpg" for i in range(start_index, end_index)]
        for fname in fnames:
            shutil.copyfile(src=original_dir / fname,
                            dst=dir / fname)

make_subset("train", start_index=0, end_index=1000)
make_subset("validation", start_index=1000, end_index=1500)
make_subset("test", start_index=1500, end_index=2500)
  • 위 코드를 실행하면 왼쪽 그림과 같이 설정 되어 있는 것을 확인할 수 있다.

Untitled

  • train 폴더에는 각각 1,000개의 이미지가 존재한다.
  • validation 폴더에는 각각 500개의 이미지가 존재한다.
  • test 폴더에는 각각 1,000개의 이미지가 존재한다.