Skip to content

ChanDevOps02/VisionCraft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

16 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

VisionCraft: Scene-Aware Image Understanding & Enhancement

Abstract

VisionCraft๋Š” ์žฅ๋ฉด(Scene)์˜ ์˜๋ฏธ๋ก ์  ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๊ณ  ์ด๋ฅผ ์ด๋ฏธ์ง€ ๋ถ„์„ ๋ฐ ๊ฐœ์„  ๊ณผ์ •์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•œ Scene-Aware Computer Vision Framework์ด๋‹ค. ๊ธฐ์กด์˜ ์ด๋ฏธ์ง€ ๋ณด์ • ์‹œ์Šคํ…œ์€ ์ฃผ๋กœ ๋ฐ๊ธฐ, ๋Œ€๋น„, ์„ ๋ช…๋„์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€(low-level) ํ†ต๊ณ„๋Ÿ‰์— ์˜์กดํ•˜์—ฌ ๋™์ผํ•œ ๋ณด์ • ์ „๋žต์„ ๋ชจ๋“  ์ด๋ฏธ์ง€์— ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ™์€ ์ˆ˜์ค€์˜ ๋ฐ๊ธฐ๋‚˜ ๋Œ€๋น„๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋ผ๋„ ์žฅ๋ฉด์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์š”๊ตฌ๋˜๋Š” ๋ณด์ • ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด VisionCraft๋Š” ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ๋ถ„์„(Image Quality Analysis), ์žฅ๋ฉด ๋ถ„๋ฅ˜(Scene Classification), ๊ฐ์ฒด ๊ฒ€์ถœ(Object Detection), ์˜๋ฏธ๋ก ์  ๋ถ„ํ• (Semantic Segmentation)์„ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ฒฐํ•ฉํ•˜์˜€๋‹ค. ์‹œ์Šคํ…œ์€ ๋‹จ์ˆœํžˆ ๋ณด์ •๋œ ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ , ์ด๋ฏธ์ง€์˜ ํ’ˆ์งˆ ์ƒํƒœ์™€ ์žฅ๋ฉด ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์™œ ํŠน์ • ๋ณด์ •์ด ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ ์‹œ๊ฐ์ ยท์ •๋Ÿ‰์  ๊ทผ๊ฑฐ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•œ๋‹ค.

๋˜ํ•œ ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์‘์šฉ(Application) ๊ด€์ ๋ฟ ์•„๋‹ˆ๋ผ ์—ฐ๊ตฌ(Research) ๊ด€์ ์˜ ์‹คํ—˜๋„ ํฌํ•จํ•œ๋‹ค. ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” CLIP ๊ธฐ๋ฐ˜ Text Embedding์„ ResNet50 Scene Classifier์˜ Latent Space์— ์ฃผ์ž…ํ•˜๋Š” Text-Guided Cross-Attention ๊ตฌ์กฐ๋ฅผ ์ œ์•ˆํ•˜์˜€์œผ๋ฉฐ, ์ถ”๊ฐ€์ ์œผ๋กœ InfoNCE ๊ธฐ๋ฐ˜ Contrastive Learning์„ ์ ์šฉํ•˜์—ฌ Visual Representation๊ณผ Text Prototype ๊ฐ„์˜ Alignment๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒ๊ตฌํ•˜์˜€๋‹ค.

์‹คํ—˜ ๊ฒฐ๊ณผ, Text-Guided Cross-Attention ๋ชจ๋ธ์€ Visual-Only Baseline ๋Œ€๋น„ Validation Accuracy๋ฅผ 59.79%์—์„œ 60.56%๊นŒ์ง€ ํ–ฅ์ƒ์‹œ์ผฐ์œผ๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ Text Cross-Attention + InfoNCE ๋ชจ๋ธ์€ 60.75%์˜ Validation Accuracy๋ฅผ ๊ธฐ๋กํ•˜์˜€๋‹ค. ๋˜ํ•œ UMAP, t-SNE, centroid cosine distance, prototype alignment, attention visualization์„ ํ†ตํ•ด ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ •๋ณด๊ฐ€ Latent Representation์„ ๋ณด๋‹ค ๊ตฌ์กฐ์ ์ด๊ณ  ์˜๋ฏธ๋ก ์ ์ธ ๋ฐฉํ–ฅ์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ํ˜„์ƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ VisionCraft๋Š” Scene-Aware Image Enhancement๋ฅผ ์œ„ํ•œ ์‹ค์šฉ์  ์‹œ์Šคํ…œ์ธ ๋™์‹œ์—, Multimodal Representation Learning์ด Scene Classification์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ ํ”Œ๋žซํผ์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.


1. Introduction

1.1 Motivation

๊ธฐ์กด์˜ Image Processing Pipeline์€ ๋Œ€๋ถ€๋ถ„ Pixel-level Statistics์— ์˜์กดํ•ด ์™”๋‹ค. ๋ฐ๊ธฐ(Brightness), ๋Œ€๋น„(Contrast), ์„ ๋ช…๋„(Sharpness)์™€ ๊ฐ™์€ Low-level Feature๋Š” ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์„ ํŒ๋‹จํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜์ง€๋งŒ, ์‹ค์ œ ์‚ฌ๋žŒ์ด ์ธ์ง€ํ•˜๋Š” ์žฅ๋ฉด(Scene)์˜ ์˜๋ฏธ์™€ ๋งฅ๋ฝ์„ ์ถฉ๋ถ„ํžˆ ์„ค๋ช…ํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ๋ช…์ด ๋ถ€์กฑํ•œ ์‹ค๋‚ด ๊ณต๊ฐ„๊ณผ ํ๋ฆฐ ๋‚ ์˜ ํ•ด๋ณ€ ํ’๊ฒฝ์€ ๋ชจ๋‘ ๋…ธ์ถœ(Exposure) ๋ณด์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋ณด์ • ๊ณต์‹์„ ๋‘ ์ด๋ฏธ์ง€์— ์ผ๊ด„์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค. ์‹ค๋‚ด ์‚ฌ์ง„์—์„œ๋Š” ๊ฐ€๊ตฌ ๊ตฌ์กฐ์™€ ์กฐ๋ช… ๋ถ„ํฌ๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, ์ž์—ฐ ํ’๊ฒฝ์—์„œ๋Š” ํ•˜๋Š˜๊ณผ ์ง€ํ˜•์˜ ์ƒ‰์ฑ„ ๋Œ€๋น„ ๋ฐ ์งˆ๊ฐ(Texture)์ด ๋” ์ค‘์š”ํ•œ ์š”์†Œ๊ฐ€ ๋œ๋‹ค.

์ฆ‰, ์ด๋ฏธ์ง€๋ฅผ ๋‹จ์ˆœํ•œ ํ”ฝ์…€ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ”๋ผ๋ณด๋Š” ์ ‘๊ทผ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋ณด๋‹ค ํšจ๊ณผ์ ์ธ ์ด๋ฏธ์ง€ ๋ถ„์„๊ณผ ๊ฐœ์„ ์„ ์œ„ํ•ด์„œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ์˜๋ฏธ๋ก ์  ๋งฅ๋ฝ(Semantic Context)์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

VisionCraft๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์˜์‹์—์„œ ์ถœ๋ฐœํ•˜์˜€๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•œ ์ด๋ฏธ์ง€ ๋ณด์ •์„ ๋„˜์–ด, ์ด๋ฏธ์ง€์˜ ์žฅ๋ฉด ๊ตฌ์กฐ์™€ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ ๋ฐ ๊ฐœ์„  ๊ณผ์ •์— ๋ฐ˜์˜ํ•˜๋Š” Scene-Aware Computer Vision Framework๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1.2 Problem Statement

Computer Vision ๋ถ„์•ผ์˜ ์ฃผ์š” ๋‚œ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์‹œ๊ฐ์  ์œ ์‚ฌ์„ฑ(Visual Similarity)๊ณผ ์˜๋ฏธ์  ์ฐจ์ด(Semantic Difference) ์‚ฌ์ด์˜ ๊ฐ„๊ทน์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ๋ฉด๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ ์‹œ๊ฐ์ ์œผ๋กœ ๋งค์šฐ ์œ ์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • restaurant_cafe โ†” kitchen_dining
  • waterfront โ†” mountain_valley
  • public_large_indoor โ†” corridor_lobby
  • bedroom โ†” office_study

์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋“ค์€ ๊ณตํ†ต ๊ฐ์ฒด(Object), ์œ ์‚ฌํ•œ ์ƒ‰์ƒ ๋ถ„ํฌ(Color Distribution), ๋น„์Šทํ•œ ๊ณต๊ฐ„ ๊ตฌ์กฐ(Spatial Layout)๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ Visual Feature๋งŒ์œผ๋กœ๋Š” ์•ˆ์ •์ ์ธ ๋ถ„๋ฅ˜ ๊ฒฝ๊ณ„๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๋˜ํ•œ ๊ธฐ์กด ์ด๋ฏธ์ง€ ๊ฐœ์„  ์‹œ์Šคํ…œ ์—ญ์‹œ ๋Œ€๋ถ€๋ถ„ ์žฅ๋ฉด์˜ ์˜๋ฏธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ์ฑ„ Brightness, Contrast, Blur์™€ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ์ง€ํ‘œ์—๋งŒ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๋™์ž‘ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ค ๊ณต๊ฐ„์ธ์ง€, ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์ค‘์š”ํ•œ์ง€, ์–ด๋–ค ์˜์—ญ์ด ๋ณด์กด๋˜์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ๋™์ผํ•œ ๋ณด์ • ์ „๋žต์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ธฐ์กด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ์žฅ๋ฉด์˜ ์˜๋ฏธ๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•จ
  • ์‹œ๊ฐ์ ์œผ๋กœ ์œ ์‚ฌํ•œ ํด๋ž˜์Šค ๊ฐ„ ํ˜ผ๋™ ๋ฐœ์ƒ
  • ๋ณด์ • ๊ณผ์ •์˜ ์„ค๋ช… ๊ฐ€๋Šฅ์„ฑ(Explainability) ๋ถ€์กฑ
  • ๊ฐ์ฒด์™€ ์˜์—ญ์˜ ์ค‘์š”๋„๋ฅผ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•จ

VisionCraft๋Š” ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด Low-level Image Analysis์™€ High-level Scene Understanding๋ฅผ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ฒฐํ•ฉํ•˜์˜€๋‹ค.

1.3 Why Scene Understanding Matters

VisionCraft๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋‹จ์ˆœํ•œ ํ’ˆ์งˆ ๋ถ„์„๋งŒ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‹œ์Šคํ…œ์€ Brightness, Blur, Edge Density, Dynamic Range์™€ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋™์‹œ์—, Scene Classification, Object Detection, Semantic Segmentation์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ๊ตฌ์กฐ์™€ ์˜๋ฏธ๋ฅผ ํ•จ๊ป˜ ํ•ด์„ํ•œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์€ ๋‹จ์ผ ์ด๋ฏธ์ง€๋ฅผ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ์งˆ๋ฌธ๋“ค์— ๋‹ตํ•˜๊ณ ์ž ํ•œ๋‹ค.

  • ์žฅ๋ฉด ์ธ์‹ (Scene Identity) ์ด ์ด๋ฏธ์ง€๋Š” ์–ด๋–ค ๊ณต๊ฐ„์ ยท์ƒํ™ฉ์  ๋งฅ๋ฝ์„ ๊ฐ€์ง€๋Š”๊ฐ€?
  • ํ’ˆ์งˆ ์ง„๋‹จ (Quality Diagnosis) ์‹œ๊ฐ์  ํ’ˆ์งˆ ์ €ํ•˜์˜ ์›์ธ์€ ๋ฌด์—‡์ธ๊ฐ€?
  • ์˜์—ญ ๋ถ„์„ (Semantic ROI Analysis) ์–ด๋–ค ๊ฐ์ฒด์™€ ์˜์—ญ์ด ๋ณด์กด๋˜๊ฑฐ๋‚˜ ๊ฐ•์กฐ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€?
  • ๋ฌธ๋งฅ ๊ธฐ๋ฐ˜ ๋ณด์ • (Context-aware Enhancement) ํ˜„์žฌ ์žฅ๋ฉด์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ณด์ • ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€?
  • ๋ชจ๋ธ ํ•ด์„ (Explainability) ๋ถ„๋ฅ˜ ๋ชจ๋ธ์€ ์–ด๋–ค ์‹œ๊ฐ์  ๋‹จ์„œ๋ฅผ ๊ทผ๊ฑฐ๋กœ ํ˜„์žฌ ์žฅ๋ฉด์„ ํŒ๋‹จํ•˜์˜€๋Š”๊ฐ€?

์ด๋Ÿฌํ•œ ์ ‘๊ทผ์„ ํ†ตํ•ด VisionCraft๋Š” ๋‹จ์ˆœํ•œ Filter Application Tool์„ ๋„˜์–ด, ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ์ง„๋‹จ, ์žฅ๋ฉด ์ดํ•ด, ๊ฐ์ฒด ๋ถ„์„, ์˜๋ฏธ๋ก ์  ์˜์—ญ ํ•ด์„, ์žฅ๋ฉด ๊ธฐ๋ฐ˜ ๋ณด์ •, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐํ™”๊นŒ์ง€ ํ•˜๋‚˜์˜ ํŒŒ์ดํ”„๋ผ์ธ ์•ˆ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ํ†ตํ•ฉ์ ์ธ Computer Vision Framework๋ฅผ ์ง€ํ–ฅํ•œ๋‹ค.


2. Contributions

๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๊ธฐ์—ฌ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

2.1 Technical Contributions

  1. ์ €์ˆ˜์ค€ ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ๋ถ„์„๊ณผ ๊ณ ์ˆ˜์ค€ ์žฅ๋ฉด ์ดํ•ด๋ฅผ ๊ฒฐํ•ฉํ•œ Scene-Aware Image Enhancement Pipeline์„ ์ œ์•ˆํ•˜์˜€๋‹ค.

  2. Brightness, Contrast, Blur, Exposure ๋ถ„์„๊ณผ Object Detection, Semantic Segmentation์„ ํ†ตํ•ฉํ•˜์—ฌ ์„ค๋ช… ๊ฐ€๋Šฅํ•œ(Explainable) ์ด๋ฏธ์ง€ ๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.

  3. ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€ ํ•œ ์žฅ๋งŒ ์—…๋กœ๋“œํ•˜๋ฉด ๋ถ„์„, ํ•ด์„, ๋ณด์ •, ์‹œ๊ฐํ™”๋ฅผ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉํ˜• Gradio Application์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

  4. ๊ฐ์ฒด ๊ฒ€์ถœ๊ณผ ์˜๋ฏธ๋ก ์  ๋ถ„ํ•  ๊ฒฐ๊ณผ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Semantic-Aware Crop Recommendation ๋ฐ Region-Aware Enhancement ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜์˜€๋‹ค.

  5. OCR, Perspective Rectification, Auto Straighten ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์ข…ํ•ฉ์ ์ธ Computer Vision Toolkit์„ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.

2.2 Research Contributions

  1. Places365 ๊ธฐ๋ฐ˜ ์žฅ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ Scene-Aware Enhancement์— ์ ํ•ฉํ•œ 14๊ฐœ Scene Taxonomy๋ฅผ ์„ค๊ณ„ํ•˜์˜€๋‹ค.

  2. CLIP ๊ธฐ๋ฐ˜ Text Embedding์„ ํ™œ์šฉํ•˜์—ฌ ์žฅ๋ฉด ์˜๋ฏธ ์ •๋ณด๋ฅผ Latent Space์— ์ฃผ์ž…ํ•˜๋Š” Text-Guided Cross-Attention Scene Classifier๋ฅผ ์ œ์•ˆํ•˜์˜€๋‹ค.

  3. Visual Representation๊ณผ Class-Level Text Prototype์˜ Alignment๋ฅผ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด InfoNCE ๊ธฐ๋ฐ˜ Contrastive Learning ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์˜€๋‹ค.

  4. Accuracy ๋น„๊ต๋ฅผ ๋„˜์–ด UMAP, t-SNE, Cosine Similarity, Prototype Alignment, Attention Map Visualization์„ ํ™œ์šฉํ•œ Latent Space ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค.

  5. Text Prior๊ฐ€ Scene Classification ๊ณผ์ •์—์„œ Semantic Smoothing ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ์„ ๊ด€์ฐฐํ•˜์˜€์œผ๋ฉฐ, ์ด์— ๋”ฐ๋ฅธ ์žฅ์ ๊ณผ Trade-off๋ฅผ ์ •๋Ÿ‰์ ยท์ •์„ฑ์ ์œผ๋กœ ๋ถ„์„ํ•˜์˜€๋‹ค.


3. System Overview

VisionCraft๋Š” ๋‹จ์ˆœํ•œ ์ด๋ฏธ์ง€ ๋ณด์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹ˆ๋ผ, ์ด๋ฏธ์ง€ ์ดํ•ด(Image Understanding)์™€ ์ด๋ฏธ์ง€ ๊ฐœ์„ (Image Enhancement)์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Scene-Aware Computer Vision Framework์ด๋‹ค.

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐœ์˜ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  1. Application Pipeline

    • ์‹ค์ œ ์ด๋ฏธ์ง€ ๋ถ„์„ ๋ฐ ๊ฐœ์„ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ†ตํ•ฉํ˜• Application System
  2. Research Pipeline

    • ์žฅ๋ฉด ๋ถ„๋ฅ˜(Scene Classification) ๊ณผ์ •์—์„œ ํ…์ŠคํŠธ ์˜๋ฏธ ์ •๋ณด(Text Prior)๊ฐ€ Latent Representation์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ตฌ ํ”„๋ ˆ์ž„์›Œํฌ

Application Pipeline์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ”๋ฉฐ, Research Pipeline์€ Scene Classification ๋ชจ๋ธ์˜ ํ‘œํ˜„ ํ•™์Šต(Representation Learning)์„ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค.


3.1 Overall Architecture

flowchart TD

A[Input Image]

A --> B[Optional Preprocessing]
B --> B1[Auto Straighten / Tilt Correction]

B1 --> C[Low-level Quality Analysis]
C --> C1[Brightness / Contrast / Blur]
C --> C2[Exposure / Dynamic Range]
C --> C3[Edge Density / White Balance]

C --> D[Scene Understanding]
D --> D1[Scene Classification]
D --> D2[Object Detection]
D --> D3[Semantic Segmentation]

D --> E[Heuristic Aggregation & Analysis]
E --> E1[Crop Suggestion]
E --> E2[OCR / Perspective Rectification]
E --> E3[Quality Summary & Feedback]

E --> F[Traditional Enhancement]
F --> F1[White Balance / Gamma / CLAHE]
F --> F2[Sharpening / Denoise]
F --> F3[Region-aware Adjustment]

F --> G[Visualization & Report]
G --> G1[Analysis Report]
G --> G2[Detection / Segmentation Results]
G --> G3[Difference Heatmap / ORB Matching]
G --> G4[Enhanced Image & Recommended Crop]
Loading

๊ธฐ์กด์˜ ์ด๋ฏธ์ง€ ๋ณด์ • ์‹œ์Šคํ…œ์ด ๋‹จ์ˆœํžˆ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค๋ฉด, VisionCraft๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ๋จผ์ € ๋ถ„์„ํ•˜๊ณ (Analyze), ์žฅ๋ฉด์„ ํ•ด์„ํ•˜๋ฉฐ(Understand), ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•œ ๋’ค(Integrate), ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ณด์ •๊ณผ ์‹œ๊ฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์€ process ๋งค์ปค๋‹ˆ์ฆ˜์„ ๋”ฐ๋ฅธ๋‹ค.

Input
  โ†“
Analyze
  โ†“
Understand
  โ†“
Integrate
  โ†“
Enhance
  โ†“
Explain

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด VisionCraft๋Š” ๋‹จ์ˆœํ•œ Pixel-level Processing์„ ๋„˜์–ด, ์žฅ๋ฉด์˜ ์˜๋ฏธ๋ก ์  ๋งฅ๋ฝ(Semantic Context)์„ ๋ฐ˜์˜ํ•˜๋Š” Scene-Aware Computer Vision Framework๋ฅผ ์ง€ํ–ฅํ•œ๋‹ค.

3.2 Application Pipeline

Application Pipeline์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์ธ ์‹œ์Šคํ…œ์ด๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ๋‹ค์–‘ํ•œ Computer Vision ๋ชจ๋“ˆ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ ๋ณด์ •๋œ ์ด๋ฏธ์ง€์™€ ๋ถ„์„ ๋ฆฌํฌํŠธ๋ฅผ ํ•จ๊ป˜ ์ƒ์„ฑํ•œ๋‹ค.

Application Pipeline์€ ๋‹ค์Œ ๋„ค ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

1. Image Quality Analysis

์ด๋ฏธ์ง€์˜ ๋ฌผ๋ฆฌ์  ํ’ˆ์งˆ ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•œ๋‹ค.

์ฃผ์š” ๋ถ„์„ ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Brightness
  • Contrast
  • Blur
  • Edge Density
  • Dynamic Range
  • Exposure Condition
  • White Balance

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ์ €ํ•˜์˜ ์›์ธ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ์ง„๋‹จํ•œ๋‹ค.


2. Scene Understanding

์ด๋ฏธ์ง€์˜ ์˜๋ฏธ๋ก ์  ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•œ๋‹ค.

์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๋ชจ๋ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Scene Classification
  • YOLOv8 Object Detection
  • SegFormer Semantic Segmentation

์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์€

  • ์–ด๋–ค ๊ณต๊ฐ„์ธ์ง€
  • ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€
  • ์–ด๋–ค ์˜์—ญ์ด ์ค‘์š”ํ•œ์ง€

๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.


3. Heuristic Aggregation and Analysis

ํ’ˆ์งˆ ๋ถ„์„ ๊ฒฐ๊ณผ์™€ Scene Understanding ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํ›„์† ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ํ•ด์„ ๋‹จ์„œ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋œ๋‹ค.

  • Detection ๊ธฐ๋ฐ˜ ๋˜๋Š” Segmentation ๊ธฐ๋ฐ˜ Crop Suggestion
  • OCR ์ˆ˜ํ–‰์„ ์œ„ํ•œ Perspective Rectification
  • ์žฅ๋ฉด, ๊ฐ์ฒด, ์˜์—ญ, ํ’ˆ์งˆ ์ง€ํ‘œ๋ฅผ ์ข…ํ•ฉํ•œ Quality Summary์™€ Feedback ์ƒ์„ฑ
  • Rule-of-Thirds์™€ ๊ฐ์ฒด ์œ„์น˜๋ฅผ ๋ฐ˜์˜ํ•œ Composition ๋ถ„์„

์ฆ‰, ์ด ๋‹จ๊ณ„๋Š” ๋…๋ฆฝ์ ์ธ reasoning engine์ด๋ผ๊ธฐ๋ณด๋‹ค ์—ฌ๋Ÿฌ ๋ถ„์„ ๋ชจ๋“ˆ์˜ ์ถœ๋ ฅ์„ ์ข…ํ•ฉํ•˜์—ฌ ์‚ฌ๋žŒ์ด ํ•ด์„ ๊ฐ€๋Šฅํ•œ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” rule-based aggregation ๋‹จ๊ณ„์— ๊ฐ€๊น๋‹ค.


4. Traditional Enhancement and Visualization

๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ œ ์ด๋ฏธ์ง€ ๋ณด์ •์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ „ํ›„ ๋น„๊ต์™€ ์ค‘๊ฐ„ ์‚ฐ์ถœ๋ฌผ์„ ํ•จ๊ป˜ ์‹œ๊ฐํ™”ํ•œ๋‹ค.

ํฌํ•จ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Exposure Correction
  • White Balance Correction
  • CLAHE
  • Adaptive Sharpening
  • Denoising
  • Region-aware Enhancement
  • Detection / Segmentation Visualization
  • Difference Heatmap
  • ORB Matching
  • Final Analysis Report

ํ˜„์žฌ ๊ตฌํ˜„์˜ enhancement๋Š” ํ•™์Šต ๊ธฐ๋ฐ˜ ์ƒ์„ฑ ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ ์ „ํ†ต์  ์˜์ƒ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ๋ณด์ • ํŒŒ์ดํ”„๋ผ์ธ์ด๋‹ค. ๋‹ค๋งŒ ๋ชจ๋“  ์ด๋ฏธ์ง€์— ๋™์ผํ•œ ํ•„ํ„ฐ๋ฅผ ๊ธฐ๊ณ„์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๋Œ€์‹ , ํ’ˆ์งˆ ์ง€ํ‘œ์™€ ์žฅ๋ฉด ํ•ด์„ ๊ฒฐ๊ณผ๋ฅผ ํ•จ๊ป˜ ๋ฐ˜์˜ํ•˜์—ฌ ๋ณด์ • ๊ฐ•๋„์™€ ์ ์šฉ ์˜์—ญ์„ ์กฐ์ ˆํ•œ๋‹ค.


3.3 Research Pipeline

Research Pipeline์€ VisionCraft์˜ ์—ฐ๊ตฌ์  ๊ธฐ์—ฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์‹คํ—˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

๋ณธ ์—ฐ๊ตฌ์˜ ํ•ต์‹ฌ ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ •๋ณด(Text Prior)๋Š” Scene Classification ๊ณผ์ •์—์„œ Latent Representation์„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”์‹œํ‚ค๋Š”๊ฐ€?

์ด๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ชจ๋ธ์„ ๋น„๊ตํ•˜์˜€๋‹ค.

Visual-Only Baseline

๊ธฐ๋ณธ์ ์ธ ResNet50 ๊ธฐ๋ฐ˜ Scene Classification ๋ชจ๋ธ์ด๋‹ค.

flowchart TD

