AI로 그린 그림이 엄청나게 유행이다.

카툰과 같은 그림 뿐만 아니라 이제는 사진과 같은 실사 느낌의 그림까지 나오고 있다.

 

best-inventions-2022-OpenAI-DALL-E-2

 

AI 그림이라는 것은

자연어 서술로부터 이미지를 생성하는 Machine-Learning 모델로 만들어진 것을 의미하는데,

 

요즘 ChatGPT 라는 것으로 이제는 누구나 알게 된 OpenAI라는 곳에서 개발(?)한

DALL·E 2로 인해서 AI로 그린 그림이 유명해지게 되었고

 

2022년 콜로라도의 미술대회에서 1등을 차지한 그림이

Midjourney 라는 ML 모델로 만들어진 것이라는 것이 밝혀지면서 엄청난 논란이 되었었다.

 

Midjourney

 

이렇게 AI로 그림 그리는 것이 엄청난 유행을 하고 있는데,

명색이 IT로 밥 값을 벌고 있는 입장에서 직접 한 번 다뤄봐야 하지 않을까?!

 

 

 

DALL·E 2, Midjourney 와 같은 모델들은 모두 상용으로 서비스 되고 있다.

하지만, 우리가 원하는 것은?! 오픈소스!!!

 

 

https://github.com/CompVis/stable-diffusion

 

Stable-Diffusion

 

Stable-Diffusion은 2022년 8월에

Stability AI에서 오픈소스 라이선스로 배포한 text-to-image 인공지능 모델이다.

 

오픈소스이지만 상용 모델 못지 않은 성능을 보여주며

더더군다나 비교적 낮은 컴퓨팅 파워 환경에서도 구동이 가능하다 !!!

 

 

그리고, 오픈소스 프로젝트로 공개되었다보니

이를 기반으로 파생된 정말 유용한 프로젝트들이 정말 많다.

 

 

https://github.com/AUTOMATIC1111/stable-diffusion-webui/

 

Stable Diffusion web UI

 

CLI 방식이 아니라 웹 기반의 Interface를 이용해

Stable Diffusion 모델을 편리하게 사용할 수 있도록 만들어 주는 프로젝트이다.

 

그리고 여기에 덧붙여서

Colab에서 구동 가능하도록 해주는 프로젝트도 있다!!!

 

 

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Online-Services

 

Online Services - Colab

 

위 목록 중에서 camenduru를 선택해보자.

 

https://github.com/camenduru/stable-diffusion-webui-colab

 

 

https://github.com/camenduru/stable-diffusion-webui-colab

 

Jupyter Notebook 형태로 제공해주고 있는데,

어떤 것을 선택하면 좋을지는 README 를 참고하면 된다.

 

colab

 

카툰 스타일 보다는 실사와 같은 것들을 해보고 싶어서 "dreamlike-photoreal-2.0"을 선택해 보았다.

Huggingface에 있는 설명들을 참고하자.

 

https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0

 

음... 뭔지는 잘 모르겠지만

Stable-Diffusion 1.5 버전을 기반으로 해서 만들어진 사진과 같은 이미지를 생성하는 모델이란다.

 

이런 것들을 만들 수 있단다.

 

example

 

그러면, 원하는 모델에 있는 "Open in Colab" 아이콘을 클릭하자.

 

link

 

Colab에서 열리고 나면, "Drive에 사본 저장" 메뉴를 통해 복사해놓자.

 

Drive에 사본 저장

 

상단에 "노트북 설정"을 할 수 있다고 나오는데, 링크를 클릭하자.

 

비공개 출력

 

설정창이 열렸으니

'하드웨어 가속기' 부분에서 GPU를 선택하고

하단에 있는 체크 박스 부분도 설정 해제해놓자.

 

셀 출력

 

위 설정창은 "런타임 유형 변경" 메뉴로도 설정 확인 및 변경 가능하다.

 

런타임 유형 변경

 

자~ 이제 준비는 다 되었다.

런타임 연결(실행)하자.

 

연결중

 

그리고 코드를 실행하면 된다.

 

