Skip to content

Me-in-U/Clifa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

27 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ธ Clifa

CLIP + FAISS ๊ธฐ๋ฐ˜ ๋กœ์ปฌ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰๊ธฐ
์›ํ•˜๋Š” ๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜๋ฉด, ์ด๋ฏธ์ง€ ํด๋”๋ฅผ ์ธ๋ฑ์‹ฑํ•ด ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์ค๋‹ˆ๋‹ค.

Clifa๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ์‹œ๋งจํ‹ฑ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ž…๋‹ˆ๋‹ค.
๋‹ค๊ตญ์–ด CLIP ์ž„๋ฒ ๋”ฉ๊ณผ FAISS ๋ฒกํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ๊ฒฐํ•ฉํ•ด, ํŒŒ์ผ๋ช… ๊ธฐ๋ฐ˜ ํƒ์ƒ‰๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ๋ฌธ์ œ: ์ด๋ฏธ์ง€๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํด๋”/ํŒŒ์ผ๋ช… ๊ธฐ๋ฐ˜ ํƒ์ƒ‰์˜ ํšจ์œจ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง
  • ํ•ด๊ฒฐ: ํ…์ŠคํŠธ-์ด๋ฏธ์ง€ ์ž„๋ฒ ๋”ฉ ๊ฒ€์ƒ‰์œผ๋กœ "์„ค๋ช…์œผ๋กœ ์ฐพ๋Š”" ์›Œํฌํ”Œ๋กœ์šฐ ์ œ๊ณต
  • ํ•ต์‹ฌ ๊ฐ€์น˜: ๋กœ์ปฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ์†๋„/ํ”„๋ผ์ด๋ฒ„์‹œ, ๋‹ค๊ตญ์–ด ๊ฒ€์ƒ‰, ์‹ค์‚ฌ์šฉ ์ค‘์‹ฌ UI/UX
image image

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ“‚ ์ด๋ฏธ์ง€ ํด๋” ์ธ๋ฑ์‹ฑ

    • CLIP ์ž„๋ฒ ๋”ฉ + FAISS ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ณ ์† ๊ฒ€์ƒ‰
    • ์ตœ์ดˆ ์ „์ฒด ์ธ๋ฑ์‹ฑ ๋ฐ ๋ณ€๊ฒฝ ๊ฐ์ง€ ๊ธฐ๋ฐ˜ ์ž๋™ ์ธ๋ฑ์‹ฑ ์ง€์›
    • ์ง„ํ–‰ ์ƒํ™ฉ ํ‘œ์‹œ (ํผ์„ผํŠธ %, ํ˜„์žฌ/์ „์ฒด ๊ฐœ์ˆ˜)
    • ์ธ๋ฑ์‹ฑ ์ž‘์—… ์ค‘ ์ทจ์†Œ ๊ฐ€๋Šฅ
  • ๐Ÿ” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰

    • ์ž์—ฐ์–ด ์ฟผ๋ฆฌ๋กœ ์ด๋ฏธ์ง€ ์ฐพ๊ธฐ (์˜ˆ: "๋ฒค์น˜์— ์•‰์•„์žˆ๋Š” ๊ฐ•์•„์ง€", "a dog sitting on a bench")
    • 50๊ฐœ ์ด์ƒ ์–ธ์–ด ์ง€์›: ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด, ์ค‘๊ตญ์–ด ๋“ฑ ๋‹ค๊ตญ์–ด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
    • Sentence-Transformers Multilingual CLIP ๋ชจ๋ธ ์‚ฌ์šฉ
    • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ธ๋„ค์ผ + ํŒŒ์ผ๋ช… ๊ทธ๋ฆฌ๋“œ ํ‘œ์‹œ
    • ๋”๋ธ”ํด๋ฆญ ์‹œ ์›๋ณธ ์ด๋ฏธ์ง€ ์—ด๊ธฐ
  • ๐ŸŽจ UI/UX

    • PySide6 ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„๋ฆฌ์Šค GUI
    • Windows 10+ Acrylic Blur ํšจ๊ณผ ์ง€์›
    • ์šฐํ•˜๋‹จ ํŒ์—… ์ฐฝ + ๋“œ๋ž˜๊ทธ ์ด๋™ ๊ฐ€๋Šฅ
    • ์‹œ์Šคํ…œ ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜ (์—ด๊ธฐ/์ˆจ๊ธฐ๊ธฐ, ์ฆ‰์‹œ ์ธ๋ฑ์‹ฑ, ์ข…๋ฃŒ)
  • โš™๏ธ ์„ค์ • & ์•ˆ์ •์„ฑ

    • ์ด๋ฏธ์ง€ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ • (QSettings ์ €์žฅ)
    • ์ž˜๋ชป๋œ ๊ฒฝ๋กœ๋‚˜ ์ด๋ฏธ์ง€ ์—†์Œ ๊ฐ์ง€ ์‹œ ์•ˆ๋‚ด
    • ๋กœ๊น… ์ง€์› (LOCALAPPDATA\Clifa\logs)

๐Ÿš€ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰

.exe ๋นŒ๋“œ(ํŒŒ์ด์ฌ ์„ค์น˜๋œ ํ™˜๊ฒฝ)

  • C:\Users\[User]\AppData\Local\Clifa ๊ฒฝ๋กœ์— ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ๋ฐ ์˜์กด ํŒจํ‚ค์ง€ ์ž๋™ ์„ค์น˜๋œ ํ›„ ์ž๋™ ์‹คํ–‰