A[Input Image]
A --> B[ResNet50 Backbone]
B --> C[Global Visual Representation]
C --> D[Classifier]
D --> E[Scene Prediction]
Loading

Text-Guided Cross-Attention

CLIP ๊ธฐ๋ฐ˜ Text Embedding์„ Latent Space์— ์ฃผ์ž…ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

flowchart TD

A[Input Image] --> B[ResNet50 Backbone]
B --> C[Spatial Visual Tokens]

T[Scene Text Prompts] --> U[CLIP Text Encoder]
U --> V[Fixed Scene Text Embeddings]
V --> W[Projected Text Tokens]

C --> X[Visual-to-Text Cross-Attention]
W --> X

X --> Y[Fused Visual Tokens]
Y --> Z[Mean Pooling + LayerNorm]
Z --> P[Classifier]
P --> Q[Scene Prediction]
Loading

Text-Guided Cross-Attention + InfoNCE

Cross-Attention ๊ตฌ์กฐ์— Contrastive Learning์„ ์ถ”๊ฐ€ํ•œ ๋ชจ๋ธ์ด๋‹ค.

flowchart TD

A[Input Image] --> B[ResNet50 Backbone]
B --> C[Spatial Visual Tokens]

T[Scene Text Prompts] --> U[CLIP Text Encoder]
U --> V[Fixed Scene Text Embeddings]
V --> W[Projected Text Tokens]

C --> X[Visual-to-Text Cross-Attention]
W --> X

X --> Y[Fused Visual Tokens]
Y --> Z[Fused Latent]
Z --> P[Classifier]
P --> Q[Scene Prediction]

W --> R[Class Text Prototypes]
Z -. InfoNCE Alignment Loss .-> R
Loading

ํ˜„์žฌ ๊ตฌํ˜„์—์„œ Cross-Attention์€ visual token์ด class-level text token์„ ์ฐธ์กฐํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ๊ตฌ์กฐ์ด๋ฉฐ, InfoNCE๋Š” attention block ๋‚ด๋ถ€์— ์‚ฝ์ž…๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ fused latent์™€ projected text prototype ์‚ฌ์ด์— ์ถ”๊ฐ€๋˜๋Š” ๋ณด์กฐ ํ•™์Šต loss๋กœ ์ž‘๋™ํ•œ๋‹ค.

๋ณธ ์—ฐ๊ตฌ์—์„œ๋Š” ๋‹จ์ˆœํ•œ Accuracy ๋น„๊ต๋ฅผ ๋„˜์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค.

  • Classification Accuracy
  • Confusion Matrix
  • UMAP Visualization
  • t-SNE Visualization
  • Cosine Similarity Analysis
  • Prototype Alignment Analysis
  • Attention Map Visualization

๊ถ๊ทน์ ์œผ๋กœ Research Pipeline์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ ์—ฌ๋ถ€๋ฟ ์•„๋‹ˆ๋ผ, ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ •๋ณด๊ฐ€ Scene Representation์„ ์–ด๋–ป๊ฒŒ ์žฌ๊ตฌ์„ฑํ•˜๋Š”์ง€๋ฅผ ์ •๋Ÿ‰์ ยท์ •์„ฑ์ ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.


4. Application Pipeline

4.1 Image Quality Analysis

4.1.1 Brightness Analysis

Brightness Analysis๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ ์ „๋ฐ˜์ ์ธ ์กฐ๋„ ์ˆ˜์ค€์„ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๋ฉด์„œ๋„ ํ•ด์„ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๋Ÿ‰ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์€ RGB ์ด๋ฏธ์ง€๋ฅผ grayscale๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค, ์ „์ฒด ํ”ฝ์…€์˜ ํ‰๊ท  intensity๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ด๋ฅผ 0์—์„œ 100 ์‚ฌ์ด์˜ ์ ์ˆ˜๋กœ ์ •๊ทœํ™”ํ•œ๋‹ค.

๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์˜์ƒ $I_{\mathrm{gray}}$์— ๋Œ€ํ•ด ํ‰๊ท  ๋ฐ๊ธฐ $\mu_I$๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.

$$ \mu_I = \frac{1}{HW} \sum_{y=1}^{H} \sum_{x=1}^{W} I_{\mathrm{gray}}(x,y) $$

์—ฌ๊ธฐ์„œ $H, W$๋Š” ์ด๋ฏธ์ง€์˜ ๋†’์ด์™€ ๋„ˆ๋น„์ด๋‹ค. ์ตœ์ข… brightness score๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋œ๋‹ค.

$$ \mathrm{BrightnessScore} = \frac{\mu_I}{255} \times 100 $$

์ด ์ ์ˆ˜๋Š” brightness.py ์—์„œ ์ง์ ‘ ๊ณ„์‚ฐ๋˜๋ฉฐ, ํ›„์† ๋‹จ๊ณ„์—์„œ๋Š” ์ „์—ญ ๋ฐ๊ธฐ ๋ณด์ •๊ณผ gamma correction์˜ ์ ์šฉ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ํ™œ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด brightness score๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ „์—ญ $\beta$ offset์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๊ทน๋‹จ์ ์œผ๋กœ ๋‚ฎ์€ ๊ฒฝ์šฐ์—๋Š” ์ถ”๊ฐ€์ ์ธ gamma correction์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Brightness score๋Š” ๋‹จ์ผ ํ‰๊ท ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— spatially localized underexposure๋ฅผ ์™„์ „ํžˆ ์„ค๋ช…ํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ VisionCraft์—์„œ๋Š” ์ด ์ง€ํ‘œ๋ฅผ blur, contrast, exposure state์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹จ๋… ์ง€ํ‘œ์˜ ํ•œ๊ณ„๋ฅผ ์ผ์ • ๋ถ€๋ถ„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋‹ค.


4.1.2 Contrast Analysis

Contrast Analysis๋Š” ์ด๋ฏธ์ง€์˜ intensity ๋ถ„ํฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋„“๊ฒŒ ํผ์ ธ ์žˆ๋Š”์ง€๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์€ grayscale intensity์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ global contrast๋ฅผ ์ถ”์ •ํ•œ๋‹ค.

๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์˜์ƒ์˜ ํ‰๊ท ์„ $\mu_I$๋ผ๊ณ  ํ•  ๋•Œ intensity ํ‘œ์ค€ํŽธ์ฐจ $\sigma_I$๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

$$ \sigma_I = \sqrt{\frac{1}{HW}\sum_{y=1}^{H}\sum_{x=1}^{W}\left(I_{\mathrm{gray}}(x,y)-\mu_I\right)^2} $$

VisionCraft๋Š” ์ด๋ฅผ ๊ฒฝํ—˜์  ๊ธฐ์ค€๊ฐ’ 64๋กœ ๋‚˜๋ˆ„์–ด 0์—์„œ 100 ์‚ฌ์ด์˜ ์ ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

$$ \mathrm{ContrastScore} = \min\left(\frac{\sigma_I}{64}\times 100,;100\right) $$

์ด ์ˆ˜์‹์€ contrast.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. contrast score๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ „์—ญ brightness/contrast scaling์—์„œ scale factor $\alpha$๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉฐ, ์ดํ›„ CLAHE ๋‹จ๊ณ„์—์„œ๋„ ๊ตญ์†Œ ๋Œ€๋น„ ํšŒ๋ณต์ด ์ˆ˜ํ–‰๋œ๋‹ค.

์ด ๋ฐฉ์‹์€ histogram spread๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์žฅ๋ฉด ๋‚ด๋ถ€์˜ ๊ตญ์†Œ contrast variation๊นŒ์ง€๋Š” ์ถฉ๋ถ„ํžˆ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ VisionCraft๋Š” ์ „์—ญ contrast score๋ฅผ ๋จผ์ € ๊ณ„์‚ฐํ•œ ๋’ค, ๋ณ„๋„์˜ CLAHE๋ฅผ ํ†ตํ•ด local contrast ๋ณด์ •์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.


4.1.3 Blur Analysis

Blur Analysis๋Š” ์ด๋ฏธ์ง€์˜ ๊ฒฝ๊ณ„ ์ •๋ณด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚ ์นด๋กญ๊ฒŒ ์œ ์ง€๋˜๋Š”์ง€๋ฅผ ์ถ”์ •ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์€ Laplacian variance๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์ฃผํŒŒ edge ์„ฑ๋ถ„์˜ ๊ฐ•๋„๋ฅผ ์ˆ˜์น˜ํ™”ํ•œ๋‹ค.

๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์˜์ƒ $I_{\mathrm{gray}}$์— ๋Œ€ํ•ด Laplacian ์‘๋‹ต์„ $\Delta I$๋ผ๊ณ  ํ•˜๋ฉด, blur ์ธก์ •๊ฐ’์€

$$ \mathrm{Var}_{\Delta} = \mathrm{Var}\left(\Delta I_{\mathrm{gray}}\right) $$

๋กœ ์ •์˜๋œ๋‹ค. VisionCraft๋Š” ์ด ๊ฐ’์„ ๊ฒฝํ—˜์  ๊ธฐ์ค€๊ฐ’ 500์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ์ˆ˜ํ™”ํ•œ๋‹ค.

$$ \mathrm{BlurScore} = \min\left(\frac{\mathrm{Var}_{\Delta}}{500}\times 100,;100\right) $$

ํ•ด๋‹น ์ˆ˜์‹์€ blur.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ score๊ฐ€ ๋†’๋‹ค๋Š” ๊ฒƒ์€ edge energy๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ๋œป์ด๋ฉฐ, score๊ฐ€ ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์€ image๊ฐ€ ํ๋ฆฌ๊ฑฐ๋‚˜ defocus/low-pass degradation์˜ ์˜ํ–ฅ์„ ๋ฐ›์•˜์„ ๊ฐ€๋Šฅ์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด blur score๋Š” ์ดํ›„ adaptive sharpening ๊ฐ•๋„ ์กฐ์ ˆ์˜ ํ•ต์‹ฌ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด blur score๊ฐ€ 30 ๋ฏธ๋งŒ์ด๋ฉด ๋น„๊ต์  ๊ฐ•ํ•œ sharpening์ด ์ ์šฉ๋˜๊ณ , 60 ์ด์ƒ์ด๋ฉด sharpening์„ ์ƒ๋žตํ•œ๋‹ค. ๋˜ํ•œ ์ธ๋ฌผ ์žฅ๋ฉด์ด๋‚˜ indoor scene์—์„œ๋Š” sharpening ๊ฐ•๋„๋ฅผ ๋ณ„๋„๋กœ ๋‚ฎ์ถฐ ๊ณผ๋„ํ•œ edge enhancement๋ฅผ ์–ต์ œํ•œ๋‹ค.


4.1.4 Edge Density Analysis

Edge Density Analysis๋Š” ์ด๋ฏธ์ง€ ์ „์ฒด์—์„œ ๊ตฌ์กฐ์  ๊ฒฝ๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ์ถ”์ •ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์€ Canny edge detector๋ฅผ ์ ์šฉํ•œ ๋’ค, edge pixel์˜ ๋น„์œจ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๋จผ์ € grayscale ์˜์ƒ์— ๋Œ€ํ•ด Canny edge map $E(x,y)$๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

$$ E(x,y) \in {0,1} $$

๊ทธ ๋‹ค์Œ ์ „์ฒด edge density๋Š”

$$ \mathrm{EdgeDensity} = \frac{1}{HW}\sum_{y=1}^{H}\sum_{x=1}^{W} E(x,y) $$

๋กœ ์ •์˜๋˜๋ฉฐ, ์ตœ์ข… ์ ์ˆ˜๋Š”

$$ \mathrm{EdgeDensityScore} = \mathrm{EdgeDensity}\times 100 $$

์ด๋‹ค. ํ•ด๋‹น ๋กœ์ง์€ edge_density.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

Edge density๋Š” blur์™€ ์œ ์‚ฌํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ญํ• ์ด ๋‹ค๋ฅด๋‹ค. blur score๋Š” edge sharpness๋ฅผ ์ธก์ •ํ•˜๊ณ , edge density๋Š” ์žฅ๋ฉด์˜ ๊ตฌ์กฐ์  ๋ณต์žก๋„์™€ ๊ณ ๋นˆ๋„ ๊ฒฝ๊ณ„์˜ ์–‘์„ ์ธก์ •ํ•œ๋‹ค. VisionCraft์—์„œ๋Š” edge density๊ฐ€ ๋งค์šฐ ๋‚ฎ์„ ๊ฒฝ์šฐ bilateral filtering์„ ์„ ํƒํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ๋ณด์กดํ•˜๋ฉด์„œ ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ด๊ณ , ์ €์กฐ๋„์ด๋ฉด์„œ blur๊ฐ€ ํฐ ๊ฒฝ์šฐ์—๋Š” median filtering์„ ์ ์šฉํ•˜๋Š” ๋“ฑ denoising policy๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.


4.1.5 Color Balance Analysis

Color Balance Analysis๋Š” ์ด๋ฏธ์ง€๊ฐ€ ํŠน์ • ์ฑ„๋„ ๋ฐฉํ–ฅ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ์น˜์šฐ์ณ ์žˆ๋Š”์ง€๋ฅผ ์ถ”์ •ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์€ Gray-World assumption์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฑ„๋„ ํ‰๊ท ๊ณผ ์ „์ฒด ํ‰๊ท ์˜ ์ฐจ์ด๋ฅผ ์ธก์ •ํ•œ๋‹ค.

RGB ์ฑ„๋„ ํ‰๊ท ์„ ๊ฐ๊ฐ $\mu_R, \mu_G, \mu_B$๋ผ๊ณ  ํ•˜๊ณ , ์ „์ฒด ํ‰๊ท ์„

$$ \mu_{\mathrm{all}} = \frac{\mu_R + \mu_G + \mu_B}{3} $$

๋ผ๊ณ  ๋‘๋ฉด, ์ฑ„๋„๋ณ„ white balance scale์€

$$ s_c = \frac{\mu_{\mathrm{all}}}{\mu_c}, \quad c \in {R,G,B} $$

๋กœ ์ •์˜๋œ๋‹ค. ์ด๋Š” color_balance.py ์—์„œ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ดํ›„ traditional enhancement์˜ white balance ๋‹จ๊ณ„์—์„œ๋„ ๋™์ผํ•œ ์ฒ ํ•™์ด ์‚ฌ์šฉ๋œ๋‹ค.

๋˜ํ•œ color cast์˜ ๊ฐ•๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”์ •ํ•œ๋‹ค.

$$ \mathrm{Imbalance} = \frac{\max\left(|\mu_R-\mu_{\mathrm{all}}|,;|\mu_G-\mu_{\mathrm{all}}|,;|\mu_B-\mu_{\mathrm{all}}|\right)}{\mu_{\mathrm{all}}} $$

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ ์ˆ˜ํ™”ํ•˜์—ฌ

$$ \mathrm{ColorCastScore} = \min(100,;220 \times \mathrm{Imbalance}) $$

๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ ์ˆ˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ mild, moderate, strong ์ˆ˜์ค€์˜ white-balance shift๊ฐ€ ๊ฒฐ์ •๋˜๋ฉฐ, ์–ด๋А ์ฑ„๋„์ด high ๋˜๋Š” low ๋ฐฉํ–ฅ์œผ๋กœ ์น˜์šฐ์ณค๋Š”์ง€๋„ ํ•จ๊ป˜ ๊ธฐ๋ก๋œ๋‹ค.

์ด ๋ถ„์„์€ ๋‹จ์ˆœํ•œ ๋ฏธํ•™์  ์ƒ‰์ƒ ํ‰๊ฐ€๋ฅผ ๋„˜์–ด, ์ „์—ญ white balance ๋ณด์ •์˜ ํ•„์š”์„ฑ๊ณผ ์ฑ„๋„๋ณ„ ๋ณด์ • ๊ฐ•๋„๋ฅผ ์ •ํ•˜๋Š” ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


4.1.6 Exposure and Dynamic Range Analysis

Exposure Analysis๋Š” ๋‹จ์ˆœ ํ‰๊ท  ๋ฐ๊ธฐ๋ณด๋‹ค ๋” ํ’๋ถ€ํ•œ photometric ์ƒํƒœ๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด shadow ratio, highlight ratio, ๊ทธ๋ฆฌ๊ณ  percentile-based dynamic range๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค. ๊ตฌํ˜„์€ exposure.py ์— ์žˆ๋‹ค.

๋จผ์ € shadow ratio์™€ highlight ratio๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.

$$ \mathrm{ShadowRatio} = \frac{1}{HW}\sum_{x,y}\mathbf{1}[I_{\mathrm{gray}}(x,y)\le 45] $$

$$ \mathrm{HighlightRatio} = \frac{1}{HW}\sum_{x,y}\mathbf{1}[I_{\mathrm{gray}}(x,y)\ge 225] $$

๋˜ํ•œ intensity distribution์˜ 5th percentile๊ณผ 95th percentile์„ ๊ฐ๊ฐ $p_5, p_{95}$๋ผ๊ณ  ํ•  ๋•Œ dynamic range๋Š”

$$ \mathrm{DynamicRange} = p_{95} - p_5 $$

๋กœ ์ •์˜๋œ๋‹ค. ์ด๋ฅผ ์ ์ˆ˜๋กœ ์ •๊ทœํ™”ํ•˜๋ฉด

$$ \mathrm{DynamicRangeScore} = \min\left(\frac{\mathrm{DynamicRange}}{180}\times 100,;100\right) $$

๊ฐ€ ๋œ๋‹ค.

์ดํ›„ exposure state๋Š” rule-based๋กœ ๊ฒฐ์ •๋œ๋‹ค.

  • $\mathrm{ShadowRatio} > 0.32$ ์ด๊ณ  $p_{95} < 190$ ์ด๋ฉด underexposed
  • $\mathrm{HighlightRatio} > 0.18$ ์ด๊ณ  $p_5 > 40$ ์ด๋ฉด overexposed
  • $\mathrm{DynamicRange} < 85$ ์ด๋ฉด low_dynamic_range
  • ๊ทธ ์™ธ์—๋Š” balanced

์ด ์„ค๊ณ„๋Š” ๋‹จ์ˆœ ํ‰๊ท  ๋ฐ๊ธฐ๋งŒ์œผ๋กœ๋Š” ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์šด underexposed image์™€ low-dynamic-range image๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด brightness๊ฐ€ ์ค‘๊ฐ„ ์ˆ˜์ค€์ด์–ด๋„ dynamic range๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ข์œผ๋ฉด contrast flattening์ด๋‚˜ haze-like degradation์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ๋‹ค.


4.2 Scene Understanding

4.2.1 Scene Classification

Scene Classification์€ ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ high-level semantic identity๋ฅผ ์ถ”์ •ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ํ˜„์žฌ ์•ฑ์—์„œ๋Š” scene_classifier.py ๊ฐ€ ๊ธฐ๋ณธ ์ถ”๋ก  ์ง„์ž…์ ์ด๋ฉฐ, ๊ธฐ๋ณธ ์ฒดํฌํฌ์ธํŠธ๋Š” scene_classifier_resnet50_v11_text_crossattn_infonce_A.pt ์ด๋‹ค.

์ถ”๋ก  ์‹œ ์ด๋ฏธ์ง€๋Š” ํ•™์Šต ์‹œ ์‚ฌ์šฉํ•œ transform์„ ๊ฑฐ์ณ backbone์œผ๋กœ ์ž…๋ ฅ๋˜๋ฉฐ, ์ตœ์ข… logits $\mathbf{z}$์— ๋Œ€ํ•ด softmax๋ฅผ ์ ์šฉํ•˜์—ฌ ํด๋ž˜์Šค ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

$$ p(y=k\mid x) = \frac{\exp(z_k)}{\sum_j \exp(z_j)} $$

์ตœ์ข… ์˜ˆ์ธก ๋ผ๋ฒจ์€

$$ \hat{y} = \arg\max_k p(y=k\mid x) $$

๋กœ ๊ฒฐ์ •๋œ๋‹ค. ์•ฑ์€ top-3 ํ›„๋ณด์™€ confidence๋„ ํ•จ๊ป˜ ์ €์žฅํ•˜์—ฌ, ๋‹จ์ผ hard label๋งŒ์ด ์•„๋‹ˆ๋ผ prediction uncertainty๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

ํ˜„์žฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์—์„œ scene classifier์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์žฅ๋ฉด์˜ high-level identity ์ถ”์ •
  • quality summary์™€ feedback์— semantic context ์ œ๊ณต
  • scene-aware enhancement policy ์„ ํƒ์— ์ง์ ‘ ์‚ฌ์šฉ
  • ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ attention ๋ฐ latent ํ•ด์„์„ ์œ„ํ•œ semantic anchor ์ œ๊ณต

๋‹ค๋งŒ crop recommendation์ด๋‚˜ ๋ชจ๋“  ํ›„์† rule์ด scene label์—๋งŒ ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” detection, segmentation, low-level quality score๊ฐ€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, scene label์€ indoor-natural, landscape-natural, urban-balanced์™€ ๊ฐ™์€ ๋ณด์ • policy๋ฅผ ์„ ํƒํ•˜๋Š” high-level context๋กœ ์ž‘๋™ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ VisionCraft์˜ application pipeline์€ scene identity๋ฅผ ๋‹จ์ˆœ ๋ฆฌํฌํŠธ ํ•ญ๋ชฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ตœ์ข… enhancement ๊ฐ•๋„์™€ ์›๋ณธ ๋ณด์กด ๋น„์œจ์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐ ์ง์ ‘ ๋ฐ˜์˜ํ•œ๋‹ค.

๋˜ํ•œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด heuristic fallback๋„ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์ด fallback์€ HSV์™€ grayscale ํ†ต๊ณ„์—์„œ blue ratio, green ratio, brightness๋ฅผ ๊ณ„์‚ฐํ•ด nature, indoor, urban/outdoor ๊ฐ™์€ coarse category๋ฅผ ์ถ”์ •ํ•œ๋‹ค. ์ฆ‰ ์•ฑ์€ learned model์ด unavailableํ•ด๋„ ์™„์ „ํžˆ ์‹คํŒจํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.


4.2.2 Object Detection

Object Detection์€ object_detector.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ultralytics์˜ YOLOv8n์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ถ”๋ก  ์‹œ confidence threshold๋Š” 0.35๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

๊ฐ detection์€ bounding box

$$ b_i = (x_1, y_1, x_2, y_2) $$

์™€ confidence $c_i$, class label $\ell_i$๋ฅผ ๊ฐ€์ง„๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ VisionCraft๋Š” ๊ฐ ๋ฐ•์Šค์— ๋Œ€ํ•ด area ratio์™€ rule-of-thirds distance๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

๊ฐ์ฒด ์ค‘์‹ฌ์„

$$ (c_x, c_y) = \left(\frac{x_1+x_2}{2},; \frac{y_1+y_2}{2}\right) $$

๋ผ๊ณ  ํ•˜๋ฉด, area ratio๋Š”

$$ \mathrm{AreaRatio}_i = \frac{(x_2-x_1)(y_2-y_1)}{HW} $$

์ด๋‹ค. ๋˜ํ•œ rule-of-thirds ๊ธฐ์ค€์  ์ง‘ํ•ฉ

$$ \mathcal{T} = { (\tfrac{W}{3}, \tfrac{H}{3}), (\tfrac{2W}{3}, \tfrac{H}{3}), (\tfrac{W}{3}, \tfrac{2H}{3}), (\tfrac{2W}{3}, \tfrac{2H}{3}) } $$

์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ธฐ์ค€์ ๊ณผ์˜ ์ •๊ทœํ™” ๊ฑฐ๋ฆฌ๋ฅผ

$$ \mathrm{ThirdsDistance}_i = \min_{(t_x,t_y)\in\mathcal{T}} \frac{\sqrt{(c_x-t_x)^2 + (c_y-t_y)^2}}{\max(W,H)} $$

๋กœ ์ •์˜ํ•œ๋‹ค.

์ด ๊ฐ’๋“ค์€ ๋‹จ์ˆœ ์‹œ๊ฐํ™”์šฉ์ด ์•„๋‹ˆ๋ผ crop suggestion์—์„œ ํ•ต์‹ฌ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ์ฒด๊ฐ€ thirds point์—์„œ ๋ฉ€์ˆ˜๋ก ๋” ๊ฐ•ํ•œ ํฌ๋กญ์ด ์ œ์•ˆ๋˜๋ฉฐ, main object์˜ area ratio์™€ bbox ํฌ๊ธฐ ์—ญ์‹œ crop box ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋œ๋‹ค.

๋”ฐ๋ผ์„œ object detection์€ ๋‹จ์ˆœํžˆ "๋ฌด์—‡์ด ์žˆ๋Š”๊ฐ€"๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ๋„˜์–ด, composition analysis์™€ subject-centric framing์„ ์œ„ํ•œ ์ •๋Ÿ‰ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


4.2.3 Semantic Segmentation

Semantic Segmentation์€ segmenter.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, nvidia/segformer-b0-finetuned-ade-512-512 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋ธ ์ถœ๋ ฅ์€ ๊ฐ ํ”ฝ์…€์˜ semantic class ID map์ด๋ฉฐ, VisionCraft๋Š” ์ด๋ฅผ ์›๋ณธ ํ•ด์ƒ๋„์— ๋งž๊ฒŒ post-processํ•œ๋‹ค.

ํ”ฝ์…€ ๋‹จ์œ„ semantic prediction map์„ $S(x,y)$๋ผ๊ณ  ํ•˜๋ฉด, ํด๋ž˜์Šค $k$์— ๋Œ€ํ•œ mask๋Š”

$$ M_k(x,y) = \mathbf{1}[S(x,y)=k] $$

๋กœ ์ •์˜๋œ๋‹ค. ๊ฐ ํด๋ž˜์Šค์˜ pixel ratio๋Š”

