[2024-08-04] 재미로 알아보는 AI그림의 특징
지난번 딥러닝으로 그림체를 구분하겠다 했을 때 실패했다고 하지만, 사실 얻은것도 있다고 했다. 그게 바로 오늘의 주제인 AI그림에서 보이는 특징이다.
사실 특징이라 하면 다들 아는것이 있다. 손가락이 이상하다거나 장식이 뒤틀렸다거나 아니면 배경이 기묘하거나 등등. 하지만 오늘은 그런 형체적인 특징을 다루는 것이 아니라, 조금은 다른 것을 다루려고 한다.
사실 이걸 발견한건 아주 우연한 계기다. 하도 학습이 안되길레 대체 이놈의 컴퓨터는 어떻게 그림을 보고 있는지 궁금해져서, 강의 시간때 배운 CNN으로 edge detection하는 방법을 적용해서 이미지를 추출해 봤다. CNN이라기보단 필터에 가깝지만.
아무튼 그렇게 추출한 이미지를 보니 AI그림과 사람이 그린 그림이 확실히 다르게 보였다. 일단 배경 설명을 하자면, 내가 아는 바로는 현재 AI그림은 노이즈를 단계별로 제거하면서 그림을 생성하는 것으로 이해하고 있다. 그런데 이 과정에서 미처 제거되지 못한 노이즈들이 보이는 것이 아닌가.
또 신기한건 이게 AI 생성하는 플랫폼별로 또 다르다는 것이다. 먼저 사람이 그린 그림부터 확인해 보자.
흑백 그림은 노이즈를 과장해서 표현한 것이다. 보면 전체적으로 균등하게 노이즈가 배열되어 있다. 이건 그림 그린 사람이 의도적으로 노이즈를 추가했거나 아니면 저장/배포 과정에서 추가된 것으로 추정된다.
또 다른 사람 그림이다. 노이즈가 없고 깔끔한 모습이다. 대개 일반적인 손그림은 이런 모습이다. 하지만 AI그림은 어떨까? 아래는 Stable diffusion으로 출력한 그림이다.
보면 노이즈가 상당히 기괴하다. Stable diffusion으로 출력한 그림은 대개 이런 식으로 지저분한 노이즈가 생성되어 있다. 그렇다면 니지저니는 어떨까.
차이가 보이는가? 노이즈가 비교적 정제되어 있다. 저 네모네모한 노이즈를 보면, 분명히 그림을 생성할 때 후처리를 한 번 한 것으로 추정된다. 물론 내부 작업이므로 어떤 방식으로 하는지는 모르겠다. AI로 노이즈를 다시 없앴든, 아니면 단순한 알고리즘으로 노이즈를 제거했는지는 몰라도 하여간 뭔가 하긴 했다.
물론 이것만 가지고 확실하게 AI그림을 판단할 수 있다는 건 아니다. 사람이 그린 그림이어도 그라데이션을 많이 쓰면 AI그림처렴 노이즈가 심하게 보이는 경우도 봤고, AI그림이어도 노이즈가 확실하게 제거된 경우도 종종 봤다. 그러나 경향성을 따지자면, 분명히 노이즈를 확인했을 때 서로 차이가 있음은 분명해 보인다.
실제로 사람 그림에서 노이즈를 제거하면 니지저니와 유사한 형태로 나온다.
노이즈를 한 번 처리했다. 보면 분명하게 니지저니식 노이즈가 확인된 걸 볼 수 있다. 이걸 보면 니지저니는 확실하게 후처리를 하고 있는 것으로 보인다. 하지만 이런 방식은 결국 원본 이미지를 대상으로 해야지, 한 번 가공된(원본이 아닌) 그림을 대상으로 하면 구분할 수 없다. 누군가 악의적으로 노이즈를 제거하고 AI그림 아니냐고 우기면 곤란하다.
사실 별 거 아닐수도 있다. 근데 신기하지 않은가. 이런 사소한 걸 발견하는게 참 재밌다. 별 도움이 되진 않지만…
직접 확인하고 싶으면 깃허브에 올려놨으니 실행해서 확인해 보자.