Artist : AI 공고 이미지 자동 생성 프로젝트

민정
saraminlab
Published in
10 min readAug 16, 2023

ChatGPT의 흥행으로 생성형 AI 시대가 열렸다. 컴퓨팅 파워의 향상과 몇백억 파라미터가 넘는 모델이 등장하며 텍스트, 이미지, 음성 등의 분야에서 생성 AI 기술이 발전하고 있다. 특히 이미지 생성 AI는 최근 1년 사이 기하급수적으로 고도화 중이다. 일례로 2022년, 미국 콜로라도 주립 박람회 미술대회에서 이미지 생성 AI가 그린 그림이 인간을 제치고 당당히 우승을 차지하는 등 인간과 인공지능을 구분하기 힘들 수준으로 만들어지고 있다. 이번 포스팅에서는 이미지 생성 AI를 활용하여 텍스트 공고에 어울리는 이미지를 생성하고 서비스하는 프로젝트 “Artist”를 소개한다.

밋밋한 간편 공고

간편공고 서비스는 공고를 등록할 때 경력, 근무지 등의 정형화된 폼을 입력해야 하는 번거로움을 줄이고자 출시된 서비스이다. 줄글로 된 채용 공고를 입력하면 해당 글을 분석하여 공고 등록 및 추천 등에 필요한 필수 항목들만 추출하여 제공한다. 일반공고는 여러 템플릿을 사용하거나 기업 혹은 직무와 관련된 이미지를 첨부하여 매력있는 느낌을 준다. 반면 간편공고는 직무와 텍스트를 중심으로 구직자에게 핵심을 전달하려는 의도와는 달리 공고 자체가 텍스트 위주라 다소 밋밋해보이는 경향이 있다.

같은 쿠팡 공고지만 일반공고가 더 매력적으로 보인다.

이는 자연스레 간편공고의 공고파워 저하로 이어진다. 구직자가 지원할만하고 괜찮은 공고임에도 시선을 끌지 못해 입사지원이 떨어질 수도 있다. 분명히 내용은 좋은데 간편공고라는 이유만으로 구직자들에게 외면받는 서러움을 극복하고자 간편공고에 “신경 쓴” 느낌을 주고 싶었다. 예쁘게 꾸민 공고를 보다가 줄글로된 간편공고를 보면 지원하고싶지 않은 느낌이 있고 괜한 선입견과 편견이 생길 수 있다. 하지만 채용을 이제 막 시작하거나 공고 작성의 중요성을 모르는 기업은 내용 위주로 작성하게된다. 아무리 좋은 공고라도 시선을 끌지 못하면 읽는 사람은 없다. 텍스트 공고의 단점을 가리고 장점을 끌어올리고자 공고와 어울리는 이미지를 생성해 제공하는 서비스를 기획했다.

공고 이미지 생성 알고리즘

공고 이미지 생성 알고리즘

키워드 추출

공고 이미지는 보통 공고의 포지션이나 기업의 특성에 따라 변경된다. 예를 들어, 병원 간호사를 채용하는 공고는 병원과 간호사를 나타내는 어떠한 물건 혹은 간호사의 업무와 관련된 이미지가 필요할 것이다. 또한 건설 회사에서 용접공을 채용하는 공고에는 용접에 관한 아이템 혹은 용접과 관련된 행위를 나타내는 이미지가 필요할 것이다. 예제와 같이 공고의 핵심 키워드는 특정 직무 혹은 직업에서 찾을 수 있다.

공고의 키워드는 주로 공고의 메타데이터(대표 직무, 업종 등)에서 추출할 수 있다. 직무 중심의 키워드를 추출하기 위해 직무별로 공고를 분류한 후 TF-IDF 등의 알고리즘을 사용하여 직무별 핵심 키워드 셋을 생성하였다. 자체 개발한 형태소 분석 모델과 앞서 구축한 키워드 사전을 토대로 메타데이터를 분석한다. 추출된 키워드에서 조금 더 유의미한 키워드를 선정하기 위해 내부 스코어링 과정을 거친다. 이 과정에서 공고 설명력이 있다고 판단되는 키워드들만 최종적으로 내보내게 된다.

프롬프트

