본문 바로가기
C.W.K.
Stream
Lesson 03 of 04 · published

이미지는 분위기를, 데이터는 사실을

~13 min · generative-art, provenance, acceptance-criteria, real-pixels

Level 0불 꺼진 작업장
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

모든 프레임 한가운데를 지나는 선

작업장은 생성 이미지를 화면에 올릴 수 있어. 그리고 그 전부를 직접 공급자 부르는 대신 가족 이미지 엔진을 거쳐 보내. 목소리랑 같은 소유권 규칙이야. 근데 흥미로운 제약은 이미지가 어디서 오냐가 아냐. 뭘 그려도 되냐야.

렌더의 모든 프레임은 세 범주 중 하나에 들어가고, 범주끼린 안 섞여. 사실을 담은 화면은 코드랑 데이터에서 렌더돼. 이름, 숫자, 구조, 시청자가 오해할 수 있는 건 전부. 앱 화면은 살아 있는 소프트웨어의 진짜 스크린샷이야. 목업은 절대 안 되고. 생성 이미지는 분위기랑 전환만 실어.

단단한 관문이 세 번째 범주에 앉아 있어. 읽히는 가짜 인터페이스 요소나 지어낸 앱 이름, 숫자가 자라난 아트 카드는 그 자리에서 거절이야. 완화도 없고, 라벨 붙이기도 없고, 거절하고 다시 생성. 논리는 이래. "이 화면 위의 사실은 전부 진짜"라는 주장은 쪼갤 수가 없거든. 경계 하나가 흐려지면 그 프레임 하나를 잃는 게 아니라 나머지 프레임 전부의 신뢰를 잃어. 시청자가 이제 하나하나를 의심해야 하니까.

자기를 안 속이면서 생성물 심사하기

생성 이미지엔 합격 기준이 필요해. "보기 좋나"는 판정 절차가 아니거든. 실제로 작동하는 계층형 버전은 이렇게 생겼어.

단단한 관문이 먼저고 협상이 안 돼. 글자는 전체 해상도에서 완벽해야 하고, 해부학은 뜯어봐도 버텨야 하고, 사실 오염이 없어야 해. 하나라도 걸리면 논의 없이 재생성이야. 시청자가 즉각 알아채는 실패들이거든.

측정 검사가 다음인데, 핵심 수는 전달 크기에서 판정하기야. 큰 화면에 전체 해상도로 띄워놓고 심사하는 카드는, 어떤 시청자도 겪지 않을 조건에서 심사받는 거야. 실제로 받는 크기랑 머무는 시간으로 줄여봐. 전체 크기에서 멀쩡하던 게 무너지고, 좀 거칠어 보이던 게 안 보이게 돼.

비교 선택이 마지막이고, 결과를 제일 많이 바꾸는 게 이거야. 절대 품질 판정은 못 믿어. "이거 좋아?"라고 물으면 네가 바라던 모양의 답이 나와. 상대 순위는 훨씬 튼튼하고. 그래서 자리마다 후보를 여러 장 만들고, 기준으로 순위를 매기고, 승자를 쓰고, 진 것들을 탈락 사유까지 붙여서 남겨. 그게 나중에 그 안목을 감사 가능하게 만들어.

Code

세 범주, 그리고 그 사이의 관문·text
FACTUAL      rendered from code + data
             names, quantities, structures, relationships
             -> deterministic. same inputs, same pixels.

APPLICATION  real screenshots of software that actually runs
             -> never a mockup, never a redraw, never "close enough"

ART          generated; mood, texture, transitions
             -> HARD GATE: no readable interface elements,
                no invented product names, no numbers,
                no fake data of any kind

# The gate is absolute because the credibility claim is global:
# a viewer who catches ONE invented detail must now doubt all of them.
의견이 아니라 파이프라인으로서의 합격 판정·python
def accept(candidates: list[Card], slot: Slot) -> Card:
    """Layered acceptance. Hard gates first, ranking last."""
    survivors = []
    for c in candidates:
        if not text_letter_perfect(c, at="full"):
            log_rejection(c, "text malformed at full resolution")
            continue
        if has_factual_pollution(c):        # fake UI, invented names, digits
            log_rejection(c, "factual pollution: art may not assert facts")
            continue
        if not anatomy_ok(c):
            log_rejection(c, "anatomy")
            continue
        survivors.append(c)

    if not survivors:
        raise NoAcceptableCandidate(slot)   # regenerate; never "ship the least bad"

    # judged at DELIVERY size, not authoring size
    ranked = sorted(survivors, key=lambda c: score(c.downscaled(slot.display_size)))
    winner = ranked[-1]
    for loser in ranked[:-1]:
        log_rejection(loser, f"ranked below winner: {compare(loser, winner)}")
    return winner

External links

Exercise

진짜 데이터랑 예시용 내용이 섞여 있는 화면이나 문서를 하나 골라봐. 선을 대놓고 그어. 어떤 요소가 하중을 받는 사실이고 어떤 게 장식인지 적어. 그다음 확인해. 읽는 사람이 설명 없이 그 둘을 가려낼 수 있어? 못 하면 이 강의가 말한 문제랑 같은 걸 갖고 있는 거고, 해법은 아무도 안 읽는 캡션이 아니라 눈에 보이는 규칙이야.
Hint
데모의 자리 채우기 데이터가 전형적인 경우야. 지어냈지만 그럴싸한 숫자가 든 스크린샷이 문서에 재사용되고, 세 번째 재사용쯤엔 그게 가짜였다는 걸 아무도 기억 못 해. 지어낸 게 진짜로 오인될 수 있으면, 구조적으로 표시하든가 아예 그런 모양으로 안 만들든가 해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.