SSAFY

[SSAFY - Colab] Google Colab 기반 Generative Adversarial Network 응용하기

황성안 2021. 7. 11. 18:11
728x90

Google Colab 기반 Generative Adversarial Network 응용하기

GAN의 기본 개념을 알아보고 GAN을 응용해 실습해보자

목표

  • GAN 구현하기

시작

Google Colab에서부터!

  • 구글 드라이버를 실행하여 우선 Ipyn 파일을 옮겨줍니다.
  • colab 을 연결시켜줍니다.

 

과정설명

  1. 간단한 Colab 의 문제를 풀어봅니다.
    • 1주일 몇초인지 풀어보기
    • 스니펫 창을 이용하요 자동으로 완성해보기
    • 카메라 권한을주어 사진찎어보기
    • GPU 가속 처리시간 알아보기
    • basic.ipynb 파일에 matplotlib 와 OpenCV 의 Drawing API 를 이용하여 화면에 여러 가지 도 형을 그려주는 코드를 작성해 보세요.
  2. 기본과제
  1. 심화과제

기본과제

참조 : basic.ipynb 파일을 열어주세요.

from IPython.display import display, Javascript
from google.colab.output import eval_js
from base64 import b64decode

def take_photo(filename='photo.jpg', quality=0.8):
  js = Javascript('''
    async function takePhoto(quality) {
      const div = document.createElement('div');
      const capture = document.createElement('button');
      capture.textContent = 'Capture';
      div.appendChild(capture);

      const video = document.createElement('video');
      video.style.display = 'block';
      const stream = await navigator.mediaDevices.getUserMedia({video: true});

      document.body.appendChild(div);
      div.appendChild(video);
      video.srcObject = stream;
      await video.play();

      // Resize the output to fit the video element.
      google.colab.output.setIframeHeight(document.documentElement.scrollHeight, true);

      // Wait for Capture to be clicked.
      await new Promise((resolve) => capture.onclick = resolve);

      const canvas = document.createElement('canvas');
      canvas.width = video.videoWidth;
      canvas.height = video.videoHeight;
      canvas.getContext('2d').drawImage(video, 0, 0);
      stream.getVideoTracks()[0].stop();
      div.remove();
      return canvas.toDataURL('image/jpeg', quality);
    }
    ''')
  display(js)
  data = eval_js('takePhoto({})'.format(quality))
  binary = b64decode(data.split(',')[1])
  with open(filename, 'wb') as f:
    f.write(binary)
  return filename
from IPython.display import Image
try:
  filename = take_photo()
  print('Saved to {}'.format(filename))

  # Show the image which was just taken.
  display(Image(filename))
except Exception as err:
  # Errors will be thrown if the user does not have a webcam or if they do not
  # grant the page permission to access it.
  print(str(err))

위의 코드로 pc의 캠을 연결하여 캡처기능을 수행하게됩니다.

 

그리고 아래 코드로 구글 드라이브와 연동하여 임의의 텍스트 파일을 저장해봅니다.

from google.colab import drive 

# https://leti-lee.tistory.com/3

drive.mount('/content/gdrive/')

위의 코드로 마운트를 시킵니다.

with open('/content/gdrive/My Drive/colab/hello.txt', 'w') as f: 
  f.write('Hello Google Drive colab !') 
!cat /content/gdrive/My\ Drive/colab_hy/hello.txt

위의 코드로 내가 현재 접속해있는 구글 드라이브에 파일을 생성하게 됩니다.

이후 문제부터는 얼굴 인식을 하며 얼굴의 너비 거리 계산을 하는 것에 도움을 주는 그래프 코드가 있겠습니다. 이는 위의 참조의 basic.ipynb의 파일을 참조해주시길바랍니다.

심화과제

참조 : advanced.ipynb 파일을 열어주세요

  • 너무나 재밌는 과제였습니다. 순서가있어 사진으로 대체하겠습니다.

 

 

  • 수치가 낮으면 낮을수록 닮았다고 합니다!
728x90

'SSAFY' 카테고리의 다른 글

[환경 구축] Linux Pc 만들기  (0) 2021.07.13
[SSAFY] 블록체인 기본 개념 구현 및 해쉬의 이해  (0) 2021.07.12
IT- Essential - 아키텍처 그리기  (0) 2021.07.08
Jira 및 JQL 활용법  (0) 2021.07.07
[SSAFY 2] 협업하기  (0) 2021.07.06