실행

 

엄청 오래걸리니 (5분~10분 사이) 그동안 유용한 사이트 하나 가입하자.

 

https://civitai.com/

 

https://civitai.com/

 

AI 그림들을 자랑하고 공유하는 곳이다.

 

Tifa

 

따라해보고 싶은 그림이 있으면 그림 오른쪽 하단에 있는 ⓘ 부분을 눌러보면 된다.

 

prompt

 

그러면, 어떤 Prompt, Parameter로 만들었는지 정보를 얻을 수 있다.

 

text-to-image 모델에서 그림을 그리기 위해 사용한 text를 "prompt"라고 지칭한다.

원하지 않는 내용에 대한 설명(text)는 "negative prompt"라고 한다.

 

또한, 원하는 그림에 대한 설명 외에

어떤 sampler인지, Random 함수에 대한 Seed 값이라던지 하는 온갖 설정값들 정보도 중요하다.

 

 

이쯤 했으면 Colab 실행 완료되었을테니, 계속 이어서 진행해보면 ...

 

URL

 

잘 실행이 되었으면, 위와 같은 URL 정보가 보일 것이다.

가운데에 있는 "*.gradio.app" URL을 선택해서 클릭하면 창이 뜰 것이다.

 

Run

 

와우!!!

나만의 AI 그림 생성기가 나타났다 !!!

 

 

어떻게 사용하면 되는지도 알아볼 겸해서, 남들이 만들어 놓은 것을 참조해보자.

CIVITAI에서 우리가 선택한 "dreamlike photoreal 2.0"을 검색해보자.

 

dreamlike photoreal 2.0을 이용해서 만들어진 그림을 찾기 위함이다.

 

Dreamlike Photoreal 2.0

 

찾은 다음에 마음에 드는 이미지 하나 선택해서 ⓘ를 클릭해서 정보를 확인해보자.

 

sample

 

Prompt, Negative prompt를 비롯해서 Sampling Steps, Sampling method, CFG Scale, Seed 값 등도 모두 넣어주자.

 

generate

우와~~~!!! 나온다 !!!

 

당연하게도 완전히 똑같은 그림이 나오지는 않지만, 얼추 비슷한 이미지가 나온다.

 

 

 

이제, 시간과 정신의 방으로 갈 시간이다.

다양하게 이것 저것 바꿔보면서 만들다보면 ... 날짜가 바뀌어 있을 것이다 ^^

 

반응형


나이먹은 고리타분한 아저씨가 되어버린 나...

수학이 무서워서, 새로운 것 배우기가 무서워서 피해다녔는데...

결국은 AI/ML 공부를 할 수 밖에 없게 되어버렸다.


뭐 이제와서 내가 Modeler가 되거나 Data Engineer가 될 것은 아니지만

인프라쟁이이기에 최소한 MLOps 관련되어서는 알아야 하기에

기본적인 AI/ML 공부는 해야하는 상황에 놓여졌다.


항상 SW 공부할 때 나만의 환경에서 CLI 위주로 하는 스타일이었는데...

그래서 AI/ML 공부도 그렇게 해보려고 했는데,

결국은 Jupyter Notebook의 편리함을 이용하지 않을 수가 없었다.


Jupyter Notebook도 나의 환경에서 설치해서 해볼 수 있지만,

최근 GCP를 사용해볼 이유도 있어서

Colab 환경을 사용해보기로 마음 먹었다.


그러던 中 Kaggle 에서 제공해주는 데이터를 Colab에 넣어야할 상황이 벌어졌는데

Colab과 Kaggle을 바로 연결할 수 있는 방법이 있다고 해서

한 번 알아보았다.


1. Colab

    - 구글에서 무료로 제공해주는 훌륭한 머신러닝 개발환경이다.

    - 제공해주는 환경의 스펙이 아래와 같다고 한다. 와우~!! 대박~!!

        . CPU : 제온

        . Mem : 13GB

        . HDD : 320GB

        . GPU : NVidia Tesla K80

    - https://colab.research.google.com/



