Dog Breed Identification | Kaggle
www.kaggle.com
1. 데이터 다운로드
Colab에서 진행했으므로 !gdown을 통해 train.zip, test.zip, sample_submission.csv, labels.csv 파일을 다운로드하였다.
!gdowm 방법
file ID를 통해 구글 드라이브에 올려둔 파일을 colab에 바로 내려받을 수 있다.
방법은 아래의 코드에서 id 자리에 file ID를 적으면 되는데, 이는 구글 드라이브에 올린 파일 공유 시 뜨는 링크의 d/ 와 /view 사이에 있는 file ID를 적으면 된다!
!gdown https://drive.google.com/uc?id=
다운로드 후, train과 test 파일은 zip형태로 묶여 있으므로 unzip하여 파일을 풀어준다.
!unzip 방법
!unzip -qq [풀려는 대상] -d [압축 풀 경로]
!unzip -qq '/content/train.zip' -d '/content/train/'
!unzip -qq '/content/test.zip/ -d '/content/test/'
glob을 통해 파일 수 확인
len(list(glob.glob('/content/train/*.jpg')) # 10222
len(list(glob.glob('/content/test/*.jpg')) # 10357
2. 폴더 세팅
새로운 폴더를 생성해서 그 폴더의 하위에 견종별로 이미지를 저장하기 위해 폴더를 세팅하도록 하겠다.
폴더 이름은 trian_sub라고 해두겠다.
trian_data_folder = '/content/train/'
test_data_folder = '/content/test/'
train_data_sub_folder = '/content/train_sub/'
3. 견종의 종류 및 수 확인
labels.csv 파일을 통해 강아지별 id 및 breed에 대한 정보 확인
label_path = '/content/labels.csv'
label_text = pd.read_csv(label_text)
label_text
Check 1) 학습할 데이터의 견종의 수
120종임을 확인!
len(label_text.loc[:,'breed'].unique()) # 120
Check 2) 견종별 이미지 수 확인
견종별로 균형이 맞게 데이터가 수집되었는지 확인
label_text.loc[:,'breed'].value_counts()
확인해 본 결과 견종마다 데이터가 엇비슷하게 들어가있지는 않으므로, 견종별 데이터의 양을 수정해주어야할 것 같다.
최소 개수인 66개로 통일할 수도 있고, 하지만 이런 경우엔 데이터의 양이 적을 수 있으므로, 데이터를 증강해서 셋을 좀 더 추가하는 것도 괜찮을 것 같다.
Check 3) 총 이미지 파일의 수 확인
10222장임을 확인!
len(list(glob.glob('/content/train/*.jpg'))) # 10222
Check 4) 이미지 시각화
import matplotlib.pyplot as plt
plt.figure(figsize=(12,12))
for c in range(9):
image_id = label_text.at[c,'id']
image_breed = label_text.at[c,'breed']
# 9개에 대해서 이미지 그려보기
plt.subplot(3,3,c+1)
# trian 폴더에서 해당 image_id의 파일명 가져오기
image_file = train_data_folder + image_id + 'jpg'
plt.imshow(plt.imread(image_file))
plt.title(str(c) + ":" + image_breed)
plt.axis('off')
plt.show()
4. 폴더 정리 (폴더 생성하여 하위에 견종별로 이미지 저장)
폴더 생성
import os
import time
import shutil
train_data_sub_folder_name = os.path.dirname(train_data_sub_folder)
if os.path.isdir(train_data_sub_folder_name) == False:
os.mkdir(train_data_sub_folder_name)
폴더 내 견종별로 이미지 정리
현재 /content/train/111.jpg 형식으로 들어있는 파일을 새로운 폴더를 생성하여
/content/train_sub/말티즈/111.jpg 경로로 저장해 주었다.
for i in range(len(label_text)):
image_id = label_text.at[i, 'id']
image_breed = label_text.at[i, "breed"]
if os.path.exists( train_data_sub_folder+image_breed)==False:
os.mkdir(train_data_sub_folder+image_breed
shutil.copy( train_data_folder + image_id+".jpg",
train_data_sub_folder+image_breed )
여기까지는 폴더 정리를 한 것이고, 다음 페이지에서 이 파일 구조를 기반으로 이어서 실습해 보겠다.
'Kaggle 실습 > Deep Learning' 카테고리의 다른 글
02. Dog-Breed-Identification (강아지 품종 분류) - InceptionNet (2) (0) | 2024.06.22 |
---|
댓글