Stable Diffusion을 직접 코드로 구현하고자 했다.
관련 API를 찾다보니 대부분의 Stable Diffusion API는 text2img로,
prompt(텍스트)를 입력하면 이미지를 생성해주는 방식이었다. (Open AI - DALL·E)
하지만, 지금 필요한 것은 img2img.
즉, 사용자가 입력한 이미지와 prompt를 동시에 고려해 이미지를 생성하는 모델이다.
Stablility-AI의 img2img API를 찾았고, 사용법이 매우 간단했다.
Stability-AI Stable-Diffusion-img2img
구글 드라이브 데이터셋을 기반으로 이미지를 생성할 수 있도록 코드를 작성했다.
Replicate API Token을 발급 받으면, 모델을 바로 사용할 수 있다.
대신 한 계정 당 최대 500장 생성 가능하다.
Replicate은 Github 계정과 연동되고,
Github 계정 삭제 - 재가입 하면, 다시 또 500장 생성 가능하다.
일단 3장씩 생성해보았다.
파라미터 설정이 굉장히 까다로웠다.
조금만 건드리면 예상과 너무 다른 이미지가 생성된다.
서로 다른 크랙을 그리는 것은 성공했지만, 배경의 변화가 거의 없는 것이 아쉽다.
지금 보니 크랙에 차이를 더 줬어야했나 싶기도 하다.
프로젝트의 핵심은 크랙 탐지.
다양한 종류의 크랙 학습을 위해 데이터를 증강하고 있는 것이다.
크랙 이미지를 많이 확보해야 하는데, 이렇게 생성된 크랙 이미지가 학습에 도움을 줄 지는 의문이다.
사실 이미지를 증강하라는 과제가 주어졌지만, 어떤 식으로 하라는지 정확한 요구사항도 없다.
회의를 많이 해 봐야겠다.
크랙은 존재하는데, 배경은 새로운 도로 이미지?
크랙 형태만 다른 도로 이미지?
이런 걸 확실히 해야 시간 낭비가 적을 것 같다.
오늘 연구실 논문 세미나를 듣고 교수님과 잠깐 시간을 가졌다.
생성된 이미지로 분류 성능을 높이는 것은 굉장히 어렵다고 하셨다.
훈련 데이터를 늘려, 많이 학습시킨다는 이상적인 생각과는 달리 결과가 좋지 않은 경우가 많다고.
이미지 생성에는 이미 훌륭한 모델들이 즐비해있고, 쉽게 API로 구현되어있다.
증강한 이미지로 성능이 좋아지면 물론 좋겠지만, 일단 큰 기대는 안 해야겠다.
이미지 증강을 마치고 크랙 segmentation을 해보고 싶다.