$$ \mathrm{Ratio}_k = \frac{1}{HW}\sum_{x,y} M_k(x,y) $$

์ด๋ฉฐ, ์ด๋ฅผ ๋ฐฑ๋ถ„์œจ๋กœ ๋ณ€ํ™˜ํ•ด top semantic component๋ฅผ ์š”์•ฝํ•œ๋‹ค.

VisionCraft๋Š” segmentation ๊ฒฐ๊ณผ์—์„œ ํŠนํžˆ ๋‹ค์Œ ์„ธ ์ข…๋ฅ˜์˜ ์˜์—ญ์„ ์ค‘์š”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

  • person_mask
  • sky_mask
  • background_mask

์—ฌ๊ธฐ์„œ background mask๋Š”

$$ M_{\mathrm{bg}} = \neg(M_{\mathrm{person}} \lor M_{\mathrm{sky}}) $$

๋กœ ์ •์˜๋œ๋‹ค. ๋งŒ์•ฝ SegFormer๊ฐ€ person class๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•˜๋ฉด, YOLO detection box๋ฅผ ์ด์šฉํ•ด person mask๋ฅผ fallback์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋Š” ์•ฑ ์ˆ˜์ค€์—์„œ ์ธ๋ฌผ ์ค‘์‹ฌ ์ด๋ฏธ์ง€๋ฅผ ์™„์ „ํžˆ ๋†“์น˜์ง€ ์•Š๊ธฐ ์œ„ํ•œ pragmatic design์ด๋‹ค.

์ด segmentation ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ›„์† ๋‹จ๊ณ„์— ์‚ฌ์šฉ๋œ๋‹ค.

  • segmentation-based crop fallback
  • sky/person/background region-aware enhancement
  • semantic overlay visualization
  • scene composition summary

์ฆ‰ segmentation์€ ๋‹จ์ˆœ scene parsing ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ์„œ ๋๋‚˜์ง€ ์•Š๊ณ , ์‹ค์ œ enhancement์™€ visualization ๋ชจ๋‘์— ์ง์ ‘ ์—ฐ๊ฒฐ๋œ๋‹ค.


4.3 Image Enhancement

4.3.1 Auto Straighten

Auto Straighten์€ ํ˜„์žฌ tilt_correction.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ’๊ฒฝ/์‹ค๋‚ด/๊ฑด์ถ• ์žฅ๋ฉด์—์„œ ์ˆ˜ํ‰์„  ๋˜๋Š” ์ˆ˜์ง์„  ๊ธฐ๋ฐ˜์˜ ์ „์—ญ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž๋™์œผ๋กœ ์ถ”์ •ํ•œ๋‹ค.

๋จผ์ € grayscale image์— Canny edge detector๋ฅผ ์ ์šฉํ•œ ๋’ค, probabilistic Hough transform์œผ๋กœ ์„ ๋ถ„ ์ง‘ํ•ฉ์„ ์ถ”์ถœํ•œ๋‹ค. ๊ฐ ์„ ๋ถ„ $i$์˜ ์–‘ ๋์ ์„ $(x_1,y_1), (x_2,y_2)$๋ผ๊ณ  ํ•  ๋•Œ, ์ˆ˜ํ‰ ๊ธฐ์ค€ angle์€

$$ \theta_i = \mathrm{atan2}(y_2-y_1,; x_2-x_1) $$

์˜ degree ํ‘œํ˜„์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค. near-horizontal line์€ ๊ทธ๋Œ€๋กœ candidate๋กœ ์‚ฌ์šฉํ•˜๊ณ , near-vertical line์€ equivalent tilt๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋™์ผํ•œ correction space์—์„œ ๋‹ค๋ฃฌ๋‹ค.

๊ฐ ์„ ๋ถ„์˜ ๊ธธ์ด

$$ w_i = \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2} $$

๋ฅผ weight๋กœ ์‚ฌ์šฉํ•˜์—ฌ, ์ตœ์ข… ๋Œ€ํ‘œ ๊ธฐ์šธ๊ธฐ๋Š” weighted median์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

$$ \theta^{*} = \mathrm{WeightedMedian}({\theta_i}, {w_i}) $$

๋˜ํ•œ line angle๋“ค์˜ weighted median deviation์ด ์ผ์ • threshold๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜, ์ถ”์ • ๊ฐ๋„์˜ ์ ˆ๋Œ“๊ฐ’์ด ๊ณผ๋„ํ•˜๊ฒŒ ํฌ๋ฉด ์ž๋™ ๋ณด์ •์„ ๊ฑด๋„ˆ๋›ด๋‹ค. ์ฆ‰ VisionCraft๋Š” ํ•ญ์ƒ ๊ฐ•์ œ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„ ๋ถ„๋“ค์˜ ํ•ฉ์˜๊ฐ€ ์ถฉ๋ถ„ํ•  ๋•Œ๋งŒ correction preview๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ํšŒ์ „์€ OpenCV์˜ affine rotation์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ, ํšŒ์ „ ํ›„ ์ƒ๊ธฐ๋Š” invalid border๋Š” largest valid rectangle์„ ์ฐพ์•„ ๋‹ค์‹œ cropํ•œ ๋’ค ์›๋ณธ ํ•ด์ƒ๋„๋กœ resizeํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณธ ๋ชจ๋“ˆ์€ ๋‹จ์ˆœ ํšŒ์ „๋ฟ ์•„๋‹ˆ๋ผ ํšŒ์ „ ์ดํ›„ ์ƒ๊ธฐ๋Š” black border artifact๊นŒ์ง€ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•œ๋‹ค.


4.3.2 Crop Suggestion

Crop Suggestion์€ crop_suggestion.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ scene label์— ์ง์ ‘ ์˜์กดํ•˜์ง€ ์•Š๊ณ , ์šฐ์„ ์ ์œผ๋กœ object detection ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, detection์ด ์—†์„ ๊ฒฝ์šฐ segmentation ๊ฒฐ๊ณผ๋กœ fallbackํ•œ๋‹ค.

Detection ๊ธฐ๋ฐ˜ crop์˜ ๊ฒฝ์šฐ, main object๋Š” ๊ฐ€์žฅ ํฐ area ratio๋ฅผ ๊ฐ€์ง„ detection์œผ๋กœ ์„ ํƒ๋œ๋‹ค. ๊ทธ ๊ฐ์ฒด ์ค‘์‹ฌ $(c_x,c_y)$์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด rule-of-thirds point $(t_x,t_y)$๋ฅผ ์ฐพ์€ ๋’ค, crop box์˜ ์ค‘์‹ฌ์„ ํ•ด๋‹น thirds point์— ๋งž์ถ”๋„๋ก ์ด๋™์‹œํ‚จ๋‹ค.

๊ฐ์ฒด์˜ bbox ํฌ๊ธฐ๋ฅผ $(w_o, h_o)$๋ผ๊ณ  ํ•  ๋•Œ ์ตœ์†Œ crop ํฌ๊ธฐ๋Š” ๊ฒฝํ—˜์ ์œผ๋กœ

$$ W_{\mathrm{crop}} \ge 1.9, w_o,\qquad H_{\mathrm{crop}} \ge 1.9, h_o $$

๊ฐ€ ๋˜๋„๋ก ์„ค์ •๋œ๋‹ค. ๋˜ํ•œ ๊ฐ์ฒด๊ฐ€ thirds point์—์„œ ๋ฉ€์ˆ˜๋ก ๋” ๊ฐ•ํ•œ crop scale์„ ์ ์šฉํ•œ๋‹ค.

Segmentation fallback์˜ ๊ฒฝ์šฐ์—๋Š” sky, water, mountain, tree, road, building ๋“ฑ ์šฐ์„  label์„ ํ•ฉ์ณ ํ•˜๋‚˜์˜ merged mask๋ฅผ ๋งŒ๋“  ๋’ค, ๊ทธ bounding region์„ ์ค‘์‹ฌ์œผ๋กœ ์žฅ๋ฉด crop์„ ์ƒ์„ฑํ•œ๋‹ค.

์ฆ‰ crop suggestion์€ aesthetic cropping์„ ์œ„ํ•œ ์™„์ „ํ•œ ์ƒ์„ฑ ๋ชจ๋“ˆ์ด ์•„๋‹ˆ๋ผ, ๊ฐ์ฒด ๋˜๋Š” semantic region์„ ๋” ์•ˆ์ •์ ์ธ ๊ตฌ๋„์— ์œ„์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•œ heuristic framing module์— ๊ฐ€๊น๋‹ค.


4.3.3 OCR and Perspective Rectification

OCR and Perspective Rectification์€ document_text.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฌธ์„œํ˜• ์ด๋ฏธ์ง€์—์„œ ์ •๋ฉด ๋ณด์ •๊ณผ ํ…์ŠคํŠธ ์ถ”์ถœ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Perspective rectification์€ ๋ฌธ์„œ ์˜์—ญ์— ํ•ด๋‹นํ•˜๋Š” ์‚ฌ๊ฐํ˜• contour๋ฅผ ์ž๋™ ๊ฒ€์ถœํ•˜๋Š” ๊ฒฝ๋กœ์™€, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ 4๊ฐœ์˜ ๊ผญ์ง“์ ์„ ์ง€์ •ํ•˜๋Š” ์ˆ˜๋™ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ ํฌํ•จํ•œ๋‹ค. ๋‹ค๋งŒ ํ˜„์žฌ Gradio application์˜ OCR workflow์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Manual 4-Point Rectification ํƒญ์—์„œ ๋„ค ๊ผญ์ง“์ ์„ ์ง€์ •ํ•œ ๋’ค, ๊ทธ rectified image๋ฅผ OCR ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•œ๋‹ค. ๋„ค ์ ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ homography ๊ธฐ๋ฐ˜ ์‚ฌ์˜ ๋ณ€ํ™˜์€

$$ \mathbf{x}' \sim H\mathbf{x} $$

๋กœ ํ‘œํ˜„๋˜๋ฉฐ, OpenCV์˜ getPerspectiveTransform๊ณผ warpPerspective๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ฉด ๋ณด์ •๋œ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

์ž๋™ ๊ฒ€์ถœ ๊ฒฝ๋กœ์—์„œ๋Š” edge map, adaptive threshold, contour approximation์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ๊ทธ๋Ÿด๋“ฏํ•œ quadrilateral์„ ์ฐพ๋Š”๋‹ค. ๊ฐ ํ›„๋ณด ์‚ฌ๊ฐํ˜•์€ area, ๋ณ€ ๊ธธ์ด ๊ท ํ˜•, border proximity, center distance๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•œ ์ ์ˆ˜๋กœ ํ‰๊ฐ€๋œ๋‹ค.

OCR ์ž์ฒด๋Š” ํ•˜๋‚˜์˜ ์—”์ง„์— ๊ณ ์ •๋˜์ง€ ์•Š๋Š”๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. OpenAI multimodal OCR ๊ฒฝ๋กœ
  2. PaddleOCR
  3. EasyOCR
  4. Tesseract

๋‹จ, OPENAI_API_KEY๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” OpenAI multimodal ๊ฒฝ๋กœ๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ๊ฒฝ๋กœ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹คํŒจ ์‚ฌ์œ ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋Š” OpenAI OCR์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•œ ์ƒํ™ฉ์—์„œ ์กฐ์šฉํžˆ ์•ฝํ•œ local OCR ๊ฒฐ๊ณผ๋กœ degrade๋˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ด๋‹ค. OPENAI_API_KEY๊ฐ€ ์—†์„ ๋•Œ๋Š” PaddleOCR, EasyOCR, Tesseract ์ˆœ์œผ๋กœ local OCR fallback์ด ์‹œ๋„๋œ๋‹ค.

๋˜ํ•œ OCR ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด grayscale, denoised, adaptive threshold, Otsu threshold, upscaled image ๋“ฑ ์—ฌ๋Ÿฌ ์ „์ฒ˜๋ฆฌ variant๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ€์žฅ ์•ˆ์ •์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ฆ‰ VisionCraft์˜ OCR ๋ชจ๋“ˆ์€ ๋‹จ์ˆœ ํ…์ŠคํŠธ ์ถ”์ถœ๋ณด๋‹ค๋Š” manual rectification + preprocessing + optional multimodal OCR/local fallback์„ ๊ฒฐํ•ฉํ•œ robust document reading pipeline์— ๊ฐ€๊น๋‹ค.


4.3.4 Traditional Enhancement

Traditional Enhancement๋Š” traditional_enhance.py ์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ diffusion์ด๋‚˜ GAN ๊ธฐ๋ฐ˜ ๋ณด์ •์ด ์•„๋‹ˆ๋ผ, ํ’ˆ์งˆ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ classical image processing operator์˜ ์ ์šฉ ๊ฐ•๋„์™€ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•˜๋Š” heuristic enhancement pipeline์ด๋‹ค.

์ „์ฒด ์ˆœ์„œ๋Š” ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. White Balance
  2. Brightness / Contrast Scaling
  3. Gamma Correction
  4. CLAHE
  5. Adaptive Sharpening
  6. Adaptive Denoising
  7. Region-aware Adjustment

์ตœ๊ทผ ๊ตฌํ˜„์—์„œ๋Š” ์ด ๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ ์œ„์— scene classifier ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” scene-aware enhancement policy๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ์ฆ‰ ๋ชจ๋“  ์žฅ๋ฉด์— ๋™์ผํ•œ ๋ณด์ • ๊ฐ•๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š๊ณ , scene, main_subject, ocr_status, segmentation mask๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์—ฐ์‚ฐ์˜ ๊ฐ•๋„์™€ ์›๋ณธ blending ๋น„์œจ์„ ์กฐ์ ˆํ•œ๋‹ค. ์ด๋Š” ์žฅ๋ฉด๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ์  ํ’ˆ์งˆ ์š”๊ตฌ๋ฅผ ๋ฐ˜์˜ํ•˜๋ฉด์„œ๋„, ๊ณผ๋„ํ•œ ์ƒ‰ ๋ณ€ํ™”๋‚˜ HDR-like artifact๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ณด์ˆ˜์  ์„ค๊ณ„์ด๋‹ค.

ํ˜„์žฌ ์ ์šฉ๋˜๋Š” ์ฃผ์š” policy๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • indoor-natural: bedroom, restaurant_cafe, kitchen_dining, office_study ์žฅ๋ฉด์— ์ ์šฉ๋œ๋‹ค. ์‹ค๋‚ด ์กฐ๋ช…๊ณผ ๋”ฐ๋œปํ•œ ์ƒ‰๊ฐ์„ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด white balance, CLAHE, sharpening ๊ฐ•๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์›๋ณธ blending์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • landscape-natural: waterfront, mountain_valley, forest_nature, open_field_landscape ์žฅ๋ฉด์— ์ ์šฉ๋œ๋‹ค. ํ•˜๋Š˜ ์˜์—ญ์€ ์›๋ณธ ์ƒ‰์„ ๊ฐ•ํ•˜๊ฒŒ ๋ณด์กดํ•˜๊ณ , ์‹์ƒ ์˜์—ญ์€ ์›๋ณธ ์ดˆ๋ก ์ฑ„๋„์™€ ์ƒ‰๊ฐ์„ ์ผ๋ถ€ ๋ณต์›ํ•˜์—ฌ ๋ณด์ • ํ›„ ์ƒ‰์ด ์ฃฝ๋Š” ํ˜„์ƒ์„ ์ค„์ธ๋‹ค.
  • urban-balanced: street_downtown, transportation_hub_road, residential_outdoor ์žฅ๋ฉด์— ์ ์šฉ๋œ๋‹ค. ๋„์‹ฌ ์ด๋ฏธ์ง€์˜ ๊ฐ„ํŒ ์ƒ‰, wet street reflection, ๊ฑด๋ฌผ ๋ช…์•”์„ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด brightness/gamma/CLAHE๋ฅผ ์•ฝํ•˜๊ฒŒ ์ ์šฉํ•˜๊ณ  ์ตœ์ข… ์›๋ณธ blending์„ ๋†’์ธ๋‹ค.
  • structure-preserving: corridor_lobby, public_large_indoor, industrial_area ์žฅ๋ฉด์— ์ ์šฉ๋œ๋‹ค. ๊ฑด๋ฌผ, ์‹ค๋‚ด ๊ตฌ์กฐ, ์ง์„  edge๊ฐ€ ๊ณผํ•˜๊ฒŒ ๋ญ‰๊ฐœ์ง€์ง€ ์•Š๋„๋ก ์ค‘๊ฐ„ ๊ฐ•๋„์˜ contrast restoration๊ณผ sharpening์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • person-safe: main subject๊ฐ€ person์œผ๋กœ ๊ฐ์ง€๋  ๊ฒฝ์šฐ ์ถ”๊ฐ€๋กœ ์ ์šฉ๋œ๋‹ค. ์ธ๋ฌผ ์˜์—ญ์€ ์›๋ณธ๊ณผ ๋” ๋งŽ์ด ํ˜ผํ•ฉํ•˜์—ฌ ํ”ผ๋ถ€ํ†ค๊ณผ ์–ผ๊ตด texture๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
  • document-readable: OCR์ด ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ๋‚ฎ์€ ์‹ ๋ขฐ๋„๋กœ ํ…์ŠคํŠธ ํ›„๋ณด๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ์ ์šฉ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ž์—ฐ์Šค๋Ÿฌ์šด ์‚ฌ์ง„ ์ƒ‰๊ฐ๋ณด๋‹ค ํ…์ŠคํŠธ ๊ฐ€๋…์„ฑ์„ ์šฐ์„ ํ•˜์—ฌ contrast์™€ local detail์„ ์กฐ๊ธˆ ๋” ๋ณด์กดํ•œ๋‹ค.

๋จผ์ € white balance๋Š” Gray-World assumption์„ ์ด์šฉํ•œ๋‹ค. ์ฑ„๋„ ํ‰๊ท ์„ $\mu_R,\mu_G,\mu_B$๋ผ ํ•˜๋ฉด, ๊ฐ ์ฑ„๋„ scale์€

$$ s_c = \frac{\mu_{\mathrm{all}}}{\mu_c} $$

์ด๊ณ , ๋ณด์ • ํ›„ ํ”ฝ์…€์€

$$ I'_c(x,y) = \mathrm{clip}(s_c \cdot I_c(x,y), 0, 255) $$

๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

๊ทธ ๋‹ค์Œ ์ „์—ญ ๋ฐ๊ธฐ/๋Œ€๋น„ ๋ณด์ •์€ OpenCV์˜ ์„ ํ˜• intensity transform

$$ I'' = \alpha I' + \beta $$

๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ $\alpha$์™€ $\beta$๋Š” brightness score์™€ contrast score์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. contrast๊ฐ€ ๋‚ฎ์œผ๋ฉด $\alpha$๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , brightness๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ๊ฑฐ๋‚˜ ๋†’์œผ๋ฉด $\beta$๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

Gamma correction์€ brightness๊ฐ€ ๊ทน๋‹จ์ ์œผ๋กœ ๋‚ฎ๊ฑฐ๋‚˜ ๋†’์„ ๋•Œ๋งŒ ์ ์šฉ๋œ๋‹ค.

$$ I_{\gamma}(x,y) = 255\left(\frac{I''(x,y)}{255}\right)^\gamma $$

์ €์กฐ๋„์—์„œ๋Š” $\gamma < 1$, ๊ณผ๋„ํ•œ ๋ฐ๊ธฐ์—์„œ๋Š” $\gamma > 1$์„ ์‚ฌ์šฉํ•œ๋‹ค.

CLAHE๋Š” LAB color space์—์„œ $L$ channel์—๋งŒ ์ ์šฉ๋œ๋‹ค. ์ด๋Š” ์ƒ‰์ƒ ์ฑ„๋„์„ ์ง์ ‘ ์™œ๊ณกํ•˜์ง€ ์•Š๊ณ  local luminance contrast๋ฅผ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ด๋‹ค. ์ดํ›„ blur score์— ๋”ฐ๋ผ unsharp-mask ํ˜•ํƒœ์˜ adaptive sharpening์ด ์ ์šฉ๋œ๋‹ค.

$$ I_{\mathrm{sharp}} = (1+s)I - s,G_\sigma(I) $$

์—ฌ๊ธฐ์„œ $s$๋Š” blur score์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” sharpening strength์ด๋ฉฐ, person ์žฅ๋ฉด์ด๋‚˜ indoor scene์—์„œ๋Š” ๊ณผ๋„ํ•œ sharpening์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„๋กœ ์ถ•์†Œ๋œ๋‹ค.

Denoising ๋‹จ๊ณ„๋Š” edge density, blur, brightness์— ๋”ฐ๋ผ filter๊ฐ€ ๋ฐ”๋€๋‹ค.

  • edge density๊ฐ€ ๋‚ฎ์œผ๋ฉด bilateral filtering
  • blur๊ฐ€ ๋งค์šฐ ํฌ๊ณ  ์ €์กฐ๋„์ด๋ฉด median filtering
  • ๊ทธ ์™ธ์—๋Š” fast non-local means denoising

๋งˆ์ง€๋ง‰์œผ๋กœ segmentation mask๊ฐ€ availableํ•˜๋ฉด person, sky, background์— ๋Œ€ํ•ด region-aware adjustment๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. background๋Š” ์ถ”๊ฐ€ denoise, sky๋Š” ์›๋ณธ ์ƒ‰ ๋ณด์กด ์ค‘์‹ฌ์˜ soft blending, person์€ ์›๋ณธ๊ณผ์˜ soft blending์œผ๋กœ ๋ณด์ •๋œ๋‹ค. ํŠนํžˆ landscape ๊ณ„์—ด์—์„œ๋Š” HSV ๊ธฐ๋ฐ˜ greenery mask๋ฅผ ์ถ”๊ฐ€๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ˆ˜ํ’€๊ณผ ์ž”๋””์˜ ์ฑ„๋„๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋‚ฎ์•„์ง€๋Š” ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•œ๋‹ค. ์ฆ‰ VisionCraft์˜ enhancement๋Š” ๋‹จ์ผ global filter๊ฐ€ ์•„๋‹ˆ๋ผ, ์ „์—ญ ๋ณด์ •๊ณผ ์žฅ๋ฉด๋ณ„ policy, ์˜์—ญ๋ณ„ ๋ณด์ •์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒฐํ•ฉํ•œ hybrid pipeline์ด๋‹ค.


5. How to Use VisionCraft

VisionCraft์˜ ๋‚ด๋ถ€ ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์ˆ˜์˜ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ, ์‹ค์ œ ์‚ฌ์šฉ ํ๋ฆ„ ์ž์ฒด๋Š” ๋น„๊ต์  ๋‹จ์ˆœํ•˜๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  Analyze and Enhance ๋ฒ„ํŠผ๋งŒ ์‹คํ–‰ํ•˜๋ฉด, ํ’ˆ์งˆ ๋ถ„์„๋ถ€ํ„ฐ ์žฅ๋ฉด ํ•ด์„, ๋ณด์ • ๊ฒฐ๊ณผ, ์‹œ๊ฐํ™” ๋ฆฌํฌํŠธ๊นŒ์ง€ ํ•˜๋‚˜์˜ ํ๋ฆ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์žฅ์˜ ๋ชฉ์ ์€ ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„ ์„ธ๋ถ€๋ณด๋‹ค ๋จผ์ €, ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ˆœ์„œ๋กœ VisionCraft๋ฅผ ๊ฒฝํ—˜ํ•˜๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

5.1 Basic Workflow

๊ธฐ๋ณธ ์‚ฌ์šฉ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค.
.venv/bin/python app.py
  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ Gradio UI๋ฅผ ์—ด๊ณ  ๋ถ„์„ํ•  ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•œ๋‹ค. Local ์‹คํ–‰ ๊ธฐ์ค€ ๊ธฐ๋ณธ ์ฃผ์†Œ๋Š” http://127.0.0.1:7860 ์ด๋‹ค.

  2. Analyze and Enhance ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•œ๋‹ค.

  3. ์šฐ์ธก์˜ Enhanced Image์™€ ํ•˜๋‹จ์˜ ์„ธ๋ถ€ ํƒญ์„ ํ†ตํ•ด intermediate result์™€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค.

  4. ์ƒ๋‹จ์˜ Model Status ํŒจ๋„์—์„œ YOLO, Scene Classifier, SegFormer, OCR backend๊ฐ€ ์ •์ƒ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ๋˜๋Š” fallback/disabled ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

  5. ํ•˜๋‹จ์˜ Scene Model Comparison ํŒจ๋„์—์„œ visual-only baseline, vanilla text cross-attention, text cross-attention + InfoNCE ์„ธ ๋ชจ๋ธ์˜ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๋‚˜๋ž€ํžˆ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์š” ํƒญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Auto Straighten: ๊ธฐ์šธ๊ธฐ ์ถ”์ •๊ณผ straighten preview ํ™•์ธ
  • Detection: YOLO ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ๊ฒ€์ถœ ๊ฒฐ๊ณผ ํ™•์ธ
  • Segmentation Overlay: semantic segmentation overlay ํ™•์ธ
  • Segmentation Components: ์ฃผ์š” semantic region ๋ถ„ํ•ด ํ™•์ธ
  • Auto Crop Preview: ์ถ”์ฒœ crop box ํ™•์ธ
  • Difference Heatmap: ๋ณด์ • ์ „ํ›„ ๋ณ€ํ™” ์˜์—ญ ํ™•์ธ
  • ORB Matching: ๋ณด์ • ์ „ํ›„ ๊ตฌ์กฐ ๋ณด์กด ์—ฌ๋ถ€ ํ™•์ธ
  • Manual 4-Point Rectification: ๋ฌธ์„œํ˜• ์ด๋ฏธ์ง€ ์ˆ˜๋™ ๋ณด์ • ๋ฐ OCR ๋ณด์กฐ

