A ship in harbor is safe, but that is not what ships are built for.

개발일지/AI 캠프

내일배움캠프 AI - 55일차 TIL, 2022.11.17

플리피나리 2022. 11. 17. 21:00
반응형

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차

2022.11.17. 55일차 - TIL

 

 

1. 아침 타임어택

문제 ) 도커&리눅스 기초

1. docker 설치가 안되어 있다면 docker를 설치해주세요.

2. docker hub에 회원가입 되어 있지 않다면 추후 실습을 위해서라도 회원가입을 해주세요

3. docker login을 해주세요

4. 아래의 이미지를 pull 해주세요. 명령어는 docker pull tegongkang/morningtest:latest

5. docker images 결과 확인하기

6. 해당 이미지로 컨테이너를 만들고, 아래의 실습을 진행해주세요.

- sparta 디렉터리 아래 second 디렉터리 아래 morning 디렉터리로 이동해주세요. (cd로 이동)

- 그 곳에 encrypt라는 파일과 decrypt라는 파일이 있습니다.

- ./encrypt 명령어로 encrypt 파일을 실행해주세요.

- 영어로, 공백없이 본인 이름 입력

7. submit this string 다음 출력되는 문자열 제출하세요.

 

풀이)

먼저 aws ubuntu에 접속한다. 하필 하루 전에 새로운 계정을 만들어서 키페어가 없다... 그래서 있는 ec2 인스턴스의 키를 변경하려 했는데 잘 되지 않았다.(이건 따로 정리해두는 걸로...) 그래서 그냥 기존에 있던 ec2 인스턴스를 삭제하고 새로운 인스턴스를 생성했다.

 

1. AWS EC2에서 리눅스 환경 구성하기

- 인스턴스 시작 > 서버이름 작성&Ubuntu OS 선택 > 키페어 생성(ssh연결 때 필요) > 방화벽 설정(ssh, https, http 트래픽 허용) > 스토리지 30GiB 선택 > 인스턴스 시작

- ssh 연결 > 생성한 인스턴스 보안 그룹 > 인바운드 규칙 편집(ssh, http, https 설정 확인)

- cmd 창에서 ssh -i 키페어드래그 ubuntu@인스턴스IPv4 > yes 입력 > 연결 성공 문구 확인

 

그리고 필요한 패키지를 설치할 수 있도록 사전 작업을 한다.

 

2. 리눅스 패키지 설치 준비

- sudo apt update : apt install 명령어로 설치할 수 있는 패키지들 최신화(os설치 후 최초 한번만 실행)

- sudo apt install net-tools : ifconfig 명령어 등을 포함한 패키지 설치

 

이제 준비가 다 되었으니 해당 환경에 도커를 설치한다.

 

3. 도커 패키지 설치하기

- sudo apt install docker.io -y

- sudo docker --version : docker 설치 버전 확인하기

 

4. 도커 이미지 pull 해오기

- sudo docker pull tegongkang/morningtest:latest

- sudo docker images: 도커 이미지 확인하기 > 이미지 번호 확인하기

 

5. 컨테이너를 만들어 실행하기

- sudo docker run -it 이미지아이디 /bin/bash

 

여기서 docker run과 docker exec 차이점을 확인하고 가자. run은 새로운 컨테이너를 만들어서 실행하는 것이고, exec는 실행중인 컨테이너에 명령어를 전달하는 것이다.

결국 위에 처럼 sudo docker run -it 이미지아이디 /bin/bash를 입력하면 새로운 컨테이너를 해당 이미지로 실항하는 것이지만 exec는 sudo docker run -d -p 80:80 이미지번호 로 컨테이너를 생성하고 sudo docker exec -it 컨테이너아이디 /bin/bash를 해주어야 한다.

 

6. 해당 폴더로 이동하기

- cd sparta > cd second > cd morning

 

7. encrypt 파일 실행

- ./encrypt

- SeongyoenLee 입력
- 출력 문자열 확인하기

 

 

2. 딥러닝 특강

폴더 생성 후 vscode로 열어 다음 명령어를 입력한다.

git clone https://github.com/crowsonkb/style-transfer-pytorch

clone이 완료되면 생된 style-transfer-pytorch로 이동 후(cd style-transfer-pytorch)

pip install -e .

명령어로 style-transfer-pytorch를 설치한다. 이후 style-transfer-pytorch 폴더 밑에 cat1.png 파일과 vg_starry_night_resized.jpg 파일을 위치시키고

style_transfer cat1.png vg_starry_night_resized.jpg -s 112 -i 300

명령어를 입력한다.

 

하지만 여기서 다음과 같은 에러가 나왔는데...

ImportError: cannot import name '_imagingcms' from 'PIL' (C:\Users\winki\anaconda3\lib\site-packages\PIL\__init__.py)

음... 일단 PIL이 없어 이미지 파일을 처리 못 하는 것 같아 pip install Pillow를 했지만

Requirement already satisfied: Pillow in c:\users\winki\anaconda3\lib\site-packages (9.2.0

여전히 오류는 진행되는 상황...그래서 기존에 있던 pillow를 지우고 다시 설치했다.

pip uninstall pillow
pip install pillow

결과는 성공....!

 

out.png라는 유화 결과 그림이 생성이 되는데 문제는 size: 어쩌구를 1000번이나 한다.(이게 뭐지...?)

 

컴퓨터가 이미지를 볼 때 feature를 뽑는다. 학습이 진행될 수록 0과 1만으로만 이해할 수 있는 저수준의 feature로 되고 이 feature들로 어떤 이미지인지 판별하는 것이다. 해당 딥러닝 모델이 1000개의 클래스로 feature를 정의하고 있기 때문에 

학습된 모델을 다운로드하고 있는 것

cat 사진 - low level features - mid level features - high level features - trainable classifier - cat 판별

 

하지만 유화 그림 하나 생성하는데 너무 시간이 오래 걸린다. 그래서 약간의 코드를 수정한다.

 

# style_transfer.py > cli.py > line 20

# from . import srgb_profile, StyleTransfer, WebInterface
from style_transfer import STIterate, StyleTransfer
from web_interface import WebInterface
srgb_profile = (Path(__file__).resolve().parent / 'sRGB Profile.icc').read_bytes()



# web_interface.py > line 12

# from . import srgb_profile, STIterate
srgb_profile = (Path(__file__).resolve().parent / 'sRGB Profile.icc').read_bytes()
from style_transfer import STIterate, StyleTransfer

그리고 style_transfer로 이동하고(cd style_transfer) 이미지파일도 그곳에 위치 시킨 후 다음 명령어를 실행한다.

python cli.py cat1.png vg_starry_night_resized.jpg -s 156 --initial-iterations 100
반응형