2. 준비

    - Colab 접속 후 아래와 같이 "파일 - 새 Python 3 노트"를 선택하자.




3. Kaggle 설치

    - "!"를 앞에 붙이면 시스템 명령어를 사용할 수 있다.

    - 타이핑 후 왼쪽의 화살표(?)를 클릭하면 실행된다.




4. Kaggle 인증키 다운로드

    - Colab에서 Kaggle 데이터를 가져오기 위해서는 접근할 수 있는 권한이 있어야 한다.

    - Kaggle 사이트에서 내 계정에 대한 인증키를 얻어보자.



    - "Edit Profile"을 클릭한 다음



    - "Create New API Token"을 클릭하면, "kaggle.json" 파일이 다운로드 된다.



5. 인증키 업로드

    - 다운로드 받은 인증키를 Colab에 업로드하자.



    - 윗 부분의 "+ 코드"를 선택하면 새로운 라인이 추가된다.

    - 아래 코드를 넣은 뒤 왼쪽 플레이 버튼을 누르면 "파일 선택" 버튼이 나온다.


from google.colab import files

files.upload()


    - "파일 선택"을 누른 뒤 아까 다운로드 받은 Kaggle 인증키 파일을 골라주면 위와 같이 나온다.



6. 인증키 복사하기

    - 업로드된 인증키를 정해진 곳에 넣어줘야 한다.

    - kaggle을 위한 디렉토리를 우선 만들어보자.


!ls -al

!mkdir -p ~/.kaggle

!ls -al ~/


    - 인증키를 복사한 뒤 속성 변경까지 해놓자

!cp kaggle.json ~/.kaggle/kaggle.json

!chmod 600 ~/.kaggle/kaggle.json

!ls -al ~/.kaggle/


    - 위와 같이 한 번에 여러 라인을 넣을 수도 있다.



7. Kaggle 데이터 목록

    - Kaggle 데이터 목록을 살펴볼 수 있다.



!kaggle competitions list



8. Kaggle 데이터 확인하기

    - Kaggle 사이트에서 Dataset을 보면 다운로드를 받을 수 있는 API를 확인할 수 있다.




9. Titanic 데이터 다운로드

    - Colab에 다운로드 받아보자.

    - 주의할 점은 시스템 실행을 위해서 항상 앞에 "!"를 붙여야 한다.



모두들 즐거운 머신러닝 생활~~~~!!!

반응형


머신러닝에 대해서 공부를 한다고 하면,

예전에는 (아직도) R 등과 같은 수학에 맞춰진 언어를 소개하기도 하지만 대부분은 Python을 추천한다.


사실은 Python이라는 언어 자체가 중요한 것이 아니라

머신러닝을 할 때 필요한 많은 기능(?)들을 제공해주는 라이브러리들이 중요한데

Pandas, Numpy 라이브러리가 워낙에 잘 되어 있어서 Python을 사용하라고 하는 것이다.

물론 Python이라는 언어 자체도 매력적이긴 하지만...



이에 대해서 공부를 하고자 하는 분들에게 드리는 좋은 정보~


Google에서 무려 한국어로 제공해주는 "머신러닝 단기집중과정" 온라인 강좌

https://developers.google.com/machine-learning/crash-course


그 중에서도 Pandas에 대해서 직접 실습해가며 배울 수 있는 정말 멋진 과정

- https://colab.research.google.com/notebooks/mlcc/intro_to_pandas.ipynb?utm_source=mlcc&utm_campaign=colab-external&utm_medium=referral&utm_content=pandas-colab&hl=ko



그런데, 위의 내용 말고도 좋은 강좌가 하나 더 있다.

머신러닝에 대해서 공부하다보면 누구나 알게 되는 Kaggle !!


 Kaggle에서도 Pandas에 대해서 친절한 강좌를 제공해준다.

https://www.kaggle.com/learn/pandas


4시간이면 끝낼 수 있단다~!! ^^ (필자는 멍청해서 4일은 걸릴듯... ㅠㅜ)




모두들 즐거운 머신러닝 공부시간 되세요~


반응형