5.2 Practical Notes

์‹ค์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Difference Heatmap๊ณผ ORB Matching์€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•œ ์งํ›„์—๋Š” ๋น„์–ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ˜๋“œ์‹œ Analyze and Enhance๋ฅผ ์‹คํ–‰ํ•ด์•ผ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • Model Status ํŒจ๋„์€ YOLO object detection, scene classifier checkpoint, SegFormer segmentation, OCR backend์˜ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์š”์•ฝํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ๊ฒฐ๊ณผ๊ฐ€ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ fallback์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ํŒจ๋„์—์„œ ์›์ธ์„ ๋จผ์ € ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Scene Model Comparison์€ ๋™์ผํ•œ ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์„ธ ์ข…๋ฅ˜์˜ scene classifier ๊ฒฐ๊ณผ๋ฅผ ํ•œ ๋ฒˆ์— ๋ณด์—ฌ์ฃผ๋ฉฐ, ๊ฐ ๋ชจ๋ธ์˜ predicted label, confidence, top-3 ํ›„๋ณด๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ตœ์ข… enhancement๋Š” scene classifier์˜ predicted label์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ณด์ • policy๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด open_field_landscape๋Š” ํ•˜๋Š˜๊ณผ ์‹์ƒ ์ƒ‰ ๋ณด์กด์„ ์šฐ์„ ํ•˜๊ณ , street_downtown์€ ๊ฐ„ํŒ ์ƒ‰๊ณผ ๋„์‹œ ๋ช…์•”์„ ๋ณด์กดํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ณด์ • ๊ฐ•๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.
  • ์ „์ฒดํ™”๋ฉด์ด ์•„๋‹ˆ๋ฉด ํ™”๋ฉด ๋„ˆ๋น„์— ๋”ฐ๋ผ ์ผ๋ถ€ ํƒญ์ด ์ ‘ํ˜€ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ „์ฒดํ™”๋ฉด ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.
  • OCR ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด Enable Text Processing (OCR)๋ฅผ ์ผœ๊ณ , Manual 4-Point Rectification ํƒญ์—์„œ 4๊ฐœ ์ ์„ ์ง€์ •ํ•œ ๋’ค ๋‹ค์‹œ Analyze and Enhance๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • OpenAI API key๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฉด OpenAI multimodal OCR ๊ฒฝ๋กœ๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๊ฒฝ๋กœ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹คํŒจ ์‚ฌ์œ ๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, OpenAI key๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” PaddleOCR, EasyOCR, Tesseract ์ˆœ์œผ๋กœ local fallback์ด ์‹œ๋„๋œ๋‹ค.

5.3 Main UI Examples

๋‹ค์Œ์€ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ UI ์˜ˆ์‹œ์ด๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ ์ด๋ฏธ์ง€๋“ค์€ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ดฌ์˜ํ•œ ์‚ฌ์ง„์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ์„ฑ๋œ ์‹œ๊ฐํ™” ๊ฒฐ๊ณผ์ด๋‹ค.

Example 1 Example 2 Example 3
VisionCraft Example 1 VisionCraft Example 2 VisionCraft Example 3

5.4 Module-wise Visualization Examples

๊ฐ ์„ธ๋ถ€ ํƒญ์—์„œ ์ œ๊ณต๋˜๋Š” ์‹œ๊ฐํ™” ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Function Example
Auto Straighten / Tilt Correction Tilting Example
Object Detection Detection Example
Segmentation Overlay Segmentation Example
Segmentation Components Segmentation Components Example
Auto Crop Preview Crop Example
Difference Heatmap Difference Heatmap Example
ORB Matching ORB Matching Example
Manual 4-Point Input Manual 4-Point Input
Manual Rectification Result Manual 4-Point Result

์ด ์˜ˆ์‹œ๋“ค์€ VisionCraft๊ฐ€ ๋‹จ์ˆœํžˆ ์ตœ์ข… ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ ๋‹จ๊ณ„์—์„œ ์–ด๋–ค ๋ถ„์„๊ณผ ๋ณด์ •์ด ์ผ์–ด๋‚ฌ๋Š”์ง€๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

5.5 Analysis Report Examples

VisionCraft๋Š” ํƒญ๋ณ„ ์‹œ๊ฐํ™”๋ฟ ์•„๋‹ˆ๋ผ, ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ํ•ด์„ ๊ฐ€๋Šฅํ•œ report ํ˜•ํƒœ๋กœ๋„ ์ •๋ฆฌํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ถ„์„ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

Analysis 1 Analysis 2
Analysis Example 1 Analysis Example 2
Analysis 3 Analysis 4
Analysis Example 3 Analysis Example 4

6. Research Pipeline

6.1 Motivation

Scene classification์€ ๊ฒ‰๋ณด๊ธฐ์—๋Š” ๋น„๊ต์  ์ง๊ด€์ ์ธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋†’์€ intra-class variation๊ณผ ๊ฐ•ํ•œ inter-class similarity ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์ธ decision boundary๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๋™์ผํ•œ class label์„ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๋“ค์ด ํ•ญ์ƒ ๋™์ผํ•œ visual pattern์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ class๋“ค์ด ๋งค์šฐ ์œ ์‚ฌํ•œ object composition๊ณผ color distribution์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋„ ๋นˆ๋ฒˆํ•˜๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ restaurant_cafe์™€ kitchen_dining, waterfront์™€ mountain_valley, public_large_indoor์™€ corridor_lobby ๊ฐ™์€ class pair์ด๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ๋ฉด๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ semantic identity๋ฅผ ๊ฐ–์ง€๋งŒ, visual evidence๋งŒ ๋†“๊ณ  ๋ณด๋ฉด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋งค์šฐ ๊ฐ€๊นŒ์šด latent cluster๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์‰ฝ๋‹ค.

ํŠนํžˆ waterfront์ฒ˜๋Ÿผ class ์ด๋ฆ„์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ์‹ค์ œ ์ด๋ฏธ์ง€ ์•ˆ์—์„œ ๋ฌผ ์˜์—ญ์ด ์ž‘๊ฑฐ๋‚˜, ๋ฐ˜๋Œ€๋กœ ํ•˜๋Š˜๊ณผ ์‚ฐ์ด ๋” ํฌ๊ฒŒ ๋ณด์ด๋Š” ๊ฒฝ์šฐ ๋ชจ๋ธ์€ mountain_valley ๋˜๋Š” ์ผ๋ฐ˜ outdoor landscape์™€์˜ ๊ฒฝ๊ณ„๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ฆ‰ scene classification์˜ ํ•ต์‹ฌ ๋‚œ์ œ๋Š” class-level semantic identity์™€ image-level appearance ์‚ฌ์ด์˜ ๊ฐ„๊ทน์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ณธ ์—ฐ๊ตฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด, visual feature๋งŒ์œผ๋กœ class๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋Œ€์‹  class-level text prior๋ฅผ latent space์— ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์„ ํƒ๊ตฌํ•œ๋‹ค. ํ•ต์‹ฌ ๊ฐ€์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • raw visual feature๋งŒ์œผ๋กœ๋Š” ambiguousํ•œ sample์ด๋ผ๋„ class semantic description์„ ํ•จ๊ป˜ ์ฃผ์ž…ํ•˜๋ฉด latent representation์ด ๋ณด๋‹ค semantically organized๋œ ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ ๊ฒฐ๊ณผ visually similar but semantically different scene pair์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋” ์•ˆ์ •ํ™”๋  ์ˆ˜ ์žˆ๋‹ค.

VisionCraft์˜ ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์€ ์ด ๊ฐ€์„ค์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด visual-only baseline, vanilla text cross-attention, text cross-attention + InfoNCE์˜ ์„ธ ์„ค์ •์„ ๋น„๊ตํ•œ๋‹ค.


6.2 Dataset Design

์—ฐ๊ตฌ์— ์‚ฌ์šฉ๋œ ๋ฐ์ดํ„ฐ์…‹์˜ ์ถœ๋ฐœ์ ์€ MIT CSAIL์ด ๊ณต๊ฐœํ•œ Places365 scene recognition dataset์ด๋‹ค. Places ๊ณ„์—ด ๋ฐ์ดํ„ฐ์…‹์€ object-centric classification์ด ์•„๋‹ˆ๋ผ scene-centric recognition์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋œ ๋Œ€ํ‘œ์ ์ธ ๋Œ€๊ทœ๋ชจ ์žฅ๋ฉด ์ธ์‹ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ, ์‚ฌ๋žŒ, ์ž๋™์ฐจ, ์ปต์ฒ˜๋Ÿผ ๊ฐœ๋ณ„ ๊ฐ์ฒด๋ฅผ ๋งžํžˆ๋Š” ๋Œ€์‹  bedroom, street, restaurant, forest์™€ ๊ฐ™์€ ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค.

๊ณต์‹ ์‚ฌ์ดํŠธ์— ๋”ฐ๋ฅด๋ฉด Places ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 10 million ์ด์ƒ ์ด๋ฏธ์ง€์™€ 400+ scene category๋ฅผ ํฌํ•จํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์žฅ๋ฉด ์ดํ•ด ๋ฐ์ดํ„ฐ์…‹ ๊ณ„์—ด์ด๋ฉฐ, ๊ทธ์ค‘ Places365๋Š” 365๊ฐœ์˜ ํ•ต์‹ฌ scene category๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋œ widely used benchmark subset์ด๋‹ค. ๋˜ํ•œ ๊ณต๊ฐœ๋œ download page ๊ธฐ์ค€์œผ๋กœ Places365-Standard๋Š” 365๊ฐœ class์— ๋Œ€ํ•ด ์•ฝ 1.8 million training image๋ฅผ ํฌํ•จํ•œ๋‹ค.

๊ด€๋ จ ๊ณต์‹ ๋งํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Places365๊ฐ€ ๋ณธ ์—ฐ๊ตฌ์— ์ ํ•ฉํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. scene category ์ž์ฒด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” benchmark์ด๋ฏ€๋กœ VisionCraft์˜ scene classification ๋ชฉํ‘œ์™€ ์ง์ ‘์ ์œผ๋กœ ๋งž๋‹ฟ์•„ ์žˆ๋‹ค.
  2. indoor/outdoor, natural/man-made, private/public๊ณผ ๊ฐ™์€ ๊ณ ์ˆ˜์ค€ semantic distinction์„ ํญ๋„“๊ฒŒ ํฌํ•จํ•œ๋‹ค.
  3. ์„œ๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ์œ ์‚ฌํ•˜์ง€๋งŒ ์˜๋ฏธ์ ์œผ๋กœ๋Š” ๋‹ค๋ฅธ scene pair๊ฐ€ ์ถฉ๋ถ„ํžˆ ์กด์žฌํ•˜์—ฌ, semantic ambiguity์™€ representation learning ๋ฌธ์ œ๋ฅผ ์‹คํ—˜ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค.

๋‹ค๋งŒ Places365 ์›๋ณธ label space๋Š” VisionCraft์˜ ์‘์šฉ ๋ชฉ์ ์— ๋น„ํ•ด ์ง€๋‚˜์น˜๊ฒŒ ์„ธ๋ถ„๋˜์–ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ œ enhancement ๊ด€์ ์—์„œ๋Š” ์„ธ๋ถ€ ์žฅ์†Œ๋ช… ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋ชจ๋‘ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์žฅ๋ฉด์ด indoor์ธ์ง€ outdoor์ธ์ง€, ์ž์—ฐ ํ’๊ฒฝ์ธ์ง€ ์‹ค๋‚ด ์ƒํ™œ ๊ณต๊ฐ„์ธ์ง€, ๊ณต๊ณต ์‹ค๋‚ด์ธ์ง€ ๊ฐœ์ธ ์‹ค๋‚ด์ธ์ง€์™€ ๊ฐ™์€ ์ƒ์œ„ semantic grouping์ด ๋” ์ค‘์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ณธ ์—ฐ๊ตฌ์—์„œ๋Š” Places365 ์›๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ VisionCraft์˜ ์‘์šฉ ๋ชฉ์ ์— ๋งž๊ฒŒ ์žฌ๊ตฌ์„ฑํ•œ 14-class scene taxonomy๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ด taxonomy๋Š” ๋‹จ์ˆœ benchmark score๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค ์ง‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ์ด๋ฏธ์ง€ ๊ฐœ์„ ๊ณผ ์žฅ๋ฉด ์ดํ•ด ๊ด€์ ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์ƒ์œ„ semantic group์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค.

์ตœ์ข… ํด๋ž˜์Šค ์ง‘ํ•ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ indoor/outdoor, natural/man-made, private/public ์„ฑ๊ฒฉ์„ ํ•จ๊ป˜ ๋ฐ˜์˜ํ•œ๋‹ค.

  • bedroom
  • office_study
  • kitchen_dining
  • restaurant_cafe
  • corridor_lobby
  • public_large_indoor
  • residential_outdoor
  • street_downtown
  • transportation_hub_road
  • waterfront
  • mountain_valley
  • forest_nature
  • open_field_landscape
  • urban_or_misc outdoor ๊ณ„์—ด ์žฅ๋ฉด

์›๋ณธ Places365 label์€ visioncraft_scene_mapping.py ์˜ ๋งคํ•‘ ๊ทœ์น™์„ ํ†ตํ•ด ์ƒ์œ„ VisionCraft class๋กœ ์žฌ๊ตฌ์„ฑ๋œ๋‹ค. ์ด ์„ค๊ณ„์˜ ํ•ต์‹ฌ ๋ชฉ์ ์€ ๋‘ ๊ฐ€์ง€์ด๋‹ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์—์„œ ์‹ค์ œ scene-aware enhancement์— ์˜๋ฏธ ์žˆ๋Š” coarse semantic category๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ
  2. ์—ฐ๊ตฌ ๊ด€์ ์—์„œ visually similar class pair๋ฅผ ์ผ๋ถ€๋Ÿฌ ๋‚จ๊ฒจ ๋‘์–ด representation learning์˜ ํ•œ๊ณ„๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ๊ฒƒ

์ฆ‰ ๋ณธ ๋ฐ์ดํ„ฐ์…‹์€ classification ์ž์ฒด๋ณด๋‹ค๋„, semantic ambiguity๊ฐ€ ๋†’์€ scene classification ํ™˜๊ฒฝ์„ ์˜๋„์ ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ experimental substrate์— ๊ฐ€๊น๋‹ค.


6.3 Backbone Choice

6.3.1 Why ResNet50

๋ณธ ์—ฐ๊ตฌ์—์„œ ๊ธฐ๋ณธ visual backbone์œผ๋กœ ResNet50์„ ์„ ํƒํ•œ ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ๋„๋ฆฌ ์“ฐ์ด๋Š” ๋„คํŠธ์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ, scene classification task์˜ ๊ตฌ์กฐ์  ํŠน์„ฑ๊ณผ ์—ฐ๊ตฌ ๋ชฉ์ ์„ ๋™์‹œ์— ๊ณ ๋ คํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฒซ์งธ, ResNet์˜ residual block์€ ๊นŠ์€ ๋„คํŠธ์›Œํฌ ํ•™์Šต์—์„œ optimization difficulty๋ฅผ ์™„ํ™”ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ residual block์€ ๋ชฉํ‘œ ํ•จ์ˆ˜ $\mathcal{H}(\mathbf{x})$๋ฅผ ์ง์ ‘ ํ•™์Šตํ•˜๋Š” ๋Œ€์‹ 

$$ \mathbf{y} = \mathcal{F}(\mathbf{x}, W) + \mathbf{x} $$

์˜ ํ˜•ํƒœ๋กœ residual correction $\mathcal{F}(\mathbf{x}, W)$๋งŒ ํ•™์Šตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ

$$ \mathcal{F}(\mathbf{x}, W) = \mathcal{H}(\mathbf{x}) - \mathbf{x} $$

๊ฐ€ ๋˜๋ฉฐ, ๋งŒ์•ฝ ์–ด๋–ค block์ด identity mapping์— ๊ฐ€๊นŒ์šด ๋™์ž‘์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด residual branch๋Š” ๋‹จ์ˆœํžˆ $\mathcal{F}(\mathbf{x}, W)\approx 0$์„ ๋งŒ์กฑํ•˜๋ฉด ๋œ๋‹ค. ์ด๋Š” ๊นŠ์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณต์žกํ•œ ๋ณ€ํ™˜ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ ํ•™์Šตํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค€๋‹ค.

๋˜ํ•œ loss $\mathcal{L}$์— ๋Œ€ํ•ด ์ž…๋ ฅ $\mathbf{x}$๋กœ์˜ gradient๋ฅผ ์“ฐ๋ฉด

$$ \frac{\partial \mathcal{L}}{\partial \mathbf{x}} = \frac{\partial \mathcal{L}}{\partial \mathbf{y}} \left( \frac{\partial \mathcal{F}(\mathbf{x}, W)}{\partial \mathbf{x}} + I \right) $$

ํ˜•ํƒœ๊ฐ€ ๋˜๋ฏ€๋กœ, shortcut path์˜ identity term์ด gradient flow๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ณ  degradation problem๊ณผ vanishing gradient๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.

๋‘˜์งธ, scene classification์€ object recognition๋ณด๋‹ค ๋” ๋„“์€ contextual reasoning์„ ์š”๊ตฌํ•œ๋‹ค. ๋ฌผ์ฒด ํ•˜๋‚˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋งŒ์ด ์•„๋‹ˆ๋ผ, ๊ณต๊ฐ„ ๊ตฌ์กฐ, ๋ฐฐ๊ฒฝ ๋ถ„ํฌ, texture arrangement, horizon-like cues, semantic co-occurrence๋ฅผ ํ•จ๊ป˜ ๋ฐ˜์˜ํ•ด์•ผ ํ•œ๋‹ค. ResNet50์€ ResNet18๋ณด๋‹ค ๋” ๊นŠ๊ณ  ํ’๋ถ€ํ•œ feature hierarchy๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ, such scene-level compositional pattern์„ ๋” ์•ˆ์ •์ ์œผ๋กœ encodingํ•  ์ˆ˜ ์žˆ๋‹ค.

์…‹์งธ, ๋ณธ ์—ฐ๊ตฌ์˜ ๋ชฉํ‘œ๋Š” ๋‹จ์ผ ์ตœ๊ณ  ์„ฑ๋Šฅ ๋ชจ๋ธ์„ ํ•œ ๋ฒˆ ์–ป๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, visual-only baseline, text-guided fusion, InfoNCE extension์„ ๋น„๊ตํ•˜๋ฉฐ latent representation ๋ณ€ํ™”๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐ ์žˆ๋‹ค. ResNet50์€ ํ‘œํ˜„๋ ฅ๊ณผ ์‹คํ—˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅ์„ฑ ์‚ฌ์ด์—์„œ ์ ์ ˆํ•œ ๊ท ํ˜•์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์—ฐ๊ตฌ์šฉ backbone์œผ๋กœ ํ˜„์‹ค์ ์ธ ์„ ํƒ์ด์—ˆ๋‹ค.


6.4 Training Strategy

ํ•™์Šต์€ supervised scene classification์„ ๊ธฐ๋ณธ ์ถ•์œผ๋กœ ํ•˜๋˜, fusion mode์— ๋”ฐ๋ผ auxiliary signal์ด ๋‹ฌ๋ผ์ง€๋„๋ก ์„ค๊ณ„ํ•˜์˜€๋‹ค. ๊ธฐ๋ณธ์ ์ธ objective๋Š” class label์— ๋Œ€ํ•œ cross-entropy loss์ด๋ฉฐ, text-guided model์˜ ๊ฒฝ์šฐ์—๋Š” visual-text fusion ์ดํ›„์˜ fused latent๋ฅผ classifier์— ์ž…๋ ฅํ•œ๋‹ค.

Visual-only baseline์˜ ๊ฒฝ์šฐ ์ž…๋ ฅ ์ด๋ฏธ์ง€ $x$๋Š” backbone $f_\theta$๋ฅผ ๊ฑฐ์ณ visual representation $\mathbf{h}$๋กœ ๋ณ€ํ™˜๋˜๊ณ , classifier $g_\phi$๋ฅผ ํ†ตํ•ด logits๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

$$ \mathbf{h} = f_\theta(x), \qquad \mathbf{z} = g_\phi(\mathbf{h}) $$

์ตœ์ข… supervised classification loss๋Š”

$$ \mathcal{L}_{cls} = -\log p(y\mid x) $$

์ด๋‹ค.

Text-guided model์—์„œ๋Š” backbone์ด ์ƒ์„ฑํ•œ spatial feature map์„ flattenํ•˜์—ฌ visual token sequence๋ฅผ ๋งŒ๋“ค๊ณ , class-level text embedding์„ text token sequence๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ดํ›„ cross-attention์„ ํ†ตํ•ด fused visual token์„ ๊ตฌ์„ฑํ•˜๊ณ , mean pooling๊ณผ layer normalization ๋’ค classifier์— ๋„ฃ๋Š”๋‹ค.

ํ•™์Šต ์•ˆ์ •ํ™”๋ฅผ ์œ„ํ•ด ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ pragmatic strategy๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ดˆ๋ฐ˜ 2 epoch ๋™์•ˆ backbone freeze
  • backbone unfreeze ์ดํ›„ end-to-end fine-tuning
  • ReduceLROnPlateau scheduler ์‚ฌ์šฉ
  • validation accuracy ๊ธฐ์ค€ best checkpoint ์ €์žฅ
  • optional early stopping support

ํŠนํžˆ backbone freeze๋Š” multimodal fusion layer๊ฐ€ ์ดˆ๊ธฐ๋ถ€ํ„ฐ backbone representation ์ „์ฒด๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ํ”๋“œ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ด ํฌ๋‹ค. ์‹ค์ œ๋กœ InfoNCE ์‹คํ—˜์—์„œ๋„ ์ดˆ๋ฐ˜ freeze๊ฐ€ ์—†๋Š” ์„ค์ •๋ณด๋‹ค freeze 2 epoch ์„ค์ •์ด ํ›จ์”ฌ ์•ˆ์ •์ ์ธ validation behavior๋ฅผ ๋ณด์˜€๋‹ค.


6.5 Hyperparameters

ํ˜„์žฌ text-guided cross-attention ๊ณ„์—ด ์‹คํ—˜์—์„œ ์‚ฌ์šฉํ•œ ํ•ต์‹ฌ hyperparameter๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • backbone: ResNet50
  • image size: 224
  • batch size: 16
  • optimizer: AdamW
  • learning rate: 1e-4
  • weight decay: 1e-5
  • label smoothing: 0.1
  • freeze backbone epochs: 2
  • cross-attention dropout: 0.1

InfoNCE extension์—์„œ๋Š” ์—ฌ๊ธฐ์— ๋‹ค์Œ ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

  • text contrastive weight $\lambda_{con} = 0.05$
  • text contrastive temperature $\tau = 0.10$

์ด ๊ฐ’๋“ค์€ ์™„์ „ํžˆ ์ด๋ก ์ ์œผ๋กœ ๋„์ถœ๋œ ์ƒ์ˆ˜๋ผ๊ธฐ๋ณด๋‹ค, representation alignment์™€ classification accuracy ์‚ฌ์ด์˜ trade-off๋ฅผ ๊ณ ๋ คํ•ด ์„ ํƒํ•œ empirical setting์ด๋‹ค. ๊ธฐ์กด์˜ ๋” ๊ฐ•ํ•œ ์„ค์ •๋ณด๋‹ค contrastive weight๋ฅผ ๋‚ฎ์ถ”๊ณ  temperature๋ฅผ ์™„๋งŒํ•˜๊ฒŒ ๋†’์ž„์œผ๋กœ์จ, prototype alignment ์••๋ ฅ์ด ๊ณผ๋„ํ•˜๊ฒŒ ์ปค์ง€๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์ด๊ณ ์ž ํ–ˆ๋‹ค.

์ตœ์ข… A ์„ค์ •์€ ์ด๋Ÿฌํ•œ ์กฐ์ •์ด ์‹ค์ œ๋กœ ์œ ํšจํ–ˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค. ๋™์ผํ•œ ํ•™์Šต recipe ์œ„์—์„œ contrastive weight๋ฅผ 0.05๋กœ ๋‚ฎ์ถ”๊ณ  temperature๋ฅผ 0.10์œผ๋กœ ์กฐ์ •ํ•œ ๊ฒฐ๊ณผ, Text Cross-Attention + InfoNCE ๋ชจ๋ธ์€ ์ตœ์ข… validation accuracy 60.75%๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ vanilla text cross-attention์˜ 60.56%๋ฅผ ๋‹ค์‹œ ๋„˜์–ด์„ฐ๋‹ค.


6.6 Data Augmentation

VisionCraft์˜ ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ฐ•ํ•œ synthetic augmentation๋ณด๋‹ค, ์žฅ๋ฉด identity๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ํ›ผ์†ํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„์˜ standard augmentation์„ ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์— ๊ฐ€๊น๋‹ค. ์ด์œ ๋Š” scene classification์—์„œ๋Š” geometric consistency์™€ global context๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋˜ํ•œ ํ•™์Šต ์ฝ”๋“œ์—๋Š” optional mixup support๊ฐ€ ์กด์žฌํ•œ๋‹ค. mixup coefficient $\lambda$๋ฅผ Beta distribution์—์„œ ์ƒ˜ํ”Œ๋งํ•˜๋ฉด, ๋‘ ์ด๋ฏธ์ง€ $(x_i, y_i), (x_j, y_j)$์— ๋Œ€ํ•ด

$$ \tilde{x} = \lambda x_i + (1-\lambda)x_j $$

$$ \tilde{y} = \lambda y_i + (1-\lambda)y_j $$

