티스토리 뷰

생성형 AI의 발전에 따라 Deepfake 이미지가 많아지면서 이로 인해 발생하는 문제를 해결하고자 실제 이미지와 Deepfake 이미지를 분류하는 프로젝트를 전공 수업에서 진행하였습니다.

 

  1. Dataset 설명
  2. Preprocessing - Data Augmentation
  3. Classification using Transfer learning

 

1. Dataset 설명

https://www.kaggle.com/datasets/manjilkarki/deepfake-and-real-images

 

deepfake and real images

Detect if any images is real image of deepfake image

www.kaggle.com

위 Kaggle Dataset을 이용하기 위해 Kaggle API token을 업로드하여 데이터셋을 다운로드하였습니다. 총 190,335개의 이미지를 활용하여 Fake와 Real을 높은 정확도로 분류하는 것을 목표로 삼았습니다.

 

2. Preprocessing - Data Augmentation

이미지 전처리 기법의 필수 요소인 Data Augmentation 기법을 활용했습니다. Data Augmentation 기법은 원본 이미지에 변형을 주어 모델 학습의 과적합을 방지하는 것입니다. 원본 이미지의 선명도를 흐리게 하거나, 상하좌우 뒤틀리게 설정하여 이미지를 다각도로 변경시키는 방법 등이 존재합니다. 중요한 것은 학습 이미지의 개수를 늘리는 것이 아니라, 학습 시마다 원본 이미지를 변형시켜 학습시키는 방법이라는 것입니다.

 

Data Augmentation에서 가장 중요한 기법은 정규화입니다. 이미지의 색깔에 따라 분포의 모양이 다르다면 모델 입장에서는 학습이 잘 되지 않는 문제점이 있습니다. 이를 정규화를 통해 해결하여 어느 색깔의 벡터 값이 입력으로 들어와도 일정한 분포를 가져 학습할 수 있도록 하는 것이 중요합니다.

 

3. Classification using Transfer learning

Transfer learning이란 Computer Vision에서 사전학습된 모델을 이용하여 분류하고자 하는 이미지의 특징을 더 잘 추출하여 정확한 분류 패턴을 모델링하는 것입니다. 대량의 데이터로 이미 학습되어 있는 모델을 사용하기 때문에 자신의 분류 모델의 목적에 맞게 조정하는 것이 중요합니다. 이 과정을 이론적으로 Fine tuning(파인튜닝)이라 부릅니다. 전체 모델을 새로 학습시키거나 일부 layer만 고정시키는 방법 등이 있습니다. 

 

프로젝트에서는 pretrained_model.trainable=Fale을 통해 사전학습된 가중치를 사용하지 않고 pretrained model의 입력과 출력을 Dense layer을 활용해 연결시켜줌으로써 분류 모델기에 맞게 조정하였습니다. 어떤 모델을 전이학습으로 사용해야 하는지 성능이 좋은지를 확인하기 위해 모든 모델을 1 에포크 학습시켜 정확도를 확인했습니다. 정확도가 가장 높게 산출된 MobileNetV2를 모델로 사용했습니다.

 

전체 코드는 https://github.com/hba-sangil/hba-sangil-deep-learning/blob/main/final.ipynb 에 올려두었습니다.

TAG more
글 보관함
최근에 올라온 글