본문 바로가기
🖊️Data Analysis/📌 DL)개와 고양이 이미지 분석

[Python] 개와 고양이 이미지 분석

by 빛나고요 2021. 7. 12.
BIG

Study. 개와 고양이 이미지 분석

[스스로 정리한 코드 분석과 흐름]

 

1. 파일 불러오기 및 디렉토리 정렬
  1. zip 파일 압축 풀기
  2. train, test 파일을 불러온다.
  3. matplotlib을 이용하여 이미지를 불러온다.
  4. train 파일 불러온 것을 그대로 쓸 수가 없기 때문에 사전에 전처리를 해야 한다.
  5. 파일 이름만 나와있기 때문에 디렉토리의 경로를 추가해주어서 path를 정렬한다.
  6. train['label'] = train['path'].apply(lambda x:x.split('/')[-1].split('.')[0])  ⇒ (path 옆에 개인지 고양이 인지 라벨링 해주는 작업) /를 기준으로 나눠서 -1(맨 오른쪽)에서 다시 . 을 기준으로 파일이 분리되는데  그중에서 0(첫 번째 자리) 값을 넣어서 apply 한다.
  7.  test 파일도 위와 똑같이 path를 만들어서 정렬한다. 

 

 

2.  훈련용 데이터와 테스트용 데이터 분할
  1. sklearn에서 제공하는 라이브러리를 사용한다.
  2. 두 개의 변수를 만들어서 기존 훈련용 데이터의 10%를 검증용 데이터로 만들었고 분리할 때 train의 label을 기준으로 균등하게 분리한다.
  3. label을 기준으로 count 해봄으로써 훈련용 데이터가 90%이고 검증용이 10%로 잘 분리되어 있는 것을 확인했다.

3. 데이터 증식
  1. 데이터 증식 딥러닝을 할 때 최대한 데이터가 확보되어야지 다양한 케이스에 대해서 훈련할 수 있기 때문에 데이터 증식이 필요하다.
  2. rescale=1./255 이미지들은 한 픽셀 당  0~255 값을 가지게 되는데, 이 픽셀들을 정규화시켜주려면 /255를 하면 0~255 값을 정렬된다.
  3. horizontal_flip 좌우반전
  4. vertical.flip 수평 수직
  5. fill_mode='nearset' 데이터 이동이나 회전했을 때 비는 공간을 가까이 있는 색으로 채운다.

 

4. 이미지 크기 정렬과 검증용 추가
    1. train : 훈련용 / valid : 검증용 / test : 테스트용
    2. path에는 주소만 나와있는데 실제 주소를 알려주고 이미지를 불러와서 그 이미지의 가로, 세로 동일한 사이즈로 맞춰주는 작업을 한다.
    3. 훈련, 검증, 테스트 3가지를 다 해야 한다.
    4. batch_size : 한 번에 데이터를 다 올려서 학습하는 게 아니라 단위로 올리기 때문에 batch_size를 16 정도로 해준다
    5. 3개 중에 test는 y_col이 없기 때문에 지우고 대신에 class_mode=None으로 해주고 shuffle=False를 해준다.
    6. train_generator = train_datagen.flow_from_dataframe(x_train, x_col='path', y_col='label',  batch_size=16, target_size=(300, 300)) ⇒ 이미지 generator 했던 것을 기반으로 flow_from_dataframe으로 해서 x_train의 x변수는 path로 주고, y변수는 label로 설정하고 batch_size(학습할 단위)는 16이라고 하고 target_size(이미지의 가로세로 크기)는 300X300으로 설정해서 train_generator에다가 넣는다.
    7. valid는 train과 똑같이 하고 변수 이름만 valid_generator로 변경
    8. test_generator = train_datagen.flow_from_dataframe(test, x_col='path', class_mode=None, shuffle=False, batch_size=16, target_size=(300300)) test는 이렇게 해준다.

 

댓글