진화 예술 아시나요?
LR의 첫 번째 시작은 evolutionary art에 관한 논문입니다.
논문 제목은 Evolved Art with Transparent, Overlapping, and Geometric Shapes 입니다. 흥미로운 제목과 관심이 있는 내용이라 가져왔습니다. 2019년 4월에 업로드된 paper입니다.
각각의 논문과 구현 코드는 다음 링크를 통해서 확인할 수 있습니다.
I. 초록으로 먼저 읽기
이 논문에서는 진화 알고리즘과 Transparent(투명), Overlapping(겹침), Geometric Shapes(기하학적 문양)을 바탕으로 예술 작품을 변환합니다. 여기서는 evolutionary art project라고 합니다.
여기서 말하는 기하학적 문양은 다각형, 원, 선 등을 의미합니다. 도형의 순서는 입력 이미지의 픽셀과 fitness function의 결과에 의해 결정됩니다.
이 논문의 목표는 두 가지입니다.
- indirect encodings를 통해 이미지 근사화
- 시각적으로 매력적인 결과를 예술적 스타일로 연출
II. 부가 설명
개념적 이해
유전 알고리즘의 개념을 사용하여 자연 선택과 동일한 논리를 사용하여 대상 이미지를 다시 생성합니다. 이미지 생성은 다각형, 원, 선을 사용하고, 투명도 그리고 위치와 배치 등으로 다양성을 만듭니다.
매 iteration마다 생성되는 구조는 변경 가능한 매개변수로 표현되는 instance object입니다. 그리고 이 object는 genotype을 표현합니다.
이런 분야를 진화 예술(Evoltionary art)라고 하고, 최근 활발한 분야라고 합니다. 이 논문은 다음과 같은 논문(아이디어)들을 바탕으로 만들어졌습니다.
- 고정된 다각형으로 그림 재생성
- 이미지를 3D 객체로 재구성
- hillclimbing + simulated annealing
- 대화형 유전 알고리즘을 통한 이미지 생성 (User-Interactive Genetic Algorithm)
- 그 외 다양한 진화 예술
범용성
다음과 같이 GUI로 만들어서 범용성을 넓혔습니다. Toy Project로도 재밌을 것 같다는 생각을 합니다.
추가로 확인한 점
깃헙을 사용하면 코드의 길이와 사용한 라이브러리들을 정리해뒀습니다.
- evolutionaryart.py (996 lines)
- evolve.py (266 lines)
- fitness.py (33 lines)
- gene.py (80 lines)
- genome.py (344 lines)
도합 2000줄이 안되는 코드로 이런 작업을 할 수 있다는 점이 놀랍습니다.
III. 결론
진화 알고리즘을 사용해 이미지를 생성할 수 있다는 것을 보여주었습니다. 이제 예술을 하는 분들도 유전 알고리즘을 공부하는 날이 올수도 있겠습니다.
그 외의 특이한 결과는 다음과 같습니다.
Leave a Comment