์ฒ˜์Œ ์‹คํ–‰ ์‹œ ์•ˆ๋‚ด

  • ์„ค์น˜/์ดˆ๊ธฐํ™” ๋™์•ˆ ์ฝ˜์†” ์ฐฝ ๋Œ€์‹  ์ž‘์€ ์„ค์น˜ ์ฐฝ(์Šคํ”Œ๋ž˜์‹œ)์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹จ๊ณ„: 1) ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ โ†’ 2) ์•ฑ ํŒŒ์ผ ์ค€๋น„ โ†’ 3) PyTorch ์„ค์น˜(CUDA/CPU) โ†’ 4) ๊ธฐํƒ€ ํŒจํ‚ค์ง€ โ†’ 5) CLIP ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ โ†’ 6) ์•ฑ ์‹œ์ž‘
  • CLIP ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ: ์„ค์น˜ ๋‹จ๊ณ„์—์„œ ์ด๋ฏธ์ง€ ์ธ์ฝ”๋”(clip-ViT-B-32)์™€ ๋‹ค๊ตญ์–ด ํ…์ŠคํŠธ ์ธ์ฝ”๋”(clip-ViT-B-32-multilingual-v1)๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์†๋„์— ๋”ฐ๋ผ ์ˆ˜ ๋ถ„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค์น˜ ์ง„ํ–‰ ์ƒํ™ฉ์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ(โณ โ†’ ๐Ÿ”„ โ†’ โœ…)๋กœ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ๋˜๋ฉฐ, ๋กœ๊ทธ๋Š” ํŒŒ์ผ๋กœ๋„ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด ์•ฑ์ด ํŠธ๋ ˆ์ด๋กœ ์ตœ์†Œํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜์„ ๋”๋ธ”ํด๋ฆญํ•˜๋ฉด ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

๋‹ค๊ตญ์–ด ๊ฒ€์ƒ‰ ์ง€์›

  • Multilingual CLIP ๋ชจ๋ธ ์‚ฌ์šฉ: Sentence-Transformers์˜ clip-ViT-B-32-multilingual-v1 ๋ชจ๋ธ์„ ํ†ตํ•ด 50๊ฐœ ์ด์ƒ ์–ธ์–ด๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์› ์–ธ์–ด: ํ•œ๊ตญ์–ด(ko), ์ผ๋ณธ์–ด(ja), ์ค‘๊ตญ์–ด(zh-cn, zh-tw), ์˜์–ด(en), ๋…์ผ์–ด(de), ํ”„๋ž‘์Šค์–ด(fr), ์ŠคํŽ˜์ธ์–ด(es) ๋“ฑ
  • ๋ฒˆ์—ญ ๋ถˆํ•„์š”: ๋ณ„๋„ ๋ฒˆ์—ญ API ์—†์ด ํ•œ๊ตญ์–ด, ์ผ๋ณธ์–ด ๋“ฑ์œผ๋กœ ๋ฐ”๋กœ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์ž‘ ๋ฐฉ์‹:
    • ํ…์ŠคํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋‹ค๊ตญ์–ด CLIP ์ธ์ฝ”๋”๋กœ ์ž„๋ฒ ๋”ฉ ๋ณ€ํ™˜
    • ์ด๋ฏธ์ง€ ์ž„๋ฒ ๋”ฉ๊ณผ์˜ ์œ ์‚ฌ๋„๋ฅผ FAISS๋กœ ๊ณ ์† ๊ฒ€์ƒ‰
    • ๋ณ„๋„ ๋ฒˆ์—ญ ๊ณผ์ • ์—†์ด ์ž…๋ ฅํ•œ ์–ธ์–ด ๊ทธ๋Œ€๋กœ ๊ฒ€์ƒ‰

๋กœ๊ทธ ์œ„์น˜

  • ๋Ÿฐ์ฒ˜ ์„ค์น˜ ๋กœ๊ทธ: %LOCALAPPDATA%\Clifa\logs\launcher.log
  • ์•ฑ ์‹คํ–‰ ๋กœ๊ทธ: %LOCALAPPDATA%\Clifa\logs\controller.log

๋ฌธ์ œ ํ•ด๊ฒฐ(Troubleshooting)

  • ์„ค์น˜ ํ›„ ๋ฐ”๋กœ ๊บผ์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ๋•Œ:
    • ์‹ค์ œ๋กœ๋Š” ํŠธ๋ ˆ์ด๋กœ ์ตœ์†Œํ™”๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜์„ ๋”๋ธ”ํด๋ฆญํ•ด ์—ด์–ด๋ณด์„ธ์š”.
    • ์œ„ ๋กœ๊ทธ ํŒŒ์ผ(ํŠนํžˆ controller.log)์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
    • ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(ํ”„๋ก์‹œ/๋ฐฉํ™”๋ฒฝ)์—์„œ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ฐจ๋‹จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
    • ์„ค์น˜ ์ค‘๋‹จ ํ›„ ์žฌ์‹คํ–‰ ์‹œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋ณต๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค ๊ธฐ์—ฌ

  • ๋ฒ„๊ทธ ์ œ๋ณด, ๊ธฐ๋Šฅ ์ œ์•ˆ์€ Issues์—์„œ ํ•ด์ฃผ์„ธ์š”.
  • PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ™Œ

About

๐Ÿ” Desktop semantic image search app using multilingual CLIP + FAISS with fast local indexing, real-time progress, and native Korean/English query support.

Topics

Resources

Stars

Watchers

Forks

Contributors