๋กœ mixed sample์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ํ˜„์žฌ text-cross-attention ์‹คํ—˜์˜ ํ•ต์‹ฌ ๋น„๊ต์—์„œ๋Š” mixup์„ ์ค‘์‹ฌ ์„ค์ •์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๊ณ , semantic prior์˜ ํšจ๊ณผ๋ฅผ ๋” ๋ช…ํ™•ํžˆ ๋ณด๊ธฐ ์œ„ํ•ด relatively conservativeํ•œ augmentation policy๋ฅผ ์œ ์ง€ํ•˜์˜€๋‹ค.


6.7 Visual-Only Baseline

Visual-only baseline์€ ๋ณธ ์—ฐ๊ตฌ์˜ ์ถœ๋ฐœ์ ์ด๋‹ค. ์ด ๋ชจ๋ธ์€ ์ด๋ฏธ์ง€ ์™ธ์˜ ์–ด๋–ค semantic prior๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์˜ค์ง visual evidence๋งŒ์œผ๋กœ 14-class scene taxonomy๋ฅผ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

ํ˜•์‹์ ์œผ๋กœ๋Š”

$$ \mathbf{h}_{vis} = f_\theta(x), \qquad \mathbf{z} = g_\phi(\mathbf{h}_{vis}) $$

์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋ณธ ์‹คํ—˜์—์„œ ์ด baseline์€ validation accuracy 59.79%๋ฅผ ๊ธฐ๋กํ•˜์˜€๋‹ค.

์ด baseline์€ ๋‘ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ค‘์š”ํ•˜๋‹ค.

  1. text prior๊ฐ€ ์ „ํ˜€ ์—†๋Š” ์ˆœ์ˆ˜ visual representation์˜ ๊ธฐ์ค€์ ์„ ์ œ๊ณตํ•œ๋‹ค
  2. ์ดํ›„ text-guided model์ด ๋‹จ์ˆœํ•œ score gain๋งŒ์ด ์•„๋‹ˆ๋ผ latent geometry๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ”๊พธ๋Š”์ง€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค

ํŠนํžˆ confusion์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” class pair๋Š” ๋Œ€๋ถ€๋ถ„ semantic overlap์ด ํฐ ์Œ์ด๋ผ๋Š” ์ ์—์„œ, baseline์€ scene classification์˜ ๊ทผ๋ณธ์ ์ธ ambiguity๋ฅผ ์ž˜ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ถœ๋ฐœ์ ์œผ๋กœ ๊ธฐ๋Šฅํ•œ๋‹ค.


6.8 Text-Guided Cross-Attention

6.8.1 Class Text Prompt

Text-guided model์˜ ์ถœ๋ฐœ์ ์€ ๊ฐ scene class๋ฅผ ์„ค๋ช…ํ•˜๋Š” class-level text prompt์ด๋‹ค. ์ด prompt๋“ค์€ scene_text_prompts.py ์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋‹จ์ˆœํ•œ class name๋งŒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์žฅ๋ฉด์„ ์„ค๋ช…ํ•˜๋Š” ์งง์€ ์ž์—ฐ์–ด ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

๊ฐ prompt๋Š” CLIP text encoder๋ฅผ ํ†ตํ•ด embedding vector $\mathbf{t}_k$๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

$$ \mathbf{t}_k = \mathrm{CLIPTextEncoder}(p_k) $$

์—ฌ๊ธฐ์„œ $p_k$๋Š” class $k$์— ๋Œ€ํ•œ prompt text์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ embedding๋“ค์€ ํ•™์Šต ์ „์— ๋ฏธ๋ฆฌ precompute๋˜์–ด .npz ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ํ•™์Šต ์ค‘์—๋Š” fixed class-level text token์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์ด ์„ค๊ณ„๋Š” ํ•™์Šต ๊ณผ์ •์—์„œ text encoder๊นŒ์ง€ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋Œ€์‹ , stable semantic prior๋ฅผ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•˜๋Š” ์ „๋žต์— ํ•ด๋‹นํ•œ๋‹ค.


6.8.2 Visual-Text Fusion

ํ˜„์žฌ ๊ตฌํ˜„์˜ text-guided fusion์€ text_cross_attention.py ์— ์ •์˜๋œ ๋‹จ๋ฐฉํ–ฅ cross-attention ๊ตฌ์กฐ์ด๋‹ค. ResNet50 backbone์ด ๋งŒ๋“  feature map์„ flattenํ•˜์—ฌ visual token sequence๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด,

$$ \mathbf{V} \in \mathbb{R}^{N \times d_v} $$

๊ฐ€ ๋œ๋‹ค. ํ•œํŽธ class-level text embedding ์ง‘ํ•ฉ์€

$$ \mathbf{T} \in \mathbb{R}^{K \times d_t} $$

์˜ token sequence๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‘ ์‹œํ€€์Šค๋Š” ๊ฐ๊ฐ hidden dimension์œผ๋กœ projection๋œ ๋’ค,

$$ Q = W_Q \mathbf{V}, \qquad K = W_K \mathbf{T}, \qquad V_t = W_V \mathbf{T} $$

์˜ ํ˜•ํƒœ๋กœ attention์— ๋“ค์–ด๊ฐ„๋‹ค. ์ฆ‰ query๋Š” visual token์—์„œ ์˜ค๊ณ , key/value๋Š” text token์—์„œ ์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Š” visual-to-text cross-attention์ด๋‹ค.

attention output์€

$$ \mathrm{Attn}(Q,K,V_t) = \mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d}}\right)V_t $$

๋กœ ๊ณ„์‚ฐ๋˜๋ฉฐ, ์ตœ์ข… fused token์€ residual connection๊ณผ feed-forward block์„ ๊ฑฐ์ณ

$$ \mathbf{V}_{fused} = \mathbf{V}_{proj} + \mathrm{Attn}(Q,K,V_t) $$

์˜ ํ˜•ํƒœ๋กœ ์–ป์–ด์ง„๋‹ค. ์ดํ›„ token ํ‰๊ท ์„ ์ทจํ•ด pooled fused latent๋ฅผ ๋งŒ๋“ ๋‹ค.

$$ \mathbf{h}_{fused} = \mathrm{LayerNorm}\left(\frac{1}{N}\sum_{i=1}^{N}\mathbf{V}_{fused}^{(i)}\right) $$

์ด fused latent๊ฐ€ classifier ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


6.8.3 InfoNCE Extension

InfoNCE extension์˜ ๋ชฉ์ ์€ text๋ฅผ ๋‹จ์ˆœ anchor๋กœ๋งŒ ์“ฐ๋Š” ๋ฐ์„œ ๊ทธ์น˜์ง€ ์•Š๊ณ , fused latent๊ฐ€ ์ž์‹ ์˜ ์ •๋‹ต class text prototype์— ๋” ์ง์ ‘์ ์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ํ•™์Šต ์‹ ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋จผ์ € fused latent $\mathbf{h}_{fused}$์™€ projected text prototype $\tilde{\mathbf{t}}_k$๋ฅผ ๋ชจ๋‘ ์ •๊ทœํ™”ํ•œ๋‹ค.

$$ \hat{\mathbf{h}} = \frac{\mathbf{h}_{fused}}{|\mathbf{h}_{fused}|_2}, \qquad \hat{\mathbf{t}}_k = \frac{\tilde{\mathbf{t}}_k}{|\tilde{\mathbf{t}}_k|_2} $$

๊ทธ ๋‹ค์Œ cosine similarity matrix๋ฅผ

$$ s_k = \frac{\hat{\mathbf{h}}^\top \hat{\mathbf{t}}_k}{\tau} $$

๋กœ ์ •์˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ $\tau$๋Š” temperature์ด๋‹ค. ์ •๋‹ต label์ด $y$์ผ ๋•Œ contrastive objective๋Š”

$$ \mathcal{L}_{con} = -\log \frac{\exp(s_y)}{\sum_{k}\exp(s_k)} $$

์ด๋ฉฐ, ์ตœ์ข… ํ•™์Šต objective๋Š”

$$ \mathcal{L} = \mathcal{L}_{cls} + \lambda_{con}\mathcal{L}_{con} $$

์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

์ค‘์š”ํ•œ ์ ์€ InfoNCE๊ฐ€ cross-attention block ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, fused latent์™€ text prototype ์‚ฌ์ด์— auxiliary supervision์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ vanilla text cross-attention์ด semantic anchor injection์— ๊ฐ€๊น๋‹ค๋ฉด, InfoNCE extension์€ prototype-aware alignment pressure๋ฅผ ๋”ํ•˜๋Š” variant๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ตœ์ข… A ์„ค์ •์€ validation accuracy 60.75%๋ฅผ ๊ธฐ๋กํ•˜์˜€๋‹ค. ์ด๋Š” ๊ธฐ์กด visual-only baseline 59.79%, vanilla text cross-attention 60.56%๋ฅผ ๋ชจ๋‘ ๋„˜์–ด์„  ์ˆ˜์น˜์ด๋ฉฐ, InfoNCE๊ฐ€ ๋‹จ์ˆœํ•œ semantic smoothing์„ ๋„˜์–ด prototype-aware alignment๋ฅผ ์‹ค์ œ ๋ถ„๋ฅ˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.


6.8.4 Why Text Helps

Text prior๊ฐ€ ๋„์›€์ด ๋˜๋Š” ์ด์œ ๋Š” text๊ฐ€ visual feature๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ, visual representation์ด semantic direction์„ ๊ฐ–๋„๋ก ์•ฝํ•œ ๊ตฌ์กฐ์  bias๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Visual-only baseline์€ image appearance์— ํฌ๊ฒŒ ์˜์กดํ•˜๋ฏ€๋กœ, object composition์ด ์œ ์‚ฌํ•œ class pair๋ฅผ ์‰ฝ๊ฒŒ ํ˜ผ๋™ํ•œ๋‹ค. ๋ฐ˜๋ฉด class-level text token์ด ํ•จ๊ป˜ ๋“ค์–ด์˜ค๋ฉด, ๋ชจ๋ธ์€ "์ด ์žฅ๋ฉด์ด ์–ด๋–ค semantic category์— ์†ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€"์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋‹จ์„œ๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ํšจ๊ณผ๋Š” ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • class ๋‚ด๋ถ€ ๋ณ€์ด๊ฐ€ ํฐ ๊ฒฝ์šฐ
  • image appearance๊ฐ€ atypicalํ•œ ๊ฒฝ์šฐ
  • background context๊ฐ€ object cue๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
  • coarse semantic grouping์ด ๋ถ„๋ฅ˜ ์•ˆ์ •์„ฑ์— ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ

์ฆ‰ text๋Š” fine-grained pixel evidence๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, latent representation์ด scene-level meaning๊ณผ ๋” ์ผ๊ด€๋˜๊ฒŒ ์ •๋ ฌ๋˜๋„๋ก ๋„์™€์ฃผ๋Š” semantic prior ์—ญํ• ์„ ํ•œ๋‹ค.


6.8.5 Semantic Smoothing

Text-guided cross-attention์˜ ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ํšจ๊ณผ๋Š” semantic smoothing์ด๋‹ค. ์ด๋Š” ๋ชจ๋“  class boundary๋ฅผ ๋ฌด์กฐ๊ฑด sharpenํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด class๋“ค์ด ๊ฐ™์€ semantic neighborhood ์•ˆ์—์„œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์žฌ๋ฐฐ์น˜๋˜๋Š” ํ˜„์ƒ์„ ๋œปํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด restaurant_cafe์™€ kitchen_dining, waterfront์™€ mountain_valley, public_large_indoor์™€ corridor_lobby๋Š” ์ƒ์œ„ semantic group์„ ๊ณต์œ ํ•œ๋‹ค. text prior๊ฐ€ ์ฃผ์ž…๋˜๋ฉด ์ด๋Ÿฌํ•œ class๋“ค์˜ latent centroid๋Š” ์™„์ „ํžˆ ๋ฉ€์–ด์ง€๊ธฐ๋ณด๋‹ค, ๊ณตํ†ต semantic manifold ์•ˆ์—์„œ ๋” ๊ตฌ์กฐํ™”๋œ ๋ฐฐ์—ด์„ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ํ˜„์ƒ์€ ์žฅ์ ๊ณผ trade-off๋ฅผ ๋™์‹œ์— ๊ฐ€์ง„๋‹ค.

  • ์žฅ์ : visually noisyํ•˜๊ฑฐ๋‚˜ atypicalํ•œ sample์˜ semantic identity๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค
  • trade-off: fine-grained separator๊ฐ€ ํ•„์š”ํ•œ class pair์—์„œ๋Š” ์ผ๋ถ€ confusion์ด ๋‚จ๊ฑฐ๋‚˜ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค

๋”ฐ๋ผ์„œ text-guided model์€ ๋‹จ์ˆœํ•œ margin maximizer๋ผ๊ธฐ๋ณด๋‹ค, latent geometry๋ฅผ coarse semantic structure์— ๋งž์ถฐ ์žฌ์ •๋ ฌํ•˜๋Š” semantic smoother๋กœ ํ•ด์„ํ•˜๋Š” ํŽธ์ด ๋” ์ •ํ™•ํ•˜๋‹ค.


6.8.6 Contrastive Alignment

InfoNCE extension์€ ์œ„ semantic smoothing ํšจ๊ณผ ์œ„์—, ์ •๋‹ต class text prototype ์ชฝ์œผ๋กœ ์‹ค์ œ๋กœ ๋” ๋ถ™๋„๋ก ํ•˜๋Š” ๋ช…์‹œ์  alignment objective๋ฅผ ๋”ํ•œ๋‹ค. ์ด ์ ์ด vanilla text cross-attention๊ณผ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋‹ค.

Vanilla text model์—์„œ๋Š” text token์ด attention ๊ณผ์ •์—์„œ semantic anchor๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, ์ตœ์ข… fused latent๊ฐ€ ์ž์‹ ์˜ class text prototype๊ณผ ํ•ญ์ƒ ์ง์ ‘์ ์œผ๋กœ ๊ฐ€๊นŒ์›Œ์งˆ ํ•„์š”๋Š” ์—†๋‹ค. ๋ฐ˜๋ฉด InfoNCE๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด fused latent๋Š” rival prototype๋ณด๋‹ค correct-class prototype์— ๋” ๋†’์€ cosine similarity๋ฅผ ๊ฐ–๋„๋ก ์ง€์†์ ์œผ๋กœ ์••๋ฐ•๋ฐ›๋Š”๋‹ค.

์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ฒŒ ํ•œ๋‹ค.

  • prototype retrieval accuracy ํ–ฅ์ƒ
  • same-class compactness ์ฆ๊ฐ€
  • text-aware decision boundary์˜ ์•ˆ์ •ํ™”

๋ฐ˜๋ฉด alignment pressure๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด semantic neighbor class ์‚ฌ์ด์˜ separation์„ ์˜คํžˆ๋ ค ๊ณผ๋„ํ•˜๊ฒŒ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ contrastive weight์™€ temperature๋Š” accuracy์™€ representation quality ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์ขŒ์šฐํ•˜๋Š” ํ•ต์‹ฌ hyperparameter๊ฐ€ ๋œ๋‹ค.


7. Experimental Results

7.1 Classification Accuracy

์ตœ์ข… validation accuracy ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Model Validation Accuracy
Visual-only baseline 59.79%
Text-Guided Cross-Attention 60.56%
Text Cross-Attention + InfoNCE 60.75%

์„ธ ๋ชจ๋ธ ๋ชจ๋‘ ๊ฒฝ์Ÿ์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์˜€์ง€๋งŒ, ์ค‘์š”ํ•œ ์ ์€ text๋ฅผ ์ฃผ์ž…ํ•œ ๋‘ ๋ชจ๋ธ์ด ๋ชจ๋‘ visual-only baseline์„ ๋„˜์–ด์„ฐ๋‹ค๋Š” ์‚ฌ์‹ค์ด๋‹ค. ํŠนํžˆ ์ด๋ฒˆ ์ตœ์ข… ์‹คํ—˜์—์„œ๋Š” Text Cross-Attention + InfoNCE๊ฐ€ 60.75%๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ, vanilla text cross-attention์˜ 60.56%๋ฅผ ๋‹ค์‹œ ๋„˜์–ด์„ฐ๋‹ค.

์ด ๊ฒฐ๊ณผ๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ์‹œ์‚ฌํ•œ๋‹ค.

  1. class-level text prior ์ž์ฒด๊ฐ€ visual-only baseline๋ณด๋‹ค ์œ ์˜๋ฏธํ•œ ๋„์›€์„ ์ค€๋‹ค.
  2. ์ ์ ˆํ•œ hyperparameter๊ฐ€ ์ ์šฉ๋œ InfoNCE objective๋Š” accuracy์™€ latent alignment๋ฅผ ๋™์‹œ์— ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

7.2 Confusion Matrix Analysis

Visual-only baseline confusion matrix:

Visual-only Confusion Matrix

Text-guided cross-attention confusion matrix:

Text Cross-Attention Confusion Matrix

Text-guided cross-attention + InfoNCE confusion matrix:

Text Cross-Attention + InfoNCE Confusion Matrix

์„ธ confusion matrix๋ฅผ ํ•จ๊ป˜ ๋ณด๋ฉด, ์„ฑ๋Šฅ ๊ฐœ์„ ์€ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ค‘์š”ํ•œ ๋ณ€ํ™”๋Š” ๋‹จ์ˆœํžˆ diagonal entry๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ์ปค์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„œ๋กœ ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์žฅ๋ฉด๋“ค ์‚ฌ์ด์˜ ํ˜ผ๋™ ํŒจํ„ด์ด ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ์ •๋ ฌ๋˜๋Š”๊ฐ€์— ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ semantic neighborhood๋Š” ๋‹จ์ˆœํžˆ ์ƒ‰์ด๋‚˜ ์งˆ๊ฐ์ด ๋น„์Šทํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋ณด๋‹ค ๊ฑฐ์‹œ์ ์ธ ์žฅ๋ฉด ๋งฅ๋ฝ์„ ๊ณต์œ ํ•˜๋Š” class pair๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • kitchen_dining โ†” restaurant_cafe
  • waterfront โ†” mountain_valley
  • public_large_indoor โ†” corridor_lobby

Visual-only baseline์—์„œ vanilla text cross-attention์œผ๋กœ ๊ฐ€๋ฉด, ์ผ๋ถ€ ๋ฐฉํ–ฅ์˜ confusion์€ ์˜คํžˆ๋ ค ์ฆ๊ฐ€ํ•œ๋‹ค.

  • restaurant_cafe -> kitchen_dining: 89 -> 139
  • public_large_indoor -> corridor_lobby: 85 -> 112
  • waterfront -> mountain_valley: 165 -> 171

ํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ๊ณผ ์ •๋ถ„๋ฅ˜ ์ˆ˜๋ฅผ ํ•จ๊ป˜ ๋ณด๋ฉด, ์ด ๋ณ€ํ™”๋Š” ๋‹จ์ˆœํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ผ๊ธฐ๋ณด๋‹ค decision boundary์˜ ์žฌ์กฐ์ •์— ๊ฐ€๊น๋‹ค.

  • kitchen_dining -> restaurant_cafe: 117 -> 77๋กœ ๊ฐ์†Œ
  • kitchen_dining ์ •๋ถ„๋ฅ˜ ์ˆ˜: 174 -> 232๋กœ ์ฆ๊ฐ€
  • mountain_valley ์ •๋ถ„๋ฅ˜ ์ˆ˜: 362 -> 400์œผ๋กœ ์ฆ๊ฐ€
  • office_study ์ •๋ถ„๋ฅ˜ ์ˆ˜: 482 -> 509๋กœ ์ฆ๊ฐ€

์ฆ‰ vanilla text model์€ ๋ชจ๋“  semantic neighbor๋ฅผ ๊ฐ•์ œ๋กœ ๋–ผ์–ด ๋†“๊ธฐ๋ณด๋‹ค, ๊ฐ™์€ ์ƒ์œ„ ์˜๋ฏธ ๊ณต๊ฐ„ ์•ˆ์—์„œ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ธ๋‹ค.

InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์–‘์ƒ์ด ๋‹ค์‹œ ๋‹ฌ๋ผ์ง„๋‹ค. ์ตœ์ข… accuracy๊ฐ€ 60.75%๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ”๊ณ , confusion report์—์„œ๋„ ์ผ๋ถ€ ํด๋ž˜์Šค์˜ ์ •๋ถ„๋ฅ˜ ์ˆ˜๊ฐ€ ๋” ๊ฐ•ํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • bedroom recall: 0.8200
  • mountain_valley recall: 0.7300
  • office_study recall: 0.7286
  • open_field_landscape recall: 0.7460
  • street_downtown recall: 0.7500

๋ฐ˜๋ฉด ์—ฌ์ „ํžˆ ์–ด๋ ค์šด ํด๋ž˜์Šค๋„ ๋‚จ์•„ ์žˆ๋‹ค.

  • public_large_indoor recall: 0.3217
  • transportation_hub_road recall: 0.3533
  • corridor_lobby recall: 0.4825
  • waterfront recall: 0.4840

๋”ฐ๋ผ์„œ confusion matrix ๊ด€์ ์—์„œ ๋ณด๋ฉด, vanilla text cross-attention์€ semantic smoothing ์ชฝ์— ๊ฐ€๊น๊ณ , InfoNCE๋Š” ๊ทธ ์œ„์—์„œ class-aware separation์„ ์ผ๋ถ€ ํšŒ๋ณตํ•˜๋ฉด์„œ ์ตœ์ข… accuracy๊นŒ์ง€ ๋Œ์–ด์˜ฌ๋ฆฐ variant๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

7.3 UMAP Visualization

Triplet UMAP comparison:

Triplet UMAP

UMAP์€ ์ „์ฒด latent space์˜ global arrangement๋ฅผ ๊ฐ€์žฅ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์‹œ๊ฐํ™”์ด๋‹ค. Visual-only baseline์—์„œ๋Š” ์ผ๋ถ€ ํด๋ž˜์Šค๊ฐ€ ๊ตญ์†Œ์ ์œผ๋กœ ๋ชจ์—ฌ ์žˆ์ง€๋งŒ, ์ „์ฒด์ ์œผ๋กœ๋Š” ์ค‘์•™ ์˜์—ญ์— ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๊ฐ€ ๋„“๊ฒŒ ์„ž์—ฌ ์žˆ์œผ๋ฉฐ class boundary๊ฐ€ ๋ถˆ๊ทœ์น™ํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๋‹ค. ํŠนํžˆ kitchen_dining, restaurant_cafe, public_large_indoor, residential_outdoor, transportation_hub_road ๊ฐ™์€ ํด๋ž˜์Šค๋“ค์ด ๋„“์€ ์ค‘์‹ฌ๋ถ€์—์„œ ๋’ค์„ž์ด๋Š” ๊ฒฝํ–ฅ์ด ๋ณด์ธ๋‹ค.

Vanilla text cross-attention์œผ๋กœ ๊ฐ€๋ฉด latent๋Š” ๋‹จ์ˆœํ•œ ์  ๊ตฌ๋ฆ„(cloud)๋ณด๋‹ค ๋” ๊ธธ๊ฒŒ ์ด์–ด์ง„ semantic manifold ํ˜•ํƒœ๋กœ ์žฌ๋ฐฐ์น˜๋œ๋‹ค. ๊ฐ™์€ ํด๋ž˜์Šค ์ƒ˜ํ”Œ๋“ค์ด baseline๋ณด๋‹ค ๋” coherentํ•œ ์ž‘์€ ๋ฉ์–ด๋ฆฌ๋‚˜ branch๋กœ ์ •๋ˆ๋˜๋Š” ๊ฒฝํ–ฅ์ด ๋ณด์ด์ง€๋งŒ, ๋™์‹œ์— semantically ๊ฐ€๊นŒ์šด ํด๋ž˜์Šค๋“ค์€ ์„œ๋กœ ๋” ๊ฐ€๊นŒ์šด ๊ณตํ†ต ๊ณต๊ฐ„ ์•ˆ์œผ๋กœ ๋Œ๋ ค ๋“ค์–ด๊ฐ„๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์•ž ์ ˆ confusion matrix์—์„œ ๊ด€์ฐฐ๋œ semantic smoothing์˜ ๊ธฐํ•˜ํ•™์  ํ‘œํ˜„์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๊ตฌ์กฐ๊ฐ€ ๋‹ค์‹œ ํ•œ ๋‹จ๊ณ„ ๋ฐ”๋€๋‹ค. semantic manifold ์ž์ฒด๋Š” ์œ ์ง€๋˜์ง€๋งŒ, ํด๋ž˜์Šค ๊ฒฝ๊ณ„๊ฐ€ ๋” ๋˜๋ ทํ•ด์ง€๊ณ  ์ค‘์‹ฌ๋ถ€์˜ ๊ณผ๋„ํ•œ ํ˜ผํ•ฉ์ด ์ค„์–ด๋“ ๋‹ค. ์ฆ‰ InfoNCE๋Š” vanilla text model์ด ๋งŒ๋“  semantic prior๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ๊ทธ ์œ„์— class-aware separation์„ ๋‹ค์‹œ ๊ฐ•ํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

7.4 t-SNE Visualization

Triplet t-SNE comparison:

Triplet t-SNE

