파일럿 실험 결과 · ImageNet-100 · SDXL
실제로 20,000장을 생성해 규모를 맞춰 학습하고, 사람이 지각할 수 없는 워터마크 신호까지 통제 변수로 넣어 측정한 파일럿 결과입니다. 모든 수치는 코드 실행 산출물(results/summary.json)에서 자동으로 채워집니다.
같은 20,000장, 같은 학습 조건에서의 top-1 차이. real 53.17 ± 0.03 vs synth 18.88 ± 0.69
±1.0%p 마진, 차이 95% CI [33.71, 34.86]%p. '유의차 없음'이 아니라 동등성을 직접 검정했습니다.
real/synth 이진 탐지기 AUROC. 0.5면 구분 불가, 1.0이면 완벽 구분.
모든 이미지에 똑같이 워터마크를 넣으면 강도를 최대로 올려도 top-1 변화가 1.0%p 이내(시드 표준편차 수준)였습니다. real 에 넣은 경우는 TOST 로 동등 판정.
절반 클래스에만 워터마크를 넣자 그 클래스들만 무너졌습니다. 같은 신호, 같은 강도인데 상관 구조 하나로 결과가 갈립니다.
워터마크를 넣지 않은 나머지 50개 클래스는 그대로 — 부작용이 아니라 지름길 학습이라는 증거입니다.

정직하게 적습니다. 기본 프롬프트·기본 설정으로 만든 합성 이미지는 사람이 보면 티가 납니다. 따라서 이 파일럿의 real vs synth 비교는 '지각적 동등성이 통제된' 비교가 아닙니다 — 그것은 사람 2AFC 로 P-Match set 을 만드는 본 실험의 몫입니다. 다만 워터마크 축(RQ5)은 지금도 완전히 통제된 실험입니다. 워터마크를 넣은 이미지와 안 넣은 이미지는 PSNR 40dB 수준으로 물리적으로 거의 동일하고, 차이는 사람이 볼 수 없는 신호 하나뿐이기 때문입니다.

| 항목 | 값 |
|---|---|
| 태스크 | ImageNet-100 (1000클래스 중 고정 시드로 100개) 분류 |
| real 데이터 | ImageNet train, 256px 정사각 캐시 (합성과 저장 조건 일치) |
| 합성 데이터 | SDXL base 1.0, DPM++ 2M Karras 16스텝, 640px 생성 → 256px 저장, 프롬프트 다양화(장면·조명·시점·카메라) |
| 평가 | 언제나 real ImageNet val 5,000장 |
| 모델 | ResNet-18 스크래치 학습(사전학습 금지), 128px, 60에폭, 모든 조건에서 하이퍼파라미터 완전 고정 |
| 시드 | 조건당 2~3개, 평균 ± 표준편차 보고 |
파일럿 규모입니다. 계획서의 본 실험(생성기 3종·13만 장·사람 2AFC 수집)에서 규모가 커지면 절대 수치는 올라가지만, 비교는 모두 동일 조건 대조이므로 방향성은 유지될 것으로 봅니다.

| 학습 이미지 수 | real top-1 (%) | synth top-1 (%) | 격차 |
|---|---|---|---|
| 2,500 | 20.01 ± 0.74 | 9.29 ± 0.08 | +10.72%p |
| 5,000 | 29.79 ± 0.32 | 11.84 ± 0.21 | +17.95%p |
| 10,000 | 41.49 ± 0.42 | 14.81 ± 0.04 | +26.69%p |
| 20,000 | 53.17 ± 0.03 | 18.88 ± 0.69 | +34.29%p |
합성 n장이 real 몇 장에 해당하는 성능을 내는지 real 스케일 곡선에서 역산한 값입니다. α=1이면 합성 1장 = real 1장, α가 작을수록 합성이 열등합니다.
| 합성 데이터 규모 | 합성 top-1 (%) | 동등한 real 장수 | α | 비고 |
|---|---|---|---|---|
| 2,500 | 9.29 | 2,500 | 1.000 | 외삽 |
| 5,000 | 11.84 | 2,500 | 0.500 | 외삽 |
| 10,000 | 14.81 | 2,500 | 0.250 | 외삽 |
| 20,000 | 18.88 | 2,500 | 0.125 | 외삽 |
‘외삽’ 표시는 합성 성능이 측정한 real 곡선의 최솟값(2,500장)보다도 낮아 표에 적힌 α 가 상한이라는 뜻입니다. 즉 20,000장 구간에서 실제 α 는 0.125 이하입니다 — 합성 8장이 real 1장에도 못 미칩니다. 정확한 값을 구하려면 더 작은 real 규모까지 측정해야 합니다.

