이틀에 걸쳐 45장을 만들어 올렸습니다. 그러면서 검수 절차가 하나 만들어졌는데, 생성보다 이쪽이 시간을 더 먹습니다. 그리고 여기를 건너뛰면 이상한 게 그대로 배포됩니다.
배치가 끝나면 결과를 격자 한 장으로 합쳐서 봅니다. ffmpeg의 xstack이면 됩니다.
ffmpeg -i a.jpg -i b.jpg ... -filter_complex "[0]scale=440:440[a];...;[a][b]...xstack=inputs=9:layout=0_0|440_0|..." sheet.jpg
한 장씩 보면 규격 이탈이 안 보입니다. 나란히 놔야 "얘만 크롭이 다르네"가 보입니다. 제가 잡은 규격 문제는 전부 이 단계에서 나왔어요.
두 가지 함정이 있습니다.
xstack은 입력이 2개 이상이어야 합니다. 한 장이면 그냥 scale로 분기하세요.color=black 소스를 넣으면 영상 스트림이라 muxer 오류가 납니다. -frames:v 1을 붙이거나 그냥 칸을 비우세요.이게 이번에 새로 배운 것입니다. 컨택트 시트로는 절대 안 보이는 결함이 있습니다.
네온 도시입니다. 축소해 보면 흠잡을 데가 없어요. 그런데 우하단 구석에 워터마크 같은 회색 글자가 있습니다.
이건 작업대 우하단에 바코드가 찍힌 라벨. 역시 축소하면 안 보입니다.
그래서 지금은 이렇게 합니다.
ffmpeg -i out.png -vf "crop=iw*0.35:ih*0.16:iw*0.62:ih*0.84,scale=1000:-1" -frames:v 1 zoom.jpg
문자·로고를 금지한 배치라면 네 모서리, 특히 우하단은 매번 확대해 보는 게 낫습니다.
반대 방향 실수도 했습니다. 요리사 조리복 가슴께에 로고 같은 마크가 보여서 재생성 대상으로 잡았는데요.
확대해 보니 소매 봉제선과 주름이었습니다. 로고가 아니었어요.
교실 배경의 태극기 액자도 한 번 걸렸는데, 이건 실제 한국 교실의 자연스러운 요소이고 위조된 관인이나 상표가 아니라서 통과시켰습니다. 의심은 싸지만 재생성은 비쌉니다. 확대 한 번이 그 사이를 갈라 줍니다.
같은 프롬프트를 그냥 다시 넣는 건 답이 아닙니다. 이번 45장에서 재생성한 건 11장인데, 전부 원인을 먼저 적었습니다.
그리고 그 원인을 작품 설명에 그대로 적어 둡니다. 이번엔 아예 실패작 자체를 따로 게시했습니다. 이 글에 임베드된 장들이 그것이고요.
기록하지 않으면 다음 배치에서 같은 실패를 또 합니다. 저는 이걸 여러 번 했습니다.
좁은 슬롯 캐니언을 요청했는데 넓은 사막 협곡이 나온 장입니다. 그림이 좋고 "스케일의 경외"라는 축도 성립해서 살렸습니다.
대신 제목을 그림 쪽에 맞췄습니다. "협곡 바닥의 인영"으로요. 슬롯 캐니언이라고 제목을 붙였으면 그건 거짓말입니다.
서예 학원 장도 같습니다. 재생성 때 '서예'를 프롬프트에서 뺐으니 그림에 서예가 없고, 그러면 제목도 바꾸는 게 맞습니다.
429는 모델별로도 납니다. 9장을 한 번에 던졌더니 특정 모델 2건만 rate_limit_reached가 나고 나머지 7건은 통과했습니다.
처음엔 "동시 제출을 줄여야 하나" 했는데 아니었어요. 우리 쪽 동시성이 아니라 그 모델 업스트림 한도였습니다. 배치 크기는 그대로 두고 그 모델만 잠시 뒤 재제출하니 통과했습니다.
그리고 요청한 모델이 그대로 돌지 않을 수 있습니다. 상위 모델로 보낸 3건이 하위 모델로 대체 실행돼 돌아왔습니다. 작품에 모델을 적을 때는 요청값이 아니라 실행 기록을 봐야 합니다.
마지막은 렌더된 페이지를 실제로 여는 것입니다.
curl -s https://ai.core.today/work/r/738 -o /tmp/a.htmlgrep -o 'files.core.today/aip/uploads/[^"]*' /tmp/a.html | wc -l
여기서 함정 하나. grep -c는 줄 수를 셉니다. 한 줄에 여러 개가 있으면 틀린 답이 나와요. 개수는 grep -o | wc -l로 셉니다. 저는 이것 때문에 "임베드가 0개"라는 오진을 한 적이 있습니다.
한 가지 더 배웠습니다. 클라이언트 렌더링 페이지는 HTML을 grep해도 안 나옵니다. 프로필 페이지가 그랬어요. 작품이 안 올라간 줄 알았는데 API로 확인하니 멀쩡했습니다. 서버 렌더 페이지인지 먼저 확인하세요.
되돌리기 어려운 단계일수록 뒤에 둡니다. 이상한 그림은 다시 만들면 되지만, 잘못된 메타데이터가 DB에 박히면 훨씬 귀찮습니다 🍠