t-SNE๋Š” UMAP๋ณด๋‹ค ๋” local structure์™€ neighborhood ๊ด€๊ณ„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์‹œ๊ฐํ™”๋‹ค. Baseline์—์„œ๋Š” ํด๋ž˜์Šค๋ณ„๋กœ ๊ตญ์†Œ ๊ตฐ์ง‘์ด ์กด์žฌํ•˜๋”๋ผ๋„ ์ „์ฒด์ ์œผ๋กœ ๋งŽ์€ ์ƒ˜ํ”Œ์ด ์ค‘์•™ ๋Œ€์—ญ๊ณผ ์ธ์ ‘ ์˜์—ญ์— ์„ž์—ฌ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ambiguity๊ฐ€ ํฐ ํด๋ž˜์Šค๋“ค์ด ํ•˜๋‚˜์˜ ๋„“์€ ๋  ์•ˆ์—์„œ ์–ฝํ˜€ ์žˆ๋‹ค.

Vanilla text cross-attention์—์„œ๋Š” ์ด ๊ตฌ์กฐ๊ฐ€ ๋” ๊ธธ๊ณ  ์ผ๊ด€๋œ ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง„ ๋  ํ˜•ํƒœ ๋˜๋Š” ๊ณก์„ ํ˜• ๊ตฐ์ง‘์œผ๋กœ ๋ฐ”๋€๋‹ค. ์ด๋Š” latent๊ฐ€ ๋‹จ์ˆœํžˆ ์••์ถ•๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ class-specific semantic axis ์œ„์— ๋ฐฐ์น˜๋˜๊ณ  ์žˆ์Œ์„ ๋œปํ•œ๋‹ค. ๋‹ค๋งŒ ์ด ๋‹จ๊ณ„์—์„œ๋Š” semantic neighbor๋ผ๋ฆฌ์˜ ๊ฐ„๊ฒฉ์ด ์ค„์–ด๋“œ๋Š” ๊ตฌ๊ฐ„๋„ ํ•จ๊ป˜ ์ƒ๊ธด๋‹ค.

InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด semantic grouping์€ ์œ ์ง€๋˜๋ฉด์„œ๋„ class๋ณ„ band๊ฐ€ baseline๊ณผ vanilla text๋ณด๋‹ค ๋” ๋ถ„๋ช…ํ•˜๊ฒŒ ๋‚˜๋‰˜๋Š” ๊ฒฝํ–ฅ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ t-SNE ๊ด€์ ์—์„œ๋„ baseline -> semantic smoothing -> class-aware re-separation์ด๋ผ๋Š” 3๋‹จ๊ณ„ ๋ณ€ํ™”๊ฐ€ ๋น„๊ต์  ์„ ๋ช…ํ•˜๊ฒŒ ๊ด€์ฐฐ๋œ๋‹ค.

7.5 Quantitative Latent Metrics

์ด ์ ˆ์˜ ์ˆ˜์น˜๋“ค์€ "๊ฐ™์€ ํด๋ž˜์Šค ์ƒ˜ํ”Œ์€ ์„œ๋กœ ๊ฐ€๊น๊ณ , ๋‹ค๋ฅธ ํด๋ž˜์Šค ์ƒ˜ํ”Œ์€ ์„œ๋กœ ๋ฉ€์–ด์•ผ ์ข‹์€ ํ‘œํ˜„"์ด๋ผ๋Š” ์•„์ฃผ ์ง๊ด€์ ์ธ ๊ธฐ์ค€์„ ์ˆซ์ž๋กœ ๋ฐ”๊พผ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ cosine similarity๋Š” ๋‘ feature vector์˜ ๋ฐฉํ–ฅ์ด ์–ผ๋งˆ๋‚˜ ๋น„์Šทํ•œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ฐ’์ด ํด์ˆ˜๋ก ๋‘ ์ƒ˜ํ”Œ์ด latent space์—์„œ ๋” ๋น„์Šทํ•˜๊ฒŒ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Œ์„ ๋œปํ•œ๋‹ค.

same-vs-different cosine margin์€ ๊ฐ™์€ ํด๋ž˜์Šค๋ผ๋ฆฌ์˜ ํ‰๊ท  ์œ ์‚ฌ๋„์—์„œ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ผ๋ฆฌ์˜ ํ‰๊ท  ์œ ์‚ฌ๋„๋ฅผ ๋บ€ ๊ฐ’์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฐ’์ด ํด์ˆ˜๋ก "๊ฐ™์€ ํด๋ž˜์Šค๋Š” ๋” ๋ชจ์ด๊ณ , ๋‹ค๋ฅธ ํด๋ž˜์Šค๋Š” ๋” ๋ถ„๋ฆฌ๋˜๋Š”" ๊ตฌ์กฐ๊ฐ€ ๊ฐ•ํ•˜๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. silhouette score๋Š” ๊ฐ ์ƒ˜ํ”Œ์ด ์ž๊ธฐ ๊ตฐ์ง‘ ์•ˆ์—๋Š” ์ž˜ ์†ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ตฐ์ง‘๊ณผ๋Š” ์ž˜ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋ฅผ ๋ณด๋Š” ์ง€ํ‘œ๋กœ, ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์ „์ฒด ๊ตฐ์ง‘ ๊ตฌ์กฐ๊ฐ€ ๋” ๋šœ๋ ทํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค.

Full 2520-sample latent comparison ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Metric Baseline Text Cross-Attention Text Cross-Attention + InfoNCE
same-vs-different cosine margin 0.1833 0.1886 0.3663
silhouette score 0.07863 0.07892 0.11291

์ด ์ˆ˜์น˜๋“ค์€ UMAP๊ณผ t-SNE์—์„œ ๊ด€์ฐฐํ•œ ์‹œ๊ฐ์  ์ธ์ƒ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ๋’ท๋ฐ›์นจํ•œ๋‹ค. Vanilla text model์€ latent geometry๋ฅผ ์กฐ๊ธˆ ๋” semanticํ•˜๊ฒŒ ์ •๋ˆํ•˜์ง€๋งŒ, ๊ทธ ๊ฐœ์„  ํญ์€ ๋น„๊ต์  ์™„๋งŒํ•˜๋‹ค.

๋ฐ˜๋ฉด InfoNCE๋Š” ๋‘ ์ง€ํ‘œ๋ฅผ ๋ชจ๋‘ ํฌ๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆฐ๋‹ค. same-vs-different cosine margin์ด ๊ฑฐ์˜ ๋‘ ๋ฐฐ ์ˆ˜์ค€์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๊ณ , silhouette score ์—ญ์‹œ ๋ˆˆ์— ๋„๊ฒŒ ์ƒ์Šนํ–ˆ๋‹ค. ์ด๋Š” ์ด๋ฒˆ ์ตœ์ข… InfoNCE๊ฐ€ ๋‹จ์ˆœํžˆ accuracy๋งŒ ์ข‹์•„์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, latent space ์ „์ฒด๋ฅผ ๋” class-awareํ•˜๊ณ  ๋” ๊ตฌ์กฐํ™”๋œ geometry๋กœ ์žฌํŽธํ–ˆ๋‹ค๋Š” ๊ฐ•ํ•œ ๊ทผ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

7.6 Intra-Class and Inter-Class Similarity

์ด ์ ˆ์˜ ๋‘ ๊ทธ๋ฆผ์€ "ํด๋ž˜์Šค ๋‚ด๋ถ€ ์‘์ง‘๋„"์™€ "ํด๋ž˜์Šค ์‚ฌ์ด ๋ถ„๋ฆฌ๋„"๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ๋ณด์—ฌ์ค€๋‹ค. ๋จผ์ € boxplot์€ ๋งŽ์€ ์ƒ˜ํ”Œ์Œ์˜ ๋ถ„ํฌ๋ฅผ ์š”์•ฝํ•œ ๊ทธ๋ฆผ์ด๋‹ค. ๊ฐ€์šด๋ฐ ์„ ์€ ๋Œ€ํ‘œ๊ฐ’(์ค‘์•™๊ฐ’), ์ƒ์ž์˜ ๋†’์ด๋Š” ๊ฐ’๋“ค์ด ์ฃผ๋กœ ๋ชฐ๋ ค ์žˆ๋Š” ๋ฒ”์œ„, ๋ฐ”๊นฅ์œผ๋กœ ๋ป—๋Š” ์„ ์€ ๋” ๋„“์€ ๋ถ„ํฌ ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. ์ฆ‰ boxplot์€ "๋Œ€์ฒด๋กœ ์–ด๋””์— ๊ฐ’์ด ๋ชจ์—ฌ ์žˆ๋Š”๊ฐ€"๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฝ๊ฒŒ ํ•ด์ค€๋‹ค.

์—ฌ๊ธฐ์„œ same-class cosine์€ ๊ฐ™์€ ํด๋ž˜์Šค ์ƒ˜ํ”Œ๋ผ๋ฆฌ์˜ ์œ ์‚ฌ๋„์ด๊ณ , different-class cosine์€ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค ์ƒ˜ํ”Œ๋ผ๋ฆฌ์˜ ์œ ์‚ฌ๋„์ด๋‹ค. ์ข‹์€ ํ‘œํ˜„์ด๋ผ๋ฉด ๋ณดํ†ต same-class cosine์€ ๋†’๊ณ , different-class cosine์€ ๋‚ฎ๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. Heatmap์€ ํด๋ž˜์Šค ์ „์ฒด๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” centroid๋ผ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ƒ‰์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ด๋‹ค. ๋ฐ์„์ˆ˜๋ก ๋‘ ํด๋ž˜์Šค ์ค‘์‹ฌ์ด ๋” ๋ฉ€๊ณ , ์–ด๋‘์šธ์ˆ˜๋ก ๋” ๊ฐ€๊น๋‹ค. ๋”ฐ๋ผ์„œ heatmap์€ ์ƒ˜ํ”Œ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ "ํด๋ž˜์Šค ์ „์ฒด ๊ตฌ์กฐ"๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

Triplet intra/inter-class cosine similarity boxplot:

Triplet Similarity Boxplot

Triplet centroid cosine distance heatmap:

Triplet Centroid Heatmaps

Boxplot์„ ๋ณด๋ฉด baseline์—์„œ๋Š” same-class cosine๊ณผ different-class cosine์ด ๋น„๊ต์  ๋‚ฎ์€ ์˜์—ญ์— ๋ถ„ํฌํ•œ๋‹ค. Vanilla text cross-attention์—์„œ๋Š” same-class cosine์ด ํฌ๊ฒŒ ์ƒ์Šนํ•˜์ง€๋งŒ, different-class cosine ์—ญ์‹œ ํ•จ๊ป˜ ์ƒ์Šนํ•œ๋‹ค. ์ด๋Š” text ์ฃผ์ž…์ด ๊ฐ™์€ class sample๋งŒ ๋” ๊ฐ€๊น๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, latent space ์ „์ฒด๋ฅผ ๋” ๋†’์€ cosine similarity ์˜์—ญ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ํšจ๊ณผ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ฆ‰ class ๋‚ด๋ถ€ ์‘์ง‘๊ณผ ํ•จ๊ป˜ ์ „์—ญ์ ์ธ semantic smoothing๋„ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค.

ํ•˜์ง€๋งŒ InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์–‘์ƒ์ด ๋‹ค์‹œ ๋‹ฌ๋ผ์ง„๋‹ค. same-class cosine์€ ๋†’์€ ์ˆ˜์ค€์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, different-class cosine์ด vanilla text์— ๋น„ํ•ด ๋” ๋ถ„๋ฆฌ๋œ ํ˜•ํƒœ๋ฅผ ๋ณด์ธ๋‹ค. ์ฆ‰ InfoNCE๋Š” ๋‹จ์ˆœ smoothing ์ƒํƒœ์—์„œ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ ์œ„์— class-aware separation์„ ๋‹ค์‹œ ๋ณต์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

Heatmap์€ ์ด ํ•ด์„์„ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋’ท๋ฐ›์นจํ•œ๋‹ค. Baseline centroid cosine distance๋Š” ๋น„๊ต์  ๋„“๊ฒŒ ํผ์ ธ ์žˆ์ง€๋งŒ, vanilla text cross-attention heatmap์€ ์ „์ฒด์ ์œผ๋กœ ๋” ์–ด๋‘์›Œ์ง„๋‹ค. ์ด๋Š” centroid๋“ค์ด ๊ณตํ†ต semantic manifold ์•ˆ์œผ๋กœ ๋” ๊ฐ€๊นŒ์ด ๋ชจ์ธ๋‹ค๋Š” ๋œป์ด๋ฉฐ, ์•ž์„œ ๋ณธ semantic smoothing ํ•ด์„๊ณผ ์ผ์น˜ํ•œ๋‹ค.

๋ฐ˜๋ฉด InfoNCE heatmap์€ ๋‹ค์‹œ ํ›จ์”ฌ ๋ฐ์•„์ง„๋‹ค. ์ด๋Š” centroid distance๊ฐ€ ๋‹ค์‹œ ์ปค์กŒ๋‹ค๋Š” ๋œป์ด๊ณ , ๋‹จ์ˆœํ•œ smoothing์ด ์•„๋‹ˆ๋ผ semantic prior ์œ„์—์„œ class separation์„ ๋” ๊ฐ•ํ•˜๊ฒŒ ํšŒ๋ณตํ–ˆ๋‹ค๋Š” ์ ์„ ๋ณด์—ฌ์ค€๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์‹œ๊ฐํ™”๋Š” ์„ธ ๋ชจ๋ธ์˜ ์ฐจ์ด๋ฅผ ๋งค์šฐ ์„ ๋ช…ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ์ค€๋‹ค.

  • Baseline: visual cue ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ
  • Vanilla text: semantic smoothing
  • InfoNCE: smoothing ์œ„์˜ class-aware re-separation

7.7 Text Prototype Alignment

์ด ์ ˆ์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € text prototype ๊ฐœ๋…์ด ํ•„์š”ํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ text prototype์€ ๊ฐ ์žฅ๋ฉด ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ค€๋น„ํ•œ ํ…์ŠคํŠธ ์„ค๋ช…์„ CLIP text encoder๋กœ ์ž„๋ฒ ๋”ฉํ•œ "ํด๋ž˜์Šค์˜ ์–ธ์–ด์  ๊ธฐ์ค€์ "์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด waterfront๋‚˜ restaurant_cafe์—๋Š” ๊ฐ๊ฐ ๊ทธ ์žฅ๋ฉด์„ ์„ค๋ช…ํ•˜๋Š” ํ…์ŠคํŠธ ๋ฒกํ„ฐ๊ฐ€ ํ•˜๋‚˜์”ฉ ๋Œ€์‘๋œ๋‹ค. ๋ชจ๋ธ์ด ์–ด๋–ค ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ๋•Œ, ๊ทธ ์ด๋ฏธ์ง€์˜ latent representation์ด ์ž๊ธฐ ์ •๋‹ต ํด๋ž˜์Šค์˜ text prototype์— ๋” ๊ฐ€๊นŒ์›Œ์ง€๋ฉด "์–ธ์–ด์ ์œผ๋กœ๋„ ๊ทธ ์žฅ๋ฉด ์˜๋ฏธ์™€ ์ž˜ ๋งž๋Š”๋‹ค"๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆผ ์† correct-class cosine์€ ์ƒ˜ํ”Œ์ด ์ž๊ธฐ ์ •๋‹ต ํด๋ž˜์Šค prototype๊ณผ ์–ผ๋งˆ๋‚˜ ๋น„์Šทํ•œ์ง€๋ฅผ ๋œปํ•˜๊ณ , correct-vs-rival margin์€ ์ •๋‹ต prototype๊ณผ์˜ ์œ ์‚ฌ๋„๊ฐ€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒฝ์Ÿ ํด๋ž˜์Šค prototype๋ณด๋‹ค ์–ผ๋งˆ๋‚˜ ๋” ํฐ์ง€๋ฅผ ๋œปํ•œ๋‹ค. margin์ด ์–‘์ˆ˜์ด๋ฉด ์ •๋‹ต prototype ์ชฝ์ด ๋” ๊ฐ€๊น๋‹ค๋Š” ๋œป์ด๊ณ , ์Œ์ˆ˜์ด๋ฉด ์˜คํžˆ๋ ค ๊ฒฝ์Ÿ ํด๋ž˜์Šค prototype ์ชฝ์ด ๋” ๊ฐ€๊น๋‹ค๋Š” ๋œป์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ทธ๋ฆผ์€ "๋ชจ๋ธ์ด ํ…์ŠคํŠธ๋ฅผ ๋‹จ์ˆœ ์ฐธ๊ณ  ์ •๋ณด๋กœ ์“ฐ๋Š”๊ฐ€, ์•„๋‹ˆ๋ฉด ์‹ค์ œ๋กœ ์ •๋‹ต ์˜๋ฏธ ๋ฐฉํ–ฅ์œผ๋กœ latent๋ฅผ ์ •๋ ฌํ•˜๋Š”๊ฐ€"๋ฅผ ์ง์ ‘ ๋ณด์—ฌ์ค€๋‹ค.

Triplet prototype alignment overview:

Triplet Prototype Alignment

Vanilla text cross-attention์„ ๋ณด๋ฉด, correct-class cosine ๋ถ„ํฌ๊ฐ€ 0 ๋ถ€๊ทผ์— ๋จธ๋ฌผ๊ณ  correct-vs-rival margin๋„ ์ƒ๋‹น ๋ถ€๋ถ„ ์Œ์ˆ˜ ์ชฝ์— ๋ถ„ํฌํ•œ๋‹ค. ์‹ค์ œ full180 report ๊ธฐ์ค€์œผ๋กœ:

  • mean_correct_class_cosine: 0.0351
  • mean_correct_vs_rival_margin: -0.1204
  • prototype_retrieval_accuracy: 0.0972

์ฆ‰ vanilla text model์€ text๋ฅผ ์“ฐ๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๋งŽ์€ ์ƒ˜ํ”Œ์ด ์—ฌ์ „ํžˆ ์ •๋‹ต prototype๋ณด๋‹ค rival prototype์— ๋” ๊ฐ€๊น๋‹ค. ๊ทธ๋Ÿผ์—๋„ accuracy๊ฐ€ baseline๋ณด๋‹ค ์ข‹์•„์ง„๋‹ค๋Š” ์ ์€, ์ด ๋ชจ๋ธ์ด text๋ฅผ strict nearest-prototype decision rule๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ธฐ๋ณด๋‹ค latent geometry๋ฅผ semanticํ•˜๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” anchor๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋œปํ•œ๋‹ค.

๋ฐ˜๋ฉด InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ถ„ํฌ๊ฐ€ ์งˆ์ ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค.

  • mean_correct_class_cosine: 0.4575
  • mean_correct_vs_rival_margin: 0.1465
  • prototype_retrieval_accuracy: 0.6016

์ฆ‰ InfoNCE๋Š” ๋‹จ์ˆœํžˆ text feature๋ฅผ ์„ž๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, fused latent๊ฐ€ ์ž์‹ ์˜ ์ •๋‹ต class text prototype์„ rival prototype๋ณด๋‹ค ๋” ๊ฐ€๊น๊ฒŒ ๋ณด๋„๋ก loss ์ฐจ์›์—์„œ ์ง์ ‘ ์••๋ฐ•ํ•œ๋‹ค. ์ด ๊ทธ๋ฆผ์€ InfoNCE๊ฐ€ ์ •๋ง๋กœ ์˜๋„ํ•œ ์ผ์„ ํ–ˆ๋‹ค๋Š” ๊ฐ€์žฅ ์ง์ ‘์ ์ธ ๊ทผ๊ฑฐ ์ค‘ ํ•˜๋‚˜๋‹ค.

7.8 Confusion Pair Analysis

Triplet confusion-pair UMAP comparison:

Triplet Pairwise UMAP

์ด ๊ทธ๋ฆผ์€ ์ „์ฒด latent space๋ณด๋‹ค ๋” ์ง์ ‘์ ์œผ๋กœ, ์‹ค์ œ๋กœ ์ž์ฃผ ํ˜ผ๋™๋˜๋Š” class pair์—์„œ ์„ธ ๋ชจ๋ธ์ด class boundary๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ํ˜•์„ฑํ•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

kitchen_dining vs restaurant_cafe์—์„œ๋Š” baseline์ด ๋„“์€ ํ˜ผํ•ฉ ์˜์—ญ์„ ๋ณด์ด๊ณ , vanilla text์—์„œ๋Š” semantic neighbor ๋‚ด๋ถ€์˜ branch๊ฐ€ ์ข€ ๋” ์ •๋ฆฌ๋œ๋‹ค. InfoNCE์—์„œ๋Š” ์ด ์œ„์— ์ถ”๊ฐ€์ ์ธ ๋ถ„๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๋ฉฐ, ๋‘ ํด๋ž˜์Šค๊ฐ€ ์ ์œ ํ•˜๋Š” ์˜์—ญ์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋” ๋ถ„๋ช…ํ•ด์ง€๋Š” ๊ฒฝํ–ฅ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

waterfront vs mountain_valley์—์„œ๋„ ์„ธ ๋‹จ๊ณ„๊ฐ€ ๋น„๊ต์  ๋ช…ํ™•ํ•˜๋‹ค. baseline์—์„œ๋Š” ์ž์—ฐ scene ๊ณ„์—ด ๋‘ ํด๋ž˜์Šค๊ฐ€ ์ค‘์•™ ์—ฐ๊ฒฐ๋ถ€๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์„ž์ด๊ณ , vanilla text์—์„œ๋Š” ๊ฐ™์€ ์ž์—ฐ manifold ์•ˆ์—์„œ semantic organization์ด ๋” ์ •๋ˆ๋œ๋‹ค. InfoNCE์—์„œ๋Š” ์ด manifold๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ class๋ณ„ sub-region ๊ฒฝ๊ณ„๊ฐ€ ๋” ๋˜๋ ทํ•ด์ง„๋‹ค.

public_large_indoor vs corridor_lobby๋Š” semantic overlap์ด ํฐ ์‹ค๋‚ด ๊ณ„์—ด ์Œ์ธ๋ฐ, baseline์—์„œ๋Š” ๋‘ ํด๋ž˜์Šค๊ฐ€ ๊ธธ๊ฒŒ ๋’ค์„ž์ด๊ณ , vanilla text์—์„œ๋Š” branch ๊ธฐ๋ฐ˜ ์žฌ๋ฐฐ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค. InfoNCE์—์„œ๋Š” ์—ฌ์ „ํžˆ ์–ด๋ ค์šด ์Œ์œผ๋กœ ๋‚จ์ง€๋งŒ, class๊ฐ€ ๋จธ๋ฌด๋Š” ์˜์—ญ์˜ ์œค๊ณฝ์€ baseline๊ณผ vanilla text๋ณด๋‹ค ๋” ๋ถ„๋ช…ํ•˜๋‹ค.

์ข…ํ•ฉํ•˜๋ฉด pairwise UMAP์€ ์„ธ ๋ชจ๋ธ์˜ ์ฐจ์ด๋ฅผ ์ž˜ ๋ณด์—ฌ์ค€๋‹ค.

  • Baseline: ํ˜ผํ•ฉ ๊ตฌ์กฐ๊ฐ€ ํผ
  • Vanilla text: semantic neighbor ๋‚ด๋ถ€ ์žฌ๋ฐฐ์น˜
  • InfoNCE: ์žฌ๋ฐฐ์น˜ ์œ„์— class boundary ๊ฐ•ํ™”

7.8.1 Scene Confusion Case Gallery

๋‹ค์Œ ๊ฐค๋Ÿฌ๋ฆฌ๋Š” confusion matrix์™€ pairwise UMAP์—์„œ ๊ด€์ฐฐ๋œ ์ฐจ์ด๋ฅผ ์‹ค์ œ ์ƒ˜ํ”Œ ์ˆ˜์ค€์—์„œ ๋ณด์—ฌ์ค€๋‹ค. ๊ฐ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ ์—ด์€ ์›๋ณธ ์ด๋ฏธ์ง€์™€ ์ •๋‹ต class์ด๊ณ , ๊ทธ ๋‹ค์Œ ์„ธ ์—ด์€ ๋™์ผํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด baseline, vanilla text, InfoNCE๊ฐ€ ๊ฐ๊ฐ ์–ด๋–ค label์„ ์˜ˆ์ธกํ–ˆ๋Š”์ง€์™€ confidence๋ฅผ ํ•จ๊ป˜ ๋ณด์—ฌ์ค€๋‹ค.

Scene Confusion Case Gallery

์ฒซ ๋ฒˆ์งธ ํ–‰์€ baseline์€ ํ‹€๋ ธ์ง€๋งŒ InfoNCE๋Š” ๋งž์ถ˜ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ •๋‹ต์€ kitchen_dining์ธ๋ฐ baseline์€ ์ด๋ฅผ restaurant_cafe๋กœ ์˜ˆ์ธกํ•œ๋‹ค. ๋ฐ˜๋ฉด vanilla text์™€ InfoNCE๋Š” ๋ชจ๋‘ kitchen_dining์œผ๋กœ ํšŒ๋ณตํ•˜๋ฉฐ, ํŠนํžˆ InfoNCE๋Š” ๋” ๋†’์€ confidence๋ฅผ ๋ณด์ธ๋‹ค. ์ด๋Š” text guidance๊ฐ€ food-related indoor scene pair ์•ˆ์—์„œ decision boundary๋ฅผ ๋” ์•ˆ์ •ํ™”ํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

๋‘ ๋ฒˆ์งธ ํ–‰์€ ์„ธ ๋ชจ๋ธ์ด ๋ชจ๋‘ ์—ฌ์ „ํžˆ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์‚ฌ๋ก€๋‹ค. ์ •๋‹ต์€ residential_outdoor์ด์ง€๋งŒ ์„ธ ๋ชจ๋ธ ๋ชจ๋‘ open_field_landscape๋กœ ์˜ˆ์ธกํ•œ๋‹ค. ์ด ์žฅ๋ฉด์€ ์•ผ์™ธ ์ž”๋””์™€ ์ธ๋ฌผ ์ค‘์‹ฌ ๊ตฌ์„ฑ์ด ๊ฐ•ํ•˜๊ณ , ์ฃผ๊ฑฐ ๊ณต๊ฐ„์˜ ๊ตฌ์กฐ์  ๋‹จ์„œ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์•ฝํ•ด ๋ณด์ธ๋‹ค. ์ด ํ–‰์€ text guidance๊ฐ€ representation์„ ๊ฐœ์„ ํ•˜๋”๋ผ๋„, ์ž…๋ ฅ ์ด๋ฏธ์ง€ ์ž์ฒด์— class-defining cue๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ambiguity๊ฐ€ ์—ฌ์ „ํžˆ ๋‚จ์„ ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