프롬프트란, AI에 요청하는 지시나 질문 같은 값을 말한다. 이미지 생성의 경우에는 머릿속으로 상상하는 이미지를 텍스트로 설명하는 것과 같다. 예를 들어, “기타를 치는 고양이” 이미지를 생성하고 싶으면 프롬프트에 “기타를 치는 고양이”라고 작성하면 된다. 하지만 프롬프트 작성은 생각과 다르게 그리 간단하지 않다. “기타를 치는 고양이” 이미지의 배경, 고양이 색, 그림의 화풍 등의 세부적인 내용이 요청되지 않았기 때문이다. 단순히 “기타를 치는 고양이”를 프롬프트로 던지는 것보다 “해 질 녘 파도가 치는 해변에서 바다를 등에 지고 통기타를 치는 귀여운 치즈색 고양이의 실제 사진 같은 4k 이미지”라고 작성하는 것이 원하는 이미지를 얻을 확률이 더 높아진다.

원하는 이미지를 얻기 위해서는 프롬프트를 자세하게 작성해야 한다.

이미지 생성 모델은 프롬프트가 굉장히 중요하다. “고양이” 대신 “강아지”를 입력하면 강아지 이미지가 나올 테고, “해변”대신에 “무대”를 입력하면 무대 위의 이미지가 나올 것이다. 이미지 생성 프롬프트를 작성할 때 가장 중요한 것은, 원하는 핵심 키워드를 적절하게 사용해야 하는 것이다. 그러므로 공고 이미지를 생성하기 위해서, 즉 공고 이미지에 대한 프롬프트를 작성하기 위해서는 공고의 성질을 파악하고 핵심 키워드를 추출해야 한다.

키워드 추출 과정을 통해 선정된 최종 키워드는 한 개일 수도, 여러 개일 수도 있다. 키워드가 한 개일 때는 문제가 되지 않지만 여러 개일 때는 추출된 키워드 간의 관계가 중요하다. 예를 들어 “간호사, 치과”가 추출된 A그룹과 “간호사, 응급실”이 추출된 B그룹의 이미지는 확실히 달라야 한다.

위 예제 등의 사례를 구분하기 위해서 키워드간의 관계 분석이 필요하다. 연관 알고리즘 등을 사용하여 분석할 수도 있겠지만, 실시간성 서비스이며 이미지 생성에 많은 시간을 소비하기 때문에 추가적인 분석 시간을 소비할 수 없었다. 따라서 시간 대비 효과적인 연관 키워드 사전 기반 문장 생성 알고리즘을 자체 개발하였다. 키워드는 생성한 사전 기반으로 추출된다. 즉, 사전 외 키워드가 추출될 일은 없다. 해당 규칙에 착안하여 사전 내 모든 키워드와 HR 데이터를 활용하여 연관 키워드 DB를 구축하였다. 특정 키워드들이 입력되었을 때, 연관 키워드 DB를 활용하여 프롬프트를 생성할 수 있다. 혹시 키워드 간 연관도가 부족하여 DB로 확인되지 않을 때는, 전체 DB를 조회하여 가장 유사한 연관 키워드의 프롬프트를 생성한다.

이미지 생성

이미지 생성 모델은 리소스 대비 효율을 비교하여 SaaS를 활용하기로 했다. 최근 이미지 생성 서비스가 많이 등장하고 있고, 당장 서비스에 사용하기에 부담이 없기 때문이다. ChatGPT를 출시한 OpenAI사의 Dall-e, 채팅 애플리케이션인 Discord 내에서 서비스 중인 MidJourny, Stable-Diffusion 기반의 DreamStudio 등이 대표적인 이미지 생성 서비스이다.

이미지 생성 서비스 비교

이미지 생성 서비스를 비교해봤을 때, MidJourny가 추상적인 프롬프트를 넣어도 공고 이미지와 가장 적합하게 생성되었다. 하지만 API를 제공하지 않는 치명적인 단점이 있었다. 따라서 Dall-e와 DreamStudio 사이에서 고민하게 되었다. Dall-e의 개발사인 OpenAI는 리소스관리가 편하고 속도가 다른 서비스보다 빠르다는 장점이 있었다. 하지만 공고 이미지 특성상 정방형의 이미지보다는 4:3, 16:9 등의 가로로 긴 직사각형 형태의 이미지를 많이 사용하는 점, 이미지 생성 적합도 등을 고려하여 DreamStudio로 최종 선정하게 되었다.

생성한 프롬프트는 최종 선정한 DreamStudio의 이미지 생성 모델에 입력된다. 생성되는 이미지는 크롭하기에 사용성이 좋은 7:4 비율로 결정했다. 7:4 비율로 이미지를 받은 후, 필요한 크기만큼 잘라서 사용하는 방식이다. 생성된 이미지와 키워드, 프롬프트 등의 정보를 함께 저장하여 내부 이미지 DB를 구축한다. 효율적인 이미지 활용을 위해 생성했지만 사용하지 않은 이미지들은 유사한 키워드가 입력될 때에 재사용된다.

이미지 검증

이미지 생성 모델은 블랙박스로, 프롬프트 외 생성되는 이미지를 제어하거나 생성된 이미지가 어떤 것에 영향을 받았는지 알 수 없다. 일례로 위에서 생성한 기타 치는 고양이 이미지에서 프롬프트로 넣지 않았던 “모자”를 쓴 고양이가 나왔다. 그렇다고 “모자를 쓰지 않은”이라는 프롬프트를 추가한다면 다음에는 고양이가 팔찌를 하고 있을지, 신발을 신고 있을지 모를 일이다. 이는 실제 서비스 적용에 치명적인 영향을 끼친다.

공고는 결국 사람을 뽑는 글이다. 간호사, 용접공, 개발자 등 사람을 뜻하는 단어가 많다. 이는 프롬프트에 간호, 용접, 개발이라는 단어만 들어가도 “간호/용접/개발”을 하는 “사람” 으로 해석될 여지가 많다. 문제는 여기서 발생했다. 이미지 생성 모델은 잠재 확산 모델 기반으로, 해당 방식은 사람의 얼굴 등의 세부적인 묘사가 어렵다는 본질적인 약점이 있다. 얼굴의 경우 움직이는 방식이나 구도가 다르다. 관광지에서 다리가 길어 보이게 하기 위해 핸드폰 각도를 이리저리 바꾸며 찍은 경험을 떠올리면 이해하기 쉬울 것이다. 사람은 다리가 길든 짧든 사람의 다리라고 인식하지만, 아직 AI는 구도에 따른 변화를 이해하기 힘들다. 결국 얼굴이 포함된 이미지는 붕괴되어 흔히 말하는 불쾌한 골짜기 현상이 발생하게 된다.

불쾌한 골짜기 현상이 발생한 이미지

해당 문제를 해결하기 위해서는 프롬프트 엔지니어링이 필수적이다. 불쾌하지 않은 이미지를 만들기 위해 물체/배경 위주의 이미지를 생성하도록 프롬프트 생성 모델을 수정하였다. 그럼에도 불쾌한 골짜기 현상이 발생할 수 있기에, 이미지 검증 모델을 자체 개발했다.

불쾌한 골짜기 이미지 검증 모델

이미지 검증 모델은 패턴 분석 알고리즘을 활용하였다. 불쾌감을 줄 수 있는 이미지 영역에 대한 db를 구축한 후, 이를 학습하여 대상 이미지에 불쾌감 영역을 검출하는 방식이다. 이미지를 생성하면 무조건 검증 모델을 사용하여 불쾌한 부분이 있는지 검증하고, 그러한 요소가 있다면 생성된 이미지는 폐기하고 새로운 이미지를 생성한다. 몇 번의 시도에도 계속해서 검증모델을 통과하지 못한다면 비교적 편안하고 불쾌감이 덜 한 일러스트 화풍의 이미지로 변경하여 생성 후 제공한다.

공고 이미지 생성 결과

공고 직무별 실제 생성 이미지 예시

위 그림은 실제 각 직종에서 생성된 이미지이다. 물류 직종에는 물류 트럭이, 데이터 분석에는 분석 장비와 차트 등이 잘 어우러지게 생성되었다. 이미지는 사용 목적에 맞게 크기 등을 자유롭게 조절할 수 있으며, 보다 다양한 이미지를 위해 10,000건 이상의 HR 프롬프트 DB를 확보하였다.

사람인 간편공고 내 공고 이미지 생성 기능

소개한 공고 이미지 생성 프로젝트는 7월, 사람인 간편공고 등록 서비스에 런칭되었다. 공고 생성시 작성한 공고의 메타데이터를 기반으로 공고에 맞는 이미지를 생성 후 제공하고 있다. 서비스 런칭 후 약 한 달간 14,000여장이 넘는 이미지가 생성되었다. 또한 서비스 런칭 이후 간편공고 사용량이 하루 평균 40% 이상 증가한 성과를 거뒀다.

향후 계획

이미지 생성 모델의 핵심은 프롬프트이기 때문에 다음에는 생성된 이미지를 바탕으로 프롬프트를 개선할 수 있는 선순환 구조를 만들고자 한다. 또한 HR 직무 데이터를 활용하여 이미지 생성 모델 자체 튜닝하고자 한다.

공고 대표 이미지가 아니더라도 공고에 활용할 수 있는 템플릿이나 복리후생 이미지 등의 부가적인 기능과 공고 로고를 활용한 배경 이미지 생성 서비스도 구체화 중이다.

--

--