일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터입출력구현
- numpy/pandas
- 데이터분석
- 파이썬
- 운영체제
- C++
- 중학수학
- CNN
- 정보처리기사실기
- 자바 실습
- 파이썬라이브러리
- 혼공머신
- 자바
- 머신러닝
- 코딩테스트
- 컴퓨터구조
- SQL
- 중학1-1
- CSS
- 정수와유리수
- JSP/Servlet
- 컴퓨터비전
- 데이터베이스
- pandas
- 텍스트마이닝
- html/css
- 딥러닝
- 정보처리기사필기
- 연습문제
- 영어공부
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
CNN 18 - 이미지 생성 모델 실습해보기 2 : 이미지 인페인팅으로 특정 부분 채우기 본문
이미지의 특정 부분을 채우는 실습을 진행해보겠다.
이미지 인페인핑 실습해보기
인페인팅과 포즈 중심의 사진을 만들 수 있는 라이브러리를 설치한다.
그런 다음 이 모델을 사용할 수 있는 함수와 파리프라인 클래스를 추가해준다. 자세한 이야기는 지금은 어차피 이해하지 못할테니 생략한다.
이제 사진을 하나 가져와서 편집해보려고 한다. 수업 시간에는 선생님들의 사진을 가져와서 편집했지만 블로그에 올리기는 그래서 무료 이미지를 하나 가져왔다. 난 동물을 좋아하니 동물 사진을 하나 다운 받았다.
사진 편집해보기
사실 포토샵으로 하면 더 편리하겠지만 요즘 포토샵은 모두 유료 버전으로 바뀌어서 사용할 수 없게 되었다. 무료로 설치했던 것들도 다 걸러져서 켜기만 하면 이상한 창이 뜬다. 그리고 개발 공부를 시작한 후로 그림을 안 그린지도 1년이 넘었기에 요즘은 사용할 일이 없어졌다.
내가 한 가지에 빠지면 그것만 하느라 개발을 등한시할까봐 일부러 어느 정도 길이 들 때까지는 그림을 그리지 않기로 다짐했었다. 아마 올해 말부터는 다시 그림을 그리게 될 것 같다.
온라인으로 사진을 편집할 수 있는 도구가 있어 이걸 사용해서 사진을 편집해볼 것이다. 오랜만에 펜을 잡으려니 조금 어색하기도 했지만 이럴 때는 웹툰 작업할 때 사둔 터치 타블렛을 유용하게 사용한다.
1. 사진 복제하기
한참 편집을 진행하다 기록을 하지 않은 게 생각나서 다시 되돌리고 처음부터 하는 중이다. 사진 이미지를 하나 가져와서 복제를 했다.
처음 사진은 배경 이미지이므로 복제를 두 번 진행했다.
2. 복제한 첫번째 레이어를 검게 칠하기
브러시 도구를 사용해서 이미지를 검게 칠한다.
3. 올가미 툴을 사용해서 원하는 부분 오리기
올가미툴이 어디있나 한참 찾았는데 가위 모양에 가면 세부 툴이 위쪽에 보인다. 거기서 올가미 툴을 선택할 수 있다. 수업은 1달 반 전에 진행되었는데 그 사이에 버전이 업그레이드 되었는지 사용 도구가 많이 달라졌다.
올가미로 오리기 전에 불투명도를 50%으로 낮춰주어야 한다. 그리고 작업을 마치면 다시 불투명도를 올린다.
4. 두번째 레이어 흰색으로 채우기
이렇게 흰색으로 채우는 과정을 마스크 이미지라고 한다.
5. 파일 저장하기
파일을 저장하고 경로를 지정한다.
그리고 이 이미지를 데이터 폴더에 집어 넣었다. 선생님은 2개의 이미지가 생긴다는데 난 한 개밖에 만들어지지 않아 하나는 원래 원본 이미지에 이름만 바꿔서 사용했다.
이이서 실습 진행하기
근데 계속 오류가 뜨고 있다. 그 이유가 뭘까? 하나는 이미지를 보여줄 라이브러리가 하나 더 필요하다. 선생님 코드에는 없었지만 가끔 이런 경우들이 있다. 그리고 또 하나는 이미지 함수를 사용할 때 image라고 썼는데 i를 대문자로 써야 한다.
이렇게 이미지 두 장이 함께 출력되었다.
뻥 뚫린 중간 이미지를 반환하도록 설정한 함수이다. 이렇게 오리지널과 비어있는 컨디션 이미지가 생성된다.
모델을 로딩하고 파이프라인도 구축했다. 여기서부터는 코드가 길어서 선생님이 제공해주셨다.
프롬프트는 2개가 있는데 기본 프롬프트는 실제로 적용할 것이고, negative 프롬프트는 안 좋은 부분이나 원하지 않는 부분을 제거하는 부분이다.
랜덤 시드도 고정했고 3개의 이미인 초기, 마스크, 컨디션 이미지가 들어가있다.
선생님은 png 파일이라서 제대로 변환이 안되었는데, 내가 작성한 것은 png임에도 변환이 아주 잘 되었다. 다만 공생하는 새는 그려 넣지 않았는데 깃털이 예쁘게 잘 나와서 차라리 없는 게 더 어울리는 것 같았다.
아마도 처음에 이미지를 변환하는 라이브러리를 추가했기 때문에 그런 것 같다.
정말 예쁘게 잘 표현되었다. 선생님은 입 주변을 마스크로 채워서 이빨과 수염을 그려넣은 코드를 완성했다.
학습을 마치고
이번 실습은 사진 편집과 함께 진행되는 데다 모든 이미지를 캡쳐하여 학습일지를 쓰기 때문에 시간이 많이 걸렸다. 그래도 이런 식으로 공부를 하면 한 번 할 때 공부 효과는 높은 것 같다.
다음에 여러 가지 사진을 가지고 이미지 생성 실습을 해봐도 좋을 것이다.
'인공지능 > 딥러닝' 카테고리의 다른 글
합성곱 신경망 13 - Knowledge Distillation (0) | 2024.11.03 |
---|---|
합성곱 신경망 12 - 이미지 분할(Segmentation) (1) | 2024.11.03 |
CNN 17 - 이미지 생성 모델 실습해보기 1 : Stable Diffusion 기초 실습 (0) | 2024.11.03 |
CNN 16 - 이미지 생성 모델의 이해 2 : Diffusion 모델의 잡음 예측기 학습 및 예측 과정과 다양한 활용법 (0) | 2024.11.03 |
CNN 15 - 이미지 생성 모델의 이해 1 : 이미지 생성 모델의 원리, 생성자와 판별자 프로세스에 대하여 (2) | 2024.11.03 |