์„ธ ๋ฒˆ์งธ ํ–‰์€ semantic neighbor ๋Œ€ํ‘œ ์‚ฌ๋ก€์ด๋‹ค. ์ •๋‹ต์€ restaurant_cafe์ด์ง€๋งŒ ์„ธ ๋ชจ๋ธ ๋ชจ๋‘ kitchen_dining์œผ๋กœ ์˜ˆ์ธกํ•œ๋‹ค. ์ฆ‰ ์ด ๊ฒฝ์šฐ์—๋Š” text guidance์™€ InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ semantic neighbor ๋‚ด๋ถ€์˜ ๊ฒฝ๊ณ„๊ฐ€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์ง€๋Š” ์•Š์•˜๋‹ค. ๋‹ค๋งŒ ์„ธ ๋ชจ๋ธ ๋ชจ๋‘ ๋†’์€ confidence๋กœ ๊ฐ™์€ ํ˜ผ๋™์„ ๋ณด์ธ๋‹ค๋Š” ์ ์€, ์ด ์ƒ˜ํ”Œ์ด ๋‹จ์ˆœ noisy outlier๋ผ๊ธฐ๋ณด๋‹ค ๋‘ ํด๋ž˜์Šค๊ฐ€ ์‹ค์ œ๋กœ ๋งค์šฐ ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜๋˜๋Š” hard case์ž„์„ ๋ณด์—ฌ์ค€๋‹ค. ์ด๋Ÿฐ ์‚ฌ๋ก€๋Š” ์™œ prototype alignment๋‚˜ class-aware separation์ด ํ•„์š”ํ–ˆ๋Š”์ง€๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

7.9 Attention Map Interpretation

Attention map์€ ๋ชจ๋ธ์ด ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ๋•Œ ์–ด๋А ์œ„์น˜๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์ฐธ๊ณ ํ•˜๋Š”์ง€๋ฅผ ๋ฐ๊ธฐ๋‚˜ ์ƒ‰์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ์‹œ๊ฐํ™”๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ๊ฐ•ํ•˜๊ฒŒ ํ‘œ์‹œ๋œ ์˜์—ญ์€ ๊ทธ ์žฅ๋ฉด์„ ํŒ๋‹จํ•˜๋Š” ๋ฐ ๋” ๋งŽ์ด ์‚ฌ์šฉ๋œ ๋ถ€๋ถ„์œผ๋กœ ํ•ด์„ํ•œ๋‹ค. ๋‹ค๋งŒ attention map์€ "๋ชจ๋ธ์ด ์ •ํ™•ํžˆ ์™œ ๊ทธ๋ ‡๊ฒŒ ํŒ๋‹จํ–ˆ๋Š”์ง€"๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ฆ๋ช…ํ•˜๋Š” ๋„๊ตฌ๋Š” ์•„๋‹ˆ๋ฉฐ, ์–ด๋””์— ์ฃผ์˜๋ฅผ ๋‘๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ •์„ฑ์  ๋ณด์กฐ ์ž๋ฃŒ์— ๊ฐ€๊น๋‹ค.

์ฆ‰ ์ด ์ ˆ์˜ Visualization์€ ์„ฑ๋Šฅ ์ˆ˜์น˜๋ฅผ ์ง์ ‘ ์„ค๋ช…ํ•˜๋Š” ์ง€ํ‘œ๋ผ๊ธฐ๋ณด๋‹ค, ์•ž์„  confusion matrix๋‚˜ latent visualization์—์„œ ๋‚˜ํƒ€๋‚œ ์ฐจ์ด๊ฐ€ ์‹ค์ œ ์ด๋ฏธ์ง€ ๊ณต๊ฐ„์—์„œ๋Š” ์–ด๋–ค ์‹์˜ ์ฃผ์˜ ํŒจํ„ด์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋”ฐ๋ผ์„œ attention map์€ ์ •๋Ÿ‰ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ๋ชจ๋ธ์ด ์ฝ๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์  ๋‹จ์„œ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๋„๋ก ๋•๋Š” ์—ญํ• ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค.

Vanilla text cross-attention examples:

Text Attention Examples

InfoNCE attention examples:

InfoNCE Attention Examples

๊ฐ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ ์—ด์€ ์›๋ณธ ์ด๋ฏธ์ง€์ด๊ณ , ๋‘ ๋ฒˆ์งธ ์—ด์˜ True-class attention์€ ์ •๋‹ต ํด๋ž˜์Šค logit์„ ๊ธฐ์ค€์œผ๋กœ ์—ญ์ถ”์ ํ•œ attention map์ด๋‹ค. ์ด๋Š” "์ด ์ด๋ฏธ์ง€๊ฐ€ ์‹ค์ œ ์ •๋‹ต ํด๋ž˜์Šค๋ผ๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋ชจ๋ธ์ด ์–ด๋А ์˜์—ญ์„ ๊ทผ๊ฑฐ๋กœ ๋ณด๋Š”๊ฐ€"๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์„ธ ๋ฒˆ์งธ ์—ด์˜ Pred attention์€ ๋ชจ๋ธ์ด ์‹ค์ œ๋กœ ๊ฐ€์žฅ ๋†’๊ฒŒ ์˜ˆ์ธกํ•œ ํด๋ž˜์Šค logit์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•œ attention map์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์—ด์€ "๋ชจ๋ธ์ด ์ตœ์ข… ์˜ˆ์ธก์„ ๋‚ด๋ฆด ๋•Œ ์‹ค์ œ๋กœ ์–ด๋””๋ฅผ ๋ณด๊ณ  ์žˆ์—ˆ๋Š”๊ฐ€"์— ๋” ๊ฐ€๊น๋‹ค.

์ด๋ฒˆ ๋น„๊ต์—์„œ๋Š” ์—ฌ์„ฏ ๊ฐœ์˜ ๋™์ผํ•œ ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด vanilla text cross-attention๊ณผ InfoNCE attention์„ ๋‚˜๋ž€ํžˆ ๋†“๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํฅ๋ฏธ๋กœ์šด ์ ์€ ๋‘ ๋ชจ๋ธ ๋ชจ๋‘ ๋Œ€๋ถ€๋ถ„์˜ ์ƒ˜ํ”Œ์—์„œ True-class attention๊ณผ Pred attention์ด ๊ฑฐ์˜ ๊ฐ™์€ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋ชจ๋ธ์ด ๋†’์€ confidence๋กœ ์ •๋‹ต์„ ๋งžํž ๋•Œ, ์ตœ์ข… ์˜ˆ์ธก ๋˜ํ•œ ์‹ค์ œ ์ •๋‹ต ํด๋ž˜์Šค์™€ ๊ฑฐ์˜ ๊ฐ™์€ ๊ณต๊ฐ„ ๋‹จ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜•์„ฑ๋˜๊ณ  ์žˆ์Œ์„ ๋œปํ•œ๋‹ค. ํŠนํžˆ InfoNCE ์ชฝ confidence๋Š” 0.960 ~ 0.976 ์ˆ˜์ค€์œผ๋กœ, ๊ฐ™์€ ์ƒ˜ํ”Œ์—์„œ vanilla ๋ชจ๋ธ์˜ 0.761 ~ 0.956๋ณด๋‹ค ์ „๋ฐ˜์ ์œผ๋กœ ๋” ๋†’๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

Vanilla text cross-attention์—์„œ๋Š” attention์ด ๋น„๊ต์  ๋„“์€ semantic region ์œ„์— ํผ์ง€๋Š” ๊ฒฝํ–ฅ์ด ๋ณด์ธ๋‹ค. kitchen_dining์—์„œ๋Š” ์ธ๋ฌผ, ์‹ํƒ, ์ƒ๋ถ€ ์‹ค๋‚ด ๊ตฌ์กฐ๊ฐ€ ํ•จ๊ป˜ ๋„“๊ฒŒ ๋ฎ์ด๋ฉฐ, restaurant_cafe์—์„œ๋Š” ๊ฐ„ํŒ๊ณผ ์ฒœ์žฅ์„ , ์ „๋ฉด ์œ ๋ฆฌ ๊ตฌ์กฐ ์ „๋ฐ˜์ด ํ™œ์„ฑํ™”๋œ๋‹ค. waterfront์—์„œ๋Š” ์ˆ˜ํ‰์„ , ์ˆ˜๋ฉด, ํ•ด์•ˆ์„ ์ด ํ•˜๋‚˜์˜ ํฐ ์žฅ๋ฉด ๋‹จ์œ„๋กœ ์ฝํžˆ๊ณ , mountain_valley์—์„œ๋Š” ์•”์„ ์ ˆ๋ฒฝ๊ณผ ํ•˜๋‹จ ๊ฑด์ถ• ๊ตฌ์กฐ๊ฐ€ ๋™์‹œ์— ๋ฐ˜์‘ํ•œ๋‹ค. public_large_indoor์™€ corridor_lobby์—์„œ๋„ ๊ฐ๊ฐ ์ฒœ์žฅ-์•„์น˜-ํ†ต๋กœ, ๋ฒฝ๋ฉด-๊ธฐ๋‘ฅ-์†Œ์‹ค์ ์ด ๋ชจ๋‘ ๋„“์€ ๋ฒ”์œ„์—์„œ ํ™œ์„ฑํ™”๋œ๋‹ค. ์ด๋Š” vanilla text model์ด ๊ฐœ๋ณ„ object ํ•˜๋‚˜๋ฅผ ๋‚ ์นด๋กญ๊ฒŒ ์ง‘๊ธฐ๋ณด๋‹ค, ์žฅ๋ฉด์„ ๊ทœ์ •ํ•˜๋Š” ๋„“์€ context๋ฅผ semantic anchor์™€ ํ•จ๊ป˜ ์ฝ๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

๋ฐ˜๋ฉด InfoNCE attention์—์„œ๋Š” ๊ฐ™์€ ์žฅ๋ฉด ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๋” ์••์ถ•๋˜๊ณ  class-awareํ•œ ๋ฐ˜์‘ ํŒจํ„ด์ด ๋‚˜ํƒ€๋‚œ๋‹ค. restaurant_cafe์—์„œ๋Š” broad storefront ์ „์ฒด๋ณด๋‹ค ์ค‘์‹ฌ ๊ฐ„ํŒ๊ณผ ์ž…๋ฉด ๊ตฌ์กฐ ์ชฝ hotspot์ด ๋” ๊ฐ•ํ•ด์ง€๊ณ , waterfront์—์„œ๋Š” ๋ฐ”๋‹ค ์ „์ฒด๋ณด๋‹ค ํ•ด์•ˆ์„ ์˜ ๊ณก์„ ๊ณผ ์ˆ˜ํ‰ ๊ฒฝ๊ณ„๊ฐ€ ๋” ๋ถ„๋ช…ํ•˜๊ฒŒ ๊ฐ•์กฐ๋œ๋‹ค. corridor_lobby์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋ณต๋„ ์ „์ฒด๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ขŒ์ธก ๊ธฐ๋‘ฅ์—ด๊ณผ ์ค‘์•™ ์†Œ์‹ค ๋ฐฉํ–ฅ์ด ๋” ์„ ๋ช…ํ•˜๊ฒŒ ๋ถ€๊ฐ๋œ๋‹ค. public_large_indoor ์—ญ์‹œ ์‹ค๋‚ด ์ „์ฒด๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ฎ๊ธฐ๋ณด๋‹ค ์•„์น˜, ์กฐ๋ช…, ์ค‘์•™ ํ†ต๋กœ์ฒ˜๋Ÿผ ๊ณต๊ฐ„ ๊ทœ๋ชจ์™€ ๊ตฌ์กฐ๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ๋‹จ์„œ์— ๋” ์ง‘์ค‘ํ•˜๋Š” ๋ชจ์Šต์ด ๋ณด์ธ๋‹ค. ์ฆ‰ InfoNCE๋Š” semantic prior๋ฅผ ์œ ์ง€ํ•œ ์ฑ„, ์žฅ๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ ๋” ๊ฒฐ์ •์ ์ธ ๊ตฌ์กฐ์  ๋‹จ์„œ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ•œ ๊ฒƒ์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  attention map์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ •์„ฑ์  ๋„๊ตฌ์ด๋ฏ€๋กœ, ์ด๊ฒƒ๋งŒ์œผ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ์›์ธ์„ ๋‹จ์ •ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ๋‹ค๋งŒ ์ด๋ฒˆ matched-sample ๋น„๊ต๋Š” ์ ์–ด๋„ ๋‘ ๋ชจ๋ธ์˜ ์ฐจ์ด๊ฐ€ "๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ๋•Œ ์–ด๋””์— ์ฃผ์˜๋ฅผ ๋‘๋Š”๊ฐ€" ์ˆ˜์ค€์—์„œ๋„ ๋“œ๋Ÿฌ๋‚œ๋‹ค๋Š” ์ ์„ ๋ณด์—ฌ์ค€๋‹ค. ์ •๋ฆฌํ•˜๋ฉด vanilla text cross-attention์ด ๋„“์€ semantic context๋ฅผ ์ฝ๋Š” ์ชฝ์— ๊ฐ€๊น๋‹ค๋ฉด, InfoNCE๋Š” ๊ทธ ์œ„์—์„œ class discrimination์— ๋” ์ง์ ‘์ ์œผ๋กœ ๊ธฐ์—ฌํ•˜๋Š” ๊ณต๊ฐ„ ๋‹จ์„œ๋ฅผ ๋” ์‘์ถ•๋œ ํ˜•ํƒœ๋กœ ๊ฐ•์กฐํ•˜๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ธ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ Chapter 7์˜ ์‹œ๊ฐํ™”๋“ค์„ ์ข…ํ•ฉํ•˜๋ฉด, ์„ธ ๋ชจ๋ธ์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝ๋œ๋‹ค.

  • Visual-only baseline: visual cue ์ค‘์‹ฌ์˜ ๋ถ„๋ฆฌ
  • Text Cross-Attention: semantic smoothing๊ณผ latent reorganization
  • Text Cross-Attention + InfoNCE: semantic prior๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ class-aware separation๊ณผ prototype alignment๋ฅผ ๋™์‹œ์— ๊ฐ•ํ™”

8. Discussion

8.1 What Worked

์ด๋ฒˆ ์‹คํ—˜์—์„œ ๊ฐ€์žฅ ๋ถ„๋ช…ํ•˜๊ฒŒ ํ™•์ธ๋œ ์ ์€, scene classification์—์„œ text prior๊ฐ€ ๋‹จ์ˆœํ•œ ๋ถ€๊ฐ€ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ latent space๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์‹ค์ œ ๊ตฌ์กฐ์  ์‹ ํ˜ธ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Visual-only baseline์€ 59.79%์˜ validation accuracy๋ฅผ ๊ธฐ๋กํ–ˆ๊ณ , vanilla text cross-attention์€ ์ด๋ฅผ 60.56%๊นŒ์ง€ ๋Œ์–ด์˜ฌ๋ ธ๋‹ค. ์ด๋Š” text ์ฃผ์ž…์ด ์‹œ๊ฐ์  feature๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค๊ธฐ๋ณด๋‹ค, ์‹œ๊ฐ์ ์œผ๋กœ ์œ ์‚ฌํ•˜์ง€๋งŒ ์˜๋ฏธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์žฅ๋ฉด๋“ค ์‚ฌ์ด์—์„œ ๋” ์•ˆ์ •์ ์ธ semantic anchor๋ฅผ ์ œ๊ณตํ–ˆ์Œ์„ ์‹œ์‚ฌํ•œ๋‹ค.

๋˜ํ•œ vanilla text cross-attention๊ณผ InfoNCE variant์˜ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๋ฉด, text guidance๊ฐ€ ๋‘ ๋‹จ๊ณ„์— ๊ฑธ์ณ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์ด ๋ณด์ธ๋‹ค. ๋จผ์ € vanilla text cross-attention์€ semantic smoothing๊ณผ latent reorganization์— ๋” ๊ฐ€๊น๋‹ค. UMAP, t-SNE, pairwise UMAP์—์„œ ๋‚˜ํƒ€๋‚˜๋“ฏ์ด ์ด ๋ชจ๋ธ์€ ์„œ๋กœ ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์žฅ๋ฉด๋“ค์„ ๋ณด๋‹ค ๊ณตํ†ต๋œ semantic manifold ์•ˆ์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ผ๋ถ€ confusion pair์—์„œ๋Š” ํ˜ผ๋™ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ์ง€๋งŒ, ๊ทธ ๋ณ€ํ™”๋Š” ๋‹จ์ˆœํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ผ๊ธฐ๋ณด๋‹ค decision boundary๊ฐ€ semantic neighborhood ๋‚ด๋ถ€์—์„œ ๋‹ค์‹œ ์ •๋ ฌ๋˜๋Š” ๊ณผ์ •์œผ๋กœ ์ฝํžŒ๋‹ค.

๋ฐ˜๋ฉด InfoNCE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด semantic smoothing ์œ„์— class-aware separation์ด ๋‹ค์‹œ ๊ฐ•ํ™”๋œ๋‹ค. ์ตœ์ข… ๋ชจ๋ธ์€ validation accuracy 60.75%๋ฅผ ๊ธฐ๋กํ–ˆ์„ ๋ฟ ์•„๋‹ˆ๋ผ, same-vs-different cosine margin๊ณผ silhouette score๋ฅผ ๋ชจ๋‘ ๋Œ์–ด์˜ฌ๋ ธ๊ณ , prototype alignment ์ง€ํ‘œ์—์„œ๋„ ํฐ ๊ฐœ์„ ์„ ๋ณด์˜€๋‹ค. ํŠนํžˆ centroid heatmap๊ณผ prototype alignment histogram์€ InfoNCE๊ฐ€ "ํ…์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๋ชจ๋ธ" ์ˆ˜์ค€์„ ๋„˜์–ด, fused latent๋ฅผ ์‹ค์ œ class text prototype ๋ฐฉํ–ฅ์œผ๋กœ ๋” ๊ฐ•ํ•˜๊ฒŒ ์กฐ์งํ™”ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค. ์ฆ‰ ์ด๋ฒˆ ๊ฒฐ๊ณผ๋Š” text guidance์˜ ํšจ๊ณผ๊ฐ€ ๋‹จ์ˆœ accuracy gain์ด ์•„๋‹ˆ๋ผ representation geometry์˜ ๋ณ€ํ™”๋กœ๋„ ๊ด€์ฐฐ๋œ๋‹ค๋Š” ์ ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

Application ๊ด€์ ์—์„œ๋„ ์ด ์—ฐ๊ตฌ๋Š” ๋ณ„๊ฐœ์˜ ์‹คํ—˜์— ๋จธ๋ฌด๋ฅด์ง€ ์•Š๋Š”๋‹ค. Scene classifier๋Š” VisionCraft์˜ enhancement pipeline ์•ˆ์—์„œ ์žฅ๋ฉด identity๋ฅผ ์ œ๊ณตํ•˜๊ณ , quality summary์™€ heuristic-based reasoning์ด ์žฅ๋ฉด ๋‹จ์œ„ ๋งฅ๋ฝ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ๋•๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์–ป์€ multimodal representation learning์˜ ํ†ต์ฐฐ์€ ๋‹จ์ˆœ benchmark ์„ฑ๋Šฅ ๊ฒฝ์Ÿ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ scene-aware image understanding ์‹œ์Šคํ…œ์˜ ํ•ด์„ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.

8.2 Limitations

์ฒซ์งธ, accuracy ๊ฐœ์„  ํญ ์ž์ฒด๋Š” ์œ ์˜๋ฏธํ•˜์ง€๋งŒ ์ ˆ๋Œ€์ ์œผ๋กœ ๋งค์šฐ ํฐ ์ˆ˜์ค€์€ ์•„๋‹ˆ๋‹ค. 59.79% -> 60.56% -> 60.75%์˜ ์ƒ์Šน์€ ์ผ๊ด€๋œ ์ถ”์„ธ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€๋งŒ, ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋™์ผํ•˜๊ฒŒ ๊ฐ•ํ•œ ๊ฐœ์„ ์ด ๋‚˜ํƒ€๋‚œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์‹ค์ œ confusion matrix๋ฅผ ๋ณด๋ฉด public_large_indoor, corridor_lobby, transportation_hub_road, waterfront ๊ฐ™์€ ํด๋ž˜์Šค๋Š” ์—ฌ์ „ํžˆ ์–ด๋ ค์šด ๋ฒ”์ฃผ๋กœ ๋‚จ์•„ ์žˆ์œผ๋ฉฐ, semantic overlap์ด ํฐ pair์—์„œ๋Š” trade-off๊ฐ€ ๊ณ„์† ๊ด€์ฐฐ๋œ๋‹ค. ์ฆ‰ text prior๊ฐ€ ํ•ญ์ƒ fine-grained discrimination์„ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๋‘˜์งธ, vanilla text cross-attention์€ semantic smoothing์—๋Š” ํšจ๊ณผ์ ์ด์ง€๋งŒ, ๊ทธ ์ž์ฒด๋งŒ์œผ๋กœ๋Š” class prototype๊ณผ์˜ ์ง์ ‘์  ์ •๋ ฌ์ด ์ถฉ๋ถ„ํžˆ ๊ฐ•ํ•˜์ง€ ์•Š์•˜๋‹ค. Prototype histogram์—์„œ ๋ณด์˜€๋“ฏ์ด vanilla ๋ชจ๋ธ์€ text๋ฅผ ์œ ์šฉํ•œ semantic anchor๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋งŽ์€ ์ƒ˜ํ”Œ์ด ์—ฌ์ „ํžˆ rival prototype๊ณผ ๋” ๊ฐ€๊นŒ์šด ์œ„์น˜์— ๋จธ๋ฌธ๋‹ค. ์ด๋Š” text๋ฅผ latent space์— ์ฃผ์ž…ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” semantic organization๊ณผ explicit class separation์„ ๋™์‹œ์— ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์ ์„ ๋ณด์—ฌ์ค€๋‹ค.

8.3 Future Improvements

๊ฐ€์žฅ ์ง์ ‘์ ์ธ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” text prototype ์ž์ฒด๋ฅผ ๋” ์ •๊ตํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ๋Š” class๋ณ„ prompt๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ CLIP text embedding์„ ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ๋ณด๋‹ค ํ’๋ถ€ํ•œ scene description, attribute-level prompt, hard negative๋ฅผ ๊ณ ๋ คํ•œ contrastive text design์„ ์ ์šฉํ•˜๋ฉด prototype quality๋ฅผ ๋” ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ restaurant_cafe์™€ kitchen_dining, public_large_indoor์™€ corridor_lobby์ฒ˜๋Ÿผ ํ˜ผ๋™์ด ์žฆ์€ pair์— ๋Œ€ํ•ด์„œ๋Š” class-specific prompt engineering์ด ์ถ”๊ฐ€์ ์ธ ์ด๋“์„ ์ค„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

ํ•™์Šต ๊ตฌ์กฐ ์ธก๋ฉด์—์„œ๋Š” text guidance์˜ ๊ฐ•๋„๋ฅผ ์ž…๋ ฅ๋ณ„๋กœ ์กฐ์ ˆํ•˜๋Š” learnable gating ๋˜๋Š” adaptive fusion๋„ ์œ ๋งํ•˜๋‹ค. ํ˜„์žฌ ๊ตฌ์กฐ๋Š” ๋ชจ๋“  ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด text branch๋ฅผ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์ž…ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” visual evidence๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ƒ˜ํ”Œ๊ณผ semantic ambiguity๊ฐ€ ํฐ ์ƒ˜ํ”Œ์˜ ์ตœ์  ์ „๋žต์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ sample-wise confidence๋‚˜ ambiguity๋ฅผ ๋ฐ˜์˜ํ•ด text influence๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋ฉด, semantic smoothing์˜ ์ด์ ์€ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ณผ๋„ํ•œ overlap์€ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

Loss ์„ค๊ณ„๋„ ๋” ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฒˆ InfoNCE๋Š” prototype-aware alignment์— ๋ถ„๋ช…ํ•œ ํšจ๊ณผ๋ฅผ ๋ณด์˜€์ง€๋งŒ, ์•ž์œผ๋กœ๋Š” hard confusion pair ์ค‘์‹ฌ์˜ contrastive objective, class-conditional margin loss, ํ˜น์€ hierarchical semantic regularization์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉํ–ฅ๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ์ •๋‹ต prototype๊ณผ์˜ ์ •๋ ฌ๋งŒ์ด ์•„๋‹ˆ๋ผ, "์–ด๋–ค ํด๋ž˜์Šค๋“ค๊ณผ๋Š” ๊ฐ€๊นŒ์›Œ๋„ ๋˜๊ณ  ์–ด๋–ค ํด๋ž˜์Šค๋“ค๊ณผ๋Š” ๋ฐ˜๋“œ์‹œ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€"๋ฅผ ๋” ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ์‹์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ application pipeline๊ณผ research pipeline์˜ ์—ฐ๊ฒฐ์„ ๋” ๊ฐ•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•œ ๊ณผ์ œ๋‹ค. ํ˜„์žฌ๋Š” scene classification ๊ฒฐ๊ณผ๊ฐ€ rule-based scene-aware enhancement policy ์„ ํƒ์— ์ง์ ‘ ์‚ฌ์šฉ๋˜์ง€๋งŒ, policy ์ž์ฒด๋Š” ์•„์ง hand-crafted heuristic์— ๊ฐ€๊น๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” scene representation, segmentation region, quality score๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” learned enhancement policy๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด VisionCraft๋Š” ๋‹จ์ˆœํžˆ "์žฅ๋ฉด์„ ์ดํ•ดํ•˜๋Š” ๋ณด์ • ์‹œ์Šคํ…œ"์„ ๋„˜์–ด, ์žฅ๋ฉด ์ดํ•ด์™€ ์‹œ๊ฐ์  ๊ฐœ์„ ์ด ํ•˜๋‚˜์˜ learned policy ์•ˆ์—์„œ ๋” ๊ธด๋ฐ€ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ framework๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.