Ubuntu에서 Python3 환경 셋업을 한 뒤에 (https://www.whatwant.com/entry/Python3-환경-만들기-버전-변경하기-in-Ubuntu)

pandas를 사용해보고자 했더니, 에러가 발생...


Traceback (most recent call last):

  File "./test.py", line 4, in <module>

    import pandas as pd

ModuleNotFoundError: No module named 'pandas'




0. 현재 환경


    - 아래 작업을 실행한 환경은 다음과 같다


$ lsb_release -a


No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 18.04.3 LTS

Release:        18.04

Codename:       bionic



$ python --version


Python 3.6.9


    - Python 3.7 버전으로 했을 경우에는 아래와 같이 진행하면 충돌(?)이 있다. 3.6 버전으로 진행하길...




1. pandas 설치하기


    - 뭔가 무지막지하게 많이 설치된다.


$ sudo apt-get install python3-pandas


Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

  blt fonts-lyx javascript-common libaec0 libblas3 libblosc1 libgfortran4 libhdf5-100 libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-jquery-ui liblapack3 liblcms2-2 libsnappy1v5 libsz2 libtcl8.6 libtiff5 libtk8.6 libwebp6 libwebpdemux2

  libwebpmux3 libxft2 libxrender1 libxss1 python-matplotlib-data python-tables-data python3-bs4 python3-cycler python3-dateutil python3-decorator python3-html5lib python3-lxml python3-matplotlib python3-numexpr python3-numpy python3-olefile

  python3-pandas-lib python3-pil python3-pyparsing python3-scipy python3-tables python3-tables-lib python3-tk python3-tz python3-webencodings tk8.6-blt2.5 ttf-bitstream-vera x11-common

Suggested packages:

  blt-demo apache2 | lighttpd | httpd libjs-jquery-ui-docs liblcms2-utils tcl8.6 tk8.6 python-cycler-doc python3-genshi python3-lxml-dbg python-lxml-doc dvipng ffmpeg gir1.2-gtk-3.0 ghostscript inkscape ipython3 librsvg2-common

  python-matplotlib-doc python3-cairocffi python3-gi-cairo python3-gobject python3-nose python3-pyqt4 python3-sip python3-tornado texlive-extra-utils texlive-latex-extra ttf-staypuft gfortran python-numpy-doc python3-dev python3-numpy-dbg

  python-pandas-doc python-pil-doc python3-pil-dbg python-pyparsing-doc python-scipy-doc python-tables-doc python3-netcdf4 vitables tix python3-tk-dbg

The following NEW packages will be installed:

  blt fonts-lyx javascript-common libaec0 libblas3 libblosc1 libgfortran4 libhdf5-100 libjbig0 libjpeg-turbo8 libjpeg8 libjs-jquery libjs-jquery-ui liblapack3 liblcms2-2 libsnappy1v5 libsz2 libtcl8.6 libtiff5 libtk8.6 libwebp6 libwebpdemux2

  libwebpmux3 libxft2 libxrender1 libxss1 python-matplotlib-data python-tables-data python3-bs4 python3-cycler python3-dateutil python3-decorator python3-html5lib python3-lxml python3-matplotlib python3-numexpr python3-numpy python3-olefile

  python3-pandas python3-pandas-lib python3-pil python3-pyparsing python3-scipy python3-tables python3-tables-lib python3-tk python3-tz python3-webencodings tk8.6-blt2.5 ttf-bitstream-vera x11-common

0 upgraded, 51 newly installed, 0 to remove and 0 not upgraded.

Need to get 35.7 MB of archives.

After this operation, 160 MB of additional disk space will be used.

Do you want to continue? [Y/n]




2. 테스트 코드


    - 잘 동작하는지 살펴보자. 샘플은 Kaggle의 내용을 참조했다.


import pandas as pd

import pprint


pp = pprint.PrettyPrinter(indent=4)


if __name__ == "__main__":


    fruits = pd.DataFrame( [[30, 21]], columns=['Apples', 'Bananas'] )

    pp.pprint( fruits )


    exit(0)


파이팅~!!!

반응형

+ Recent posts