| 손상 | real top-1 (%) | synth top-1 (%) | 격차 |
|---|---|---|---|
| gauss_noise | 56.43 | 17.48 | +38.95%p |
| blur | 48.10 | 12.95 | +35.15%p |
| jpeg | 56.97 | 17.13 | +39.83%p |
| contrast | 23.62 | 1.37 | +22.25%p |
| bright | 41.53 | 12.98 | +28.55%p |
차이 +34.29%p, 95% CI [+33.71, +34.86]%p, 동등 마진 ±1.0%p → 판정 유의하게 다름 (different). '유의차 없음'은 같음의 근거가 아니므로 동등성 검정(TOST)으로 보고합니다.

| real 비율 | top-1 (%) |
|---|---|
| 0% | 18.82 ± 0.16 |
| 5% | 28.41 ± 0.21 |
| 10% | 33.17 ± 0.33 |
| 25% | 40.84 ± 0.20 |
| 50% | 47.10 ± 0.64 |
| 100% | 53.72 ± 0.40 |
같은 real 예산에서, 나머지를 합성으로 채워 총 20,000장으로 만들면 어떻게 되는가? real 만 썼을 때의 성능은 real 스케일 곡선을 로그 보간해 추정했습니다.
| real 장수 | real 만 (추정) | +합성으로 2만 장 채움 | 이득 |
|---|---|---|---|
| 1,000* | 20.01 | 28.41 | +8.40%p |
| 2,000* | 20.01 | 33.17 | +13.16%p |
| 5,000 | 29.79 | 40.84 | +11.05%p |
| 10,000 | 41.49 | 47.10 | +5.61%p |
* 표시는 측정한 real 곡선 범위 밖이라 외삽한 추정치입니다. 합성 데이터는 real 을 대체하지는 못하지만 보충에는 확실히 기여합니다 — 이 둘을 구분하지 않는 것이 합성 데이터 논쟁의 흔한 혼선입니다.
워터마크는 '사람은 못 보지만 기계는 읽는 신호'를 의도적으로 설계한 것입니다. 켜고 끌 수 있으므로, 지각적으로 동일한 두 데이터셋의 유일한 차이가 비지각 신호 하나뿐인 인과 실험을 만들 수 있습니다.

| 워터마크 강도 | top-1 (%) | PSNR | 페이로드 비트정확도 |
|---|---|---|---|
| α = 0.0 | 19.32 ± 0.68 | ∞ | — |
| α = 0.5 | 19.45 ± 0.33 | 43.2 dB | 0.842 |
| α = 1.0 | 18.71 ± 0.27 | 40.2 dB | 0.996 |
| α = 2.0 | 19.05 ± 0.17 | 35.4 dB | 0.550 |
| α = 4.0 | 18.35 ± 0.77 | 30.0 dB | 0.530 |
결과: 강도를 아무리 올려도 성능은 움직이지 않았습니다. α=4.0 은 PSNR 30dB 로 이미 육안에 보이는 수준인데도 그렇습니다. 당초 가설(사람이 못 보는 신호가 학습을 갉아먹는다)은 이 실험에서 기각되었습니다. 참고로 페이로드 비트정확도가 α=1.0 에서 최대인 것은 그 강도가 코덱의 설계값이기 때문이며, 더 키우면 코덱 자체가 깨집니다.
| 조건 | top-1 (%) | 시드 수 |
|---|---|---|
| 합성 (워터마크 없음) | 19.32 ± 0.68 | 2 |
| 합성 + 워터마크 기본 강도 | 18.71 ± 0.27 | 2 |
| 합성 + 워터마크 삽입 후 제거 | 18.99 ± 0.19 | 2 |
| 합성 + SDXL 기본 워터마크 | 19.30 ± 0.36 | 2 |
| real + 동일 워터마크 | 52.80 ± 0.40 | 2 |
기본 강도 워터마크가 학습 성능을 바꾸는가 → 차이 +0.61%p, 95% CI [-0.34, +1.56]%p → 판정 불가 (inconclusive)
합성이 아니라 진짜 사진에 워터마크를 넣어도 같은 일이 일어나는가 → 차이 +0.37%p, 95% CI [-0.05, +0.79]%p → 동등 (equivalent)
앞의 조건들은 워터마크를 모든 이미지에 균등하게 넣었습니다. 그렇다면 모델이 이용할 단서가 없습니다. 그래서 절반의 클래스(0~49)에만 워터마크를 넣어 워터마크가 클래스와 상관되게 만들고, 워터마크가 전혀 없는 real val 로 평가했습니다. 모델이 워터마크를 지름길로 썼다면 그 클래스들의 정확도가 무너져야 합니다.
| 클래스 그룹 | 절반만 워터마크 (top-1 %) | 대조군: 워터마크 없음 (top-1 %) |
|---|---|---|
| 워터마크 넣은 클래스 (0~49) | 37.24 | 58.03 |
| 워터마크 없는 클래스 (50~99) | 51.08 | 48.31 |
| 차이 | -13.84%p | +9.72%p |
워터마크를 넣은 클래스만 -20.8%p 무너지고, 건드리지 않은 클래스는 +2.8%p 로 그대로입니다 (이중차분 -23.6%p). 균등하게 넣었을 때는 아무 일도 없었는데, 라벨과 상관되게 넣자마자 모델이 워터마크를 지름길로 학습하고 워터마크 없는 실제 테스트에서 무너진 것입니다.
⚠ 실무에서 가장 위험한 지점: 합성 데이터의 가장 흔한 사용법이 희귀 클래스만 생성 이미지로 보강하는 것입니다. 그런데 생성 파이프라인이 기본 워터마커를 켠 채라면, 바로 그 순간 '워터마크 ⟺ 특정 클래스' 상관이 만들어집니다. 위 결과는 그 조합이 해당 클래스를 얼마나 망가뜨리는지 보여줍니다.
워터마크를 넣은 이미지는 JPEG 을 한 번 더 거칩니다. 그렇다면 위 붕괴가 워터마크가 아니라 이중 압축 때문일 수도 있습니다. 그래서 워터마크 없이 같은 재저장만 절반 클래스에 적용한 대조군을 똑같이 학습시켰습니다.
| 조건 | 워터마크/재압축 클래스 (0~49) | 손대지 않은 클래스 (50~99) |
|---|---|---|
| 워터마크 삽입 | 37.24 | 51.08 |
| 재압축만 (대조군) | 57.16 | 48.66 |
재압축만 했을 때는 아무 일도 일어나지 않았습니다 (해당 클래스 57.2%, 정상 범위). 워터마크를 넣었을 때만 37.2% 로 무너집니다. → 원인은 압축 이력이 아니라 워터마크 신호 그 자체입니다.

| 구분 대상 | AUROC |
|---|---|
| 탐지기(이미지 전체) | 0.968 |
| 탐지기(고주파 잔차만) | 0.951 |
| 워터마크 탐지 α=0.5 | 0.523 |
| 워터마크 탐지 α=1.0 | 0.566 |
| 워터마크 탐지 α=2.0 | 0.988 |
| 워터마크 탐지 α=4.0 | 0.999 |
잔차만으로도 AUROC가 높다는 것은, 이미지 내용을 다 지워도 저수준 신호만으로 출처를 알 수 있다는 뜻입니다.
| 관찰 | 결과 | 의미 |
|---|---|---|
| 생성기 지문을 기계가 읽는가 | 고주파 잔차만으로 AUROC 0.951 | 이미지 내용을 다 지워도 출처가 읽힌다 |
| SDXL 기본 워터마크를 기계가 읽는가 | AUROC 0.909 (사람 눈 PSNR 42dB, 페이로드는 해독 불가) | 사람도 못 보고 페이로드도 안 풀리는데 모델은 읽는다 |
| 우리 워터마크(α=1)를 기계가 읽는가 | AUROC 0.566 — 우연 수준에 가까움 | 같은 PSNR 이어도 코덱에 따라 흔적의 크기가 다르다 |
| 그 신호들이 성능 격차를 설명하는가 | 강도 스윕·기본 워터마크 모두 무영향, 지문을 파괴해도 격차 그대로 | 설명하지 못한다. 격차는 의미·다양성 층위 |
| 그렇다면 언제 해로운가 | 라벨과 상관되게 넣자 해당 클래스만 붕괴 | 상관 구조가 있을 때만 해롭다 |
결론: 비지각 신호는 그 자체로 학습을 망치지 않습니다. 모델이 완벽하게 읽어낼 수 있는데도 균등하게 분포하면 아무 일도 일어나지 않습니다. 위험은 신호의 존재가 아니라 신호와 라벨의 상관에서 옵니다. 따라서 실무 규칙은 '워터마크를 쓰지 마라'가 아니라 '워터마크 유무가 클래스·출처와 상관되지 않게 하라' 입니다.
real 분포와 합성 분포의 거리. 작을수록 가깝습니다.
precision은 '합성이 real 매니폴드 안에 있는가'(품질), recall은 'real을 합성이 덮는가'(다양성).
0.5면 임베딩 공간에서 두 분포가 구분 불가.
클래스 안에서 이미지들이 얼마나 서로 다른가. 낮을수록 단조롭습니다.
정밀도 0.33 / 재현율 0.23 — 둘 다 낮고, 재현율이 더 낮습니다. 합성 이미지의 상당수가 real 매니폴드 밖에 있고(화풍 차이), 그와 별개로 real 이 가진 변이를 덮지도 못합니다. 1-NN 2표본 정확도가 0.984 라는 것은 임베딩 공간에서 두 분포가 거의 완전히 분리된다는 뜻입니다. 파일럿의 큰 격차는 이 분포 자체의 어긋남으로 설명되며, 앞서 본 대로 저수준 신호로는 설명되지 않습니다.


| 변환 | real−synth 격차 | 무변환 대비 변화 |
|---|---|---|
| none | +34.29%p | — |
| jpeg65 | +33.06%p | -1.23%p |
| noise4 | +33.32%p | -0.97%p |
| resample | +33.60%p | -0.69%p |
| hf_rand | +34.14%p | -0.15%p |
| combo | +32.82%p | -1.47%p |
변환 후에도 격차가 그대로면 원인은 의미·다양성 층위이고, 줄어들면 원인의 일부는 지각 불가 저수준 신호입니다.
| 확인한 것 | 결과 |
|---|---|
| diffusers SDXL 파이프라인이 기본 워터마커를 붙이는가 | 예 — invisible-watermark 가 설치되어 있으면 자동 부착 |
| 기본 워터마크 페이로드가 해독되는가(해상도별 48비트 일치율) | 768px 0.52, 512px 0.50, 384px 0.50, 256px 0.50 — 우연 수준(0.5)에 가까움 |
| 기본 워터마크의 픽셀 변화(PSNR) | 42.0 dB — 육안 구분 불가 수준이지만 픽셀은 분명히 바뀜 |
| invisible-watermark 코덱 신뢰도 | SDXL 기본값 dwtDct 왕복 비트정확도 0.875 (최소 0.604) — 불안정. dwtDctSvd는 0.999 → 실험군은 후자 사용. 두 코덱 모두 PSNR 39.4dB 수준(육안 구분 불가) |
실무 함의: 아무 설정 없이 SDXL로 데이터를 생성하면 비지각 워터마크가 섞인 채로 학습됩니다. 페이로드가 해독되지 않더라도 픽셀은 바뀌어 있으므로, 합성 데이터 실험을 하려면 워터마커 상태를 명시적으로 통제하고 기록해야 합니다.
이 페이지는 파일럿입니다. 계획서의 본 실험과 다른 점을 그대로 적습니다.
| 항목 | 파일럿 | 본 실험 계획 |
|---|---|---|
| 사람 2AFC | 미수집 — 페이지만 배포(참여 모집 전) | 20~30명 × 200 trial, 기만성 예측기로 P-Match set 구성 |
| 생성기 | SDXL 1종 | SDXL / SD3.5 / FLUX 3종 비교 |
| 규모 | 합성 20,000장 (클래스당 200) | 13만 장 (클래스당 1,300) |
| 학습 | ResNet-18, 128px, 60에폭 | ResNet-50 + ViT-S, 224px, 장기 학습 |
| 강건성 평가 | 미실시 | ImageNet-v2/R/Sketch/C |
| 워터마크 종류 | DWT-DCT 계열(사후 삽입) + SDXL 기본 | Gaussian Shading·Tree-Ring 등 생성 내재형 추가 |
사람 2AFC 데이터가 없으므로, 이 파일럿에서 '지각적으로 동일하다'는 것은 PSNR·잔차 크기 같은 물리적 프록시로만 뒷받침됩니다. 지각적 동등성을 실제로 확정하는 것은 본 실험의 몫입니다.