9. Repository Structure

VisionCraft ์ €์žฅ์†Œ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ ์•ˆ์— application pipeline๊ณผ research pipeline์„ ํ•จ๊ป˜ ๋‹ด๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋” ๊ตฌ์กฐ๋„ ๋ฐ๋ชจ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์ฝ”๋“œ์™€ representation learning ์‹คํ—˜์„ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ๊ณต์กดํ•˜๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

VisionCraft/
โ”œโ”€โ”€ app.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ checkpoint/
โ”œโ”€โ”€ data/
โ”œโ”€โ”€ examples/
โ”œโ”€โ”€ logs/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ analyzer/
โ”‚   โ”œโ”€โ”€ enhancer/
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ utils/
โ””โ”€โ”€ README_final.md

app.py๋Š” Gradio ๊ธฐ๋ฐ˜ VisionCraft application์˜ ์ง„์ž…์ ์ด๋‹ค. ์ž…๋ ฅ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ถ€ํ„ฐ quality analysis, scene classification, detection, segmentation, OCR, enhancement, visualization ์ถœ๋ ฅ๊นŒ์ง€ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์—์„œ orchestrationํ•œ๋‹ค.

src/analyzer/๋Š” brightness, contrast, blur, edge density, exposure, color balance, crop suggestion, OCR rectification, ORB matching, difference heatmap ๋“ฑ low-level ๋ถ„์„ ๋ฐ ๋ณด์กฐ ์‹œ๊ฐํ™” ๋ชจ๋“ˆ์„ ํฌํ•จํ•œ๋‹ค.

src/enhancer/๋Š” ์ „ํ†ต์  image enhancement ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹ด๋‹นํ•œ๋‹ค. Gamma correction, CLAHE, white balance, sharpening, denoise, region-aware adjustment์™€ ๊ฐ™์€ ์‹ค์ œ ๋ณด์ • ๋กœ์ง์ด ์ด ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด ์žˆ๋‹ค.

src/models/๋Š” ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ•ต์‹ฌ ๋””๋ ‰ํ† ๋ฆฌ๋‹ค. Scene classifier ํ•™์Šต๊ณผ ํ‰๊ฐ€, text cross-attention / InfoNCE ๋ชจ๋ธ, Places365 subset ๊ตฌ์ถ•, scene text embedding ์ƒ์„ฑ, latent space visualization ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ชจ๋‘ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค.

src/utils/๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•˜๋Š” markdown / visualization helper์™€ ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

data/๋Š” Places365 ์›๋ณธ ๋ฐ์ดํ„ฐ ๋˜๋Š” VisionCraft์šฉ subset, scene text embedding cache, object token / segmentation feature ์ „์ฒ˜๋ฆฌ ์‚ฐ์ถœ๋ฌผ ๋“ฑ์„ ์ €์žฅํ•œ๋‹ค. checkpoint/๋Š” ํ•™์Šต๋œ visual-only baseline, text cross-attention, InfoNCE variant์˜ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค. logs/๋Š” confusion matrix, UMAP, t-SNE, centroid heatmap, prototype histogram, attention example, ํ•™์Šต ๋กœ๊ทธ ๋“ฑ ์‹คํ—˜ ์‚ฐ์ถœ๋ฌผ์„ ์ €์žฅํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋‹ค.

์‹ค๋ฌด์ ์œผ๋กœ๋Š” logs/latent_comparison_* ์•„๋ž˜์˜ latent cache์™€ visualization ๊ฒฐ๊ณผ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ๋‹จ์ˆœ ์ถœ๋ ฅ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ, ํ›„์† triplet visualization์ด๋‚˜ README figure๋ฅผ ์žฌ์ƒ์„ฑํ•  ๋•Œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ์ค‘๊ฐ„ ์‚ฐ์ถœ๋ฌผ ์—ญํ• ๋„ ํ•œ๋‹ค.


10. How to Run

10.1 Environment Setup

๋จผ์ € Python ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

macOS / Linux:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Windows PowerShell:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

Windows์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ํด๋”์˜ setup_windows.bat์„ ๋”๋ธ”ํด๋ฆญํ•ด๋„ ์œ„ ๊ณผ์ •์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํŒŒ์ผ์€ Python 3.11์„ ์ฐพ๊ณ , .venv๋ฅผ ๋งŒ๋“  ๋’ค requirements.txt๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด run_visioncraft.bat์œผ๋กœ ์•ฑ์„ ์‹คํ–‰ํ•œ๋‹ค.

Windows์—์„œ python --version์ด ๋ฒ„์ „ ๋ฒˆํ˜ธ ์—†์ด Python๋งŒ ์ถœ๋ ฅ๋˜๊ฑฐ๋‚˜ Microsoft Store๊ฐ€ ์—ด๋ฆฌ๋ฉด ์‹ค์ œ Python์ด ์•„๋‹ˆ๋ผ Windows App Execution Alias๊ฐ€ ์žกํžŒ ์ƒํƒœ์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ Python 3.11์„ ์„ค์น˜ํ•œ ๋’ค ์ƒˆ PowerShell์„ ์—ด์–ด ๋‹ค์‹œ ์‹œ๋„ํ•œ๋‹ค.

winget install --id Python.Python.3.11 -e --scope user --accept-package-agreements --accept-source-agreements

PowerShell ์‹คํ–‰ ์ •์ฑ… ๋•Œ๋ฌธ์— Activate.ps1์ด ๋ง‰ํžˆ๋Š” ํ™˜๊ฒฝ๋„ ์žˆ์œผ๋ฏ€๋กœ, Windows์—์„œ๋Š” ์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ Python ์‹คํ–‰ ํŒŒ์ผ์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•œ๋‹ค.

requirements.txt ์„ค์น˜๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•˜๊ณ , ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์ž๋™ ๋‹ค์šด๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ๋ณ„๋„์˜ ์ˆ˜๋™ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Additional Dependencies and First-Run Downloads

  1. Tesseract OCR system binary
    pytesseract๋Š” Python wrapper์ผ ๋ฟ์ด๋ฏ€๋กœ, ์‹ค์ œ OCR ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

    macOS(Homebrew) ์˜ˆ์‹œ:

    brew install tesseract

    Windows ์˜ˆ์‹œ:

    winget install tesseract-ocr.tesseract

    ๋˜๋Š”

    choco install tesseract

    ํ•œ๊ตญ์–ด OCR๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋ ค๋ฉด kor language data๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. YOLOv8n weights (yolov8n.pt)
    Object detection์€ ultralytics ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ yolov8n.pt ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ํŒŒ์ผ์ด ์ €์žฅ์†Œ์— ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ถ”๊ฐ€ ์ž‘์—…์€ ํ•„์š” ์—†๋‹ค. ํŒŒ์ผ์ด ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์ฒซ ์‹คํ–‰ ์‹œ ์ž๋™ ๋‹ค์šด๋กœ๋“œ๋  ์ˆ˜ ์žˆ๋‹ค. ์ž๋™ ๋‹ค์šด๋กœ๋“œ์— ์‹คํŒจํ–ˆ๋‹ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์ง์ ‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

    .venv/bin/python -c "from ultralytics import YOLO; YOLO('yolov8n.pt')"

    Windows PowerShell:

    .\.venv\Scripts\python.exe -c "from ultralytics import YOLO; YOLO('yolov8n.pt')"

    Ultralytics documentation: https://docs.ultralytics.com/

  3. Hugging Face pretrained models
    Semantic segmentation๊ณผ CLIP text embedding์€ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ Hugging Face Hub์—์„œ pretrained model์„ ์ž๋™ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

    ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๋Œ€๋ถ€๋ถ„ ์ž๋™์œผ๋กœ ๋ฐ›์•„์ง„๋‹ค. ์ž๋™ ๋‹ค์šด๋กœ๋“œ์— ์‹คํŒจํ–ˆ๊ฑฐ๋‚˜ ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ๋ฏธ๋ฆฌ ์บ์‹œ๋ฅผ ์ƒ์„ฑํ•ด ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

    SegFormer ์บ์‹œ ์˜ˆ์‹œ:

    python -c "from transformers import AutoImageProcessor, AutoModelForSemanticSegmentation; AutoImageProcessor.from_pretrained('nvidia/segformer-b0-finetuned-ade-512-512'); AutoModelForSemanticSegmentation.from_pretrained('nvidia/segformer-b0-finetuned-ade-512-512')"

    CLIP ์บ์‹œ ์˜ˆ์‹œ:

    python -c "from transformers import CLIPModel, CLIPTokenizer; CLIPTokenizer.from_pretrained('openai/clip-vit-base-patch32'); CLIPModel.from_pretrained('openai/clip-vit-base-patch32')"

    Windows PowerShell์—์„œ๋Š” ๊ฐ™์€ ๋ช…๋ น์„ ๊ทธ๋Œ€๋กœ python -c "..." ํ˜•ํƒœ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

  4. VisionCraft scene-classifier checkpoint
    ์•ฑ์˜ ๊ธฐ๋ณธ scene classifier๋Š” ๋‹ค์Œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๊ธฐ๋Œ€ํ•œ๋‹ค.

    checkpoint/scene_classifier_resnet50_v11_text_crossattn_infonce_A.pt
    

    ์ด ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์•ฑ์€ _heuristic_scene fallback์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ํ•™์Šต๋œ ResNet50 + text cross-attention + InfoNCE ์ถ”๋ก  ๋Œ€์‹  coarse heuristic scene label๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  5. Training / evaluation dataset
    ์—ฐ๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ•™์Šต๊ณผ ํ‰๊ฐ€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ž˜ ๋ฐ์ดํ„ฐ์…‹ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    data/visioncraft_subset_small_v11/
    

    ์ด subset์ด ์—†๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ๋Š” ์žฌํ˜„๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‘ ๊ฒฝ๋กœ๋ฅผ ์ฐธ๊ณ ํ•ด ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ €์žฅ์†Œ์—๋Š” Places365 label์„ VisionCraft class๋กœ ์žฌ๋งคํ•‘ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

    python src/models/build_visioncraft_subset.py --help
  6. Scene text embedding cache
    Text-guided ์‹คํ—˜์„ ์žฌํ˜„ํ•˜๋ ค๋ฉด CLIP ๊ธฐ๋ฐ˜ scene text embedding cache๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ํŒŒ์ผ์€ ์•ฑ์˜ ๊ธฐ๋ณธ ์‹คํ–‰์—๋Š” ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, ํ•™์Šต/ํ‰๊ฐ€ ์žฌํ˜„์—๋Š” ํ•„์š”ํ•˜๋‹ค. ํŒŒ์ผ์ด ์—†๋‹ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    python src/models/precompute_scene_text_embeddings.py \
      --output-path data/scene_text_embeddings_clip_sentence_v1.npz

์ถ”๊ฐ€๋กœ macOS ํ™˜๊ฒฝ์—์„œ๋Š” ์‹œ๊ฐํ™” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ MPLCONFIGDIR=/private/tmp/mpl๋ฅผ ์„ค์ •ํ•˜๋ฉด Matplotlib cache ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. Windows์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ํด๋” ์•ˆ์˜ .mplconfig๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋ฉด ๊ถŒํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

10.2 Run Application

VisionCraft application์€ ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

macOS / Linux:

python app.py

Windows PowerShell:

$env:MPLCONFIGDIR = "$PWD\.mplconfig"
.\.venv\Scripts\python.exe app.py

Windows ์‚ฌ์šฉ์ž๋Š” ์˜์กด์„ฑ ์„ค์น˜๊ฐ€ ๋๋‚œ ๋’ค ํ”„๋กœ์ ํŠธ ํด๋”์˜ run_visioncraft.bat์„ ๋”๋ธ”ํด๋ฆญํ•ด๋„ ๋œ๋‹ค. ์ด ํŒŒ์ผ์€ .venv\Scripts\python.exe๋กœ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ณ  MPLCONFIGDIR๋ฅผ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€ .mplconfig ํด๋”๋กœ ์ง€์ •ํ•œ๋‹ค.

์‹คํ–‰ ํ›„ ํ„ฐ๋ฏธ๋„์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ Gradio ์ฃผ์†Œ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ฐ๋‹ค.

http://127.0.0.1:7860

์•ฑ์„ ์‹คํ–‰ํ•œ PowerShell ๋˜๋Š” .bat ์ฐฝ์„ ๋‹ซ์œผ๋ฉด ๋กœ์ปฌ ์„œ๋ฒ„๋„ ์ข…๋ฃŒ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ERR_CONNECTION_REFUSED๊ฐ€ ๋‚˜์˜ค๋ฉด ์‹คํ–‰ ์ฐฝ์ด ์•„์ง ์—ด๋ ค ์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ˆ์—์„œ๋Š” ๋‹ค์Œ ํ๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ž…๋ ฅ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ
  • low-level quality analysis
  • scene classification / object detection / semantic segmentation
  • auto straighten / crop preview / OCR
  • traditional enhancement ๊ฒฐ๊ณผ์™€ difference heatmap

OCR ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Enable Text Processing (OCR)๋ฅผ ์ผœ๊ณ , Manual 4-Point Rectification ํƒญ์—์„œ ๋„ค ๊ผญ์ง“์ ์„ ์ง€์ •ํ•œ ๋’ค ๋‹ค์‹œ ๋ถ„์„์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

10.3 Train Scene Classifier

Visual-only baseline ํ•™์Šต ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

macOS / Linux / Windows ๊ณตํ†ต:

python src/models/train_scene_classifier.py \
  --data-root data/visioncraft_subset_small_v11 \
  --output checkpoint/scene_classifier_resnet50_v11_visual_only_e20.pt \
  --epochs 20 \
  --batch-size 16 \
  --image-size 224 \
  --backbone resnet50 \
  --fusion-mode visual-only \
  --optimizer adamw \
  --lr 1e-4 \
  --weight-decay 1e-5 \
  --label-smoothing 0.1 \
  --freeze-backbone-epochs 2 \
  --num-workers 0

Vanilla text cross-attention ํ•™์Šต ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

python src/models/train_scene_classifier.py \
  --data-root data/visioncraft_subset_small_v11 \
  --output checkpoint/scene_classifier_resnet50_v11_text_crossattn_e20.pt \
  --epochs 20 \
  --batch-size 16 \
  --image-size 224 \
  --backbone resnet50 \
  --fusion-mode text-cross-attention \
  --scene-text-embeddings-path data/scene_text_embeddings_clip_sentence_v1.npz \
  --optimizer adamw \
  --lr 1e-4 \
  --weight-decay 1e-5 \
  --label-smoothing 0.1 \
  --freeze-backbone-epochs 2 \
  --cross-attention-dropout 0.1 \
  --num-workers 0

Text Cross-Attention + InfoNCE ํ•™์Šต ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

python src/models/train_scene_classifier.py \
  --data-root data/visioncraft_subset_small_v11 \
  --output checkpoint/scene_classifier_resnet50_v11_text_crossattn_infonce_A.pt \
  --epochs 20 \
  --batch-size 16 \
  --image-size 224 \
  --backbone resnet50 \
  --fusion-mode text-cross-attention \
  --scene-text-embeddings-path data/scene_text_embeddings_clip_sentence_v1.npz \
  --optimizer adamw \
  --lr 1e-4 \
  --weight-decay 1e-5 \
  --label-smoothing 0.1 \
  --freeze-backbone-epochs 2 \
  --cross-attention-dropout 0.1 \
  --text-contrastive-weight 0.05 \
  --text-contrastive-temperature 0.10 \
  --num-workers 0

ํ•™์Šต์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋กœ๊ทธ์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋ ค๋ฉด nohup์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

nohup python -u src/models/train_scene_classifier.py ... > logs/train.log 2>&1 &

Windows์—์„œ๋Š” nohup ๋Œ€์‹  PowerShell์˜ Start-Process๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Start-Process python -ArgumentList "src/models/train_scene_classifier.py", "--data-root", "data/visioncraft_subset_small_v11", "..." -NoNewWindow

10.4 Evaluate Scene Classifier

ํ•™์Šต๋œ ์ฒดํฌํฌ์ธํŠธ์˜ confusion matrix์™€ classification report๋Š” ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

python src/models/evaluate_scene_classifier.py \
  --data-root data/visioncraft_subset_small_v11 \
  --checkpoint checkpoint/scene_classifier_resnet50_v11_text_crossattn_infonce_A.pt \
  --split val \
  --batch-size 32 \
  --num-workers 0 \
  --report-path logs/eval_resnet50_v11_text_crossattn_infonce_A_report.txt \
  --figure-path logs/eval_resnet50_v11_text_crossattn_infonce_A_confusion.png

๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ baseline ๋˜๋Š” vanilla text cross-attention checkpoint๋ฅผ ๋„ฃ์œผ๋ฉด ๊ฐ ๋ชจ๋ธ์˜ confusion matrix๋ฅผ ๋ณ„๋„๋กœ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

10.5 Latent Space Analysis

Latent comparison์€ ๋จผ์ € cache๋ฅผ ๋งŒ๋“  ๋’ค, UMAP / t-SNE / similarity / prototype / attention visualization์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.

Baseline vs vanilla text cache ์ƒ์„ฑ:

MPLCONFIGDIR=/private/tmp/mpl \
python src/models/analyze_latent_comparison.py \
  --data-root data/visioncraft_subset_small_v11 \
  --baseline-checkpoint checkpoint/scene_classifier_resnet50_v11_visual_only_e20.pt \
  --text-checkpoint checkpoint/scene_classifier_resnet50_v11_text_crossattn_e20.pt \
  --split val \
  --samples-per-class 180 \
  --seed 42 \
  --num-workers 0 \
  --output-dir logs/latent_comparison_v11_full180 \
  --cache-only

Windows PowerShell์—์„œ๋Š” MPLCONFIGDIR๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

$env:MPLCONFIGDIR="$env:TEMP\\mpl"
python src/models/analyze_latent_comparison.py `
  --data-root data/visioncraft_subset_small_v11 `
  --baseline-checkpoint checkpoint/scene_classifier_resnet50_v11_visual_only_e20.pt `
  --text-checkpoint checkpoint/scene_classifier_resnet50_v11_text_crossattn_e20.pt `
  --split val `
  --samples-per-class 180 `
  --seed 42 `
  --num-workers 0 `
  --output-dir logs/latent_comparison_v11_full180 `
  --cache-only

InfoNCE rerun cache ์ƒ์„ฑ:

MPLCONFIGDIR=/private/tmp/mpl \
python src/models/build_infonce_rerun_latent_cache.py

Windows PowerShell:

$env:MPLCONFIGDIR="$env:TEMP\\mpl"
python src/models/build_infonce_rerun_latent_cache.py

Triplet visualization ์ƒ์„ฑ:

MPLCONFIGDIR=/private/tmp/mpl \
python src/models/build_triplet_latent_visualizations.py

Windows PowerShell:

$env:MPLCONFIGDIR="$env:TEMP\\mpl"
python src/models/build_triplet_latent_visualizations.py

Scene confusion case gallery ์ƒ์„ฑ:

python src/models/build_scene_confusion_case_gallery.py

Windows PowerShell:

python src/models/build_scene_confusion_case_gallery.py

Vanilla attention example์„ InfoNCE์™€ ๋™์ผํ•œ ์ƒ˜ํ”Œ์— ๋งž์ถฐ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

MPLCONFIGDIR=/private/tmp/mpl \
python src/models/plot_vanilla_attention_examples_matched_to_infonce.py

Windows PowerShell:

$env:MPLCONFIGDIR="$env:TEMP\\mpl"
python src/models/plot_vanilla_attention_examples_matched_to_infonce.py

Scene text embedding cache๊ฐ€ ์•„์ง ์—†๋‹ค๋ฉด ๋จผ์ € ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

python src/models/precompute_scene_text_embeddings.py \
  --output-path data/scene_text_embeddings_clip_sentence_v1.npz

11. Conclusion

VisionCraft๋Š” ๋‹จ์ˆœํ•œ low-level image enhancement๋ฅผ ๋„˜์–ด, scene understanding์„ ๋ถ„์„๊ณผ ๋ณด์ • ๊ณผ์ •์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์‹œ๋„์—์„œ ์ถœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ด๋‹ค. Application ๊ด€์ ์—์„œ ๋ณธ ์‹œ์Šคํ…œ์€ brightness, contrast, blur, exposure์™€ ๊ฐ™์€ ํ’ˆ์งˆ ์ง€ํ‘œ๋ฅผ ์ง„๋‹จํ•˜๊ณ , scene classification, object detection, semantic segmentation, OCR, crop suggestion, traditional enhancement๋ฅผ ํ•˜๋‚˜์˜ ํ†ตํ•ฉํ˜• ํŒŒ์ดํ”„๋ผ์ธ ์•ˆ์—์„œ ๊ฒฐํ•ฉํ•œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ VisionCraft๋Š” ๋‹จ์ˆœํžˆ "๋ณด์ •๋œ ์ด๋ฏธ์ง€"๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์™œ ์ด๋Ÿฌํ•œ ๋ณด์ •์ด ํ•„์š”ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์‹œ๊ฐ์ ยท์ •๋Ÿ‰์  ๊ทผ๊ฑฐ๊นŒ์ง€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” scene-aware image understanding system์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

Research ๊ด€์ ์—์„œ๋Š” visual-only baseline, vanilla text cross-attention, text cross-attention + InfoNCE๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ๋น„๊ตํ•จ์œผ๋กœ์จ, text prior๊ฐ€ scene classification์˜ latent representation์— ์–ด๋–ค ๊ตฌ์กฐ์  ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€๋ฅผ ๋ถ„์„ํ–ˆ๋‹ค. ์‹คํ—˜ ๊ฒฐ๊ณผ, visual-only baseline์€ 59.79%, vanilla text cross-attention์€ 60.56%, ์ตœ์ข… InfoNCE variant๋Š” 60.75%์˜ validation accuracy๋ฅผ ๊ธฐ๋กํ•˜์˜€๋‹ค. ๋” ์ค‘์š”ํ•œ ์ ์€ ์ด ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋‹จ์ˆœ accuracy ์ˆซ์ž์— ๊ทธ์น˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. UMAP, t-SNE, confusion matrix, centroid heatmap, prototype histogram, attention visualization์„ ์ข…ํ•ฉํ•˜๋ฉด, vanilla text cross-attention์€ semantic smoothing๊ณผ latent reorganization์— ๊ธฐ์—ฌํ–ˆ๊ณ , InfoNCE๋Š” ๊ทธ ์œ„์— class-aware separation๊ณผ prototype alignment๋ฅผ ์ถ”๊ฐ€๋กœ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž‘๋™ํ–ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ฆ‰ VisionCraft์˜ ํ•ต์‹ฌ ๊ธฐ์—ฌ๋Š” ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ์งธ, scene context๋ฅผ ์‹ค์ œ enhancement pipeline ์•ˆ์— ์—ฐ๊ฒฐํ•œ practical computer vision system์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‘˜์งธ, text-guided multimodal learning์ด scene classification์—์„œ ๋‹จ์ˆœํ•œ ๋ณด์กฐ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ latent geometry๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์กฐ์  ์‹ ํ˜ธ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ •๋Ÿ‰์ ยท์ •์„ฑ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค๋Š” ์ ์ด๋‹ค.

ํ–ฅํ›„์—๋Š” ๋” ์ •๊ตํ•œ text prototype ์„ค๊ณ„, adaptive fusion, confusion-pair ์ค‘์‹ฌ contrastive objective, ๊ทธ๋ฆฌ๊ณ  scene representation๊ณผ enhancement policy์˜ ๋” ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด VisionCraft๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ํ˜„์žฌ ๊ฒฐ๊ณผ๋งŒ์œผ๋กœ๋„, ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” scene-aware image understanding๊ณผ multimodal representation learning์„ ํ•˜๋‚˜์˜ ์ผ๊ด€๋œ ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ์—์„œ ์—ฐ๊ฒฐํ•œ ์˜๋ฏธ ์žˆ๋Š” ์ถœ๋ฐœ์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


12. References

  1. B. Zhou, A. Lapedriza, A. Khosla, A. Oliva, and A. Torralba, "Places: A 10 million Image Database for Scene Recognition," IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2017.
    Dataset / project page: https://places2.csail.mit.edu/

  2. E. Xie, W. Wang, Z. Yu, A. Anandkumar, J. M. Alvarez, and P. Luo, "SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers," Advances in Neural Information Processing Systems (NeurIPS), 2021.

  3. A. Radford, J. W. Kim, C. Hallacy, et al., "Learning Transferable Visual Models From Natural Language Supervision," Proceedings of ICML, 2021.
    CLIP text embedding๊ณผ text prototype ์„ค๊ณ„์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋…ผ๋ฌธ

  4. G. Jocher, A. Chaurasia, and J. Qiu, "YOLO by Ultralytics," 2023.
    Documentation: https://docs.ultralytics.com/

About

Scene-aware image quality analysis and automatic enhancement using deep learning and multimodal visual understanding.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors