Skip to content

JaeHunJang/Defect-Studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌟 μ‚Όμ„± μ²­λ…„ SW 아카데미 11κΈ° SDC 1νŒ€ ν’ˆν–‰μ œλ‘œ 🌟

🌳 ν”„λ‘œμ νŠΈ κ°œμš”

✨ νŒ€μ›

νŒ€μž₯ νŒ€μ› νŒ€μ› νŒ€μ› νŒ€μ› νŒ€μ›
μ •ν˜„μˆ˜ κΉ€κ²½λŒ€ κΉ€κ°€λžŒ λ°•μˆ˜μ§„ μž₯μž¬ν›ˆ κΉ€λ²”μˆ˜
FE FE BE BE AI AI

πŸ“… κΈ°κ°„

  • 기획 및 섀계 : 2024.08.19 - 2024.08.23
  • 개발 : 2024.08.26 - 2024.10.10

πŸ’Ž μ†Œκ°œ

πŸŒƒ 기획 μ˜λ„

μ‹€μ œ 검증에 μ“°μ΄λŠ” AI 에 ν•™μŠ΅μ‹œν‚¬ μ–‘μ§ˆμ˜ λΆˆλŸ‰ 이미지λ₯Ό λ§Œλ“€μ–΄ μ„±λŠ₯ 및 정확도 λ₯Ό 높이기!

4μ°¨ 산업에 λ“€μ–΄μ˜€λ©΄μ„œ μ œμ‘°μ—…μ€ 졜근 물건은 μ œμ‘°ν•˜λŠ” 양이 λ§Žμ•„μ§μ— 따라 λΆˆλŸ‰ 점검은 갈수둝 μ–΄λ €μ›Œμ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ AIλ₯Ό ν™œμš©ν•œ λΆˆλŸ‰μ„ μ κ²€ν•˜κ³  μžˆλŠ” 좔세인데, ν•΄λ‹Ή AI에 λŒ€ν•œ λ„μž… μ‹€νŒ¨ ν™•λ₯ μ΄ λ†’μŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬ μ΄μœ λ“€ 쀑 ν•œ μ΄μœ λŠ” μ–‘μ§ˆμ˜ 데이터 λΆ€μ‘± μž…λ‹ˆλ‹€.

정상 데이터λ₯Ό μ΄μš©ν•œ AI ν•™μŠ΅μ€ 편ν–₯적인 ν•™μŠ΅μœΌλ‘œ 인해 λΆˆλŸ‰μ„ κ²€μ¦ν•˜λŠ”λ° ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ λ‹€λŸ‰μ˜ λΆˆλŸ‰ 이미지 DataSet이 ν•„μš”ν•˜μ§€λ§Œ, μ‹€μ œ 제쑰 κ³Όμ •μ—μ„œ λ°œν–‰ν•˜λŠ” λΆˆλŸ‰ν’ˆμ˜ μƒμ„±λŸ‰μ€ 맀우 μž‘μœΌλ©°, μΌλΆ€λŸ¬ μ œν’ˆμ— 찍힘 및 슀크래치 등을 λ§Œλ“€μ–΄μ„œ μ‹€μ œ λΆˆλŸ‰ 이미지λ₯Ό λ§Œλ“€μ–΄ λ‚΄κ³  μžˆμ§€λ§Œ, ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 저희 νŒ€μ€ 제쑰 λΆˆλŸ‰ 이미지λ₯Ό μƒμ„±ν•˜λŠ” Gen AI μ‹œμŠ€ν…œ 을 κ°œλ°œν•˜μ—¬ 이λ₯Ό κ°œμ„ μ‹œν‚€κ³ μž ν•©λ‹ˆλ‹€.

πŸŒƒ νƒ€κ²ŸμΈ΅

AIλ₯Ό 톡해 λΆˆλŸ‰μ„ νŒλ³„ν•˜λŠ” λͺ¨λ“  κΈ°μ—… 및 λΆ€μ„œ

πŸ” μ£Όμš” κΈ°λŠ₯

  • Stable Diffusion을 μ΄μš©ν•œ 결함 이미지 생성 및 이미지 μˆ˜μ •

    • text-to-image, image-to-image, remove-background, inpainting, cleanup
  • ν•™μŠ΅μ„ 톡해 νŠΉμ • μ œν’ˆμ— λŒ€ν•œ 결함, 정상 이미지 ν•™μŠ΅

  • 이전 μƒμ„±ν•œ 이미지에 λŒ€ν•œ History 기둝

  • Token 관리 및 톡계 제곡

πŸ”¨ Tech Stack πŸ”¨

Front End

TypeScript Badge React Badge Vite Badge Electron Badge KonvaJS React Router Badge Redux Badge React Query Badge

HTML5 Badge Tailwind CSS Badge Styled Components

Back End

Python Badge FastAPI Badge Celery Badge

AI

PyTorch Badge Stable Diffusion DreamBooth Badge

DB

PostgreSQL Badge Redis SQLAlchemy MongoDB Badge

Infra

Amazon EC2 Badge Amazon S3 Badge Jenkins Badge Docker Badge

Team Collaboration Tools

Jira Badge GitLab Badge Mattermost Badge Git Badge Slack Badge

Architecture

DD




🌍 μ„œλΉ„μŠ€ κΈ°λŠ₯

🎯 Generation

πŸ“Œ Text To Image

text_to_image

Text Promptλ₯Ό ν†΅ν•΄μ„œ μ›ν•˜λŠ” 이미지λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
이λ₯Ό ν†΅ν•΄μ„œ λ‹€μ–‘ν•œ λΆˆλŸ‰ 이미지λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

Basic λͺ¨λ“œμ—μ„œλŠ” Text μž…λ ₯을 톡해 κ°„λ‹¨ν•˜κ²Œ μž…λ ₯을 ν•  수 있고
Advance λͺ¨λ“œμ—μ„œλŠ” 세뢀적인 Parameter듀을 μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ Image To Image

image_to_image

기쑴에 μƒμ„±ν•œ 이미지λ₯Ό μ—…λ‘œλ“œ. ν˜Ήμ€ λ‹€λ₯Έ νŒŒνŠΈμ—μ„œ μƒμ„±ν•œ 이미지λ₯Ό
λ°”λ‘œ κ°€μ Έμ™€μ„œ ν•΄λ‹Ή 이미지 λ°”νƒ•μœΌλ‘œ λ˜λ‹€λ₯Έ 이미지λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€!

πŸ“Œ Inpainting

inpainting

νŠΉμ • μ˜μ—­μ„ μ„ νƒν•΄μ„œ, 이에 κ΄€ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό μž…λ ₯ν•˜μ—¬ μ›ν•˜λŠ” 이미지λ₯Ό 생성 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ Clean Up

cleanup

λΆˆν•„μš”ν•œ μš”μ†Œλ“€μ„ AIκ°€ 슀슀둜 νŒŒμ•…ν•΄μ„œ μ—†μ• μ„œ 이미지λ₯Ό κΉ”λ”ν•˜κ²Œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€!

πŸ“Œ Remove Background

remove-bg

λ°°κ²½ν™”λ©΄ 뢀뢄을 μ•Œμ•„μ„œ μ—†μ•  μ£Όμ–΄ μ†μ‰½κ²Œ 투λͺ… 이미지λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

곡톡적인 μš”μ†Œ

Preset

preset

각각 νŒŒνŠΈμ—μ„œ μžκΈ°κ°€ μ›ν•˜λŠ” Prompt κΈ€ 및 μ—¬λŸ¬κ°€μ§€ Parameter 섀정값을 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이λ₯Ό 톡해 μ‰½κ²Œ μ—¬λŸ¬κ°€μ§€ parameter 및 ν”„λ‘¬ν”„νŠΈλ₯Ό 뢈러 올 수 μžˆμŠ΅λ‹ˆλ‹€.

Batch Mode

batch

μ—¬λŸ¬μž₯의 이미지에 λŒ€ν•΄μ„œ μ—…λ‘œλ“œ ν•˜μ§€ μ•Šκ³ , 파일 경둜만 μ§€μ •ν•˜λ©΄ μ•Œμ•„μ„œ 이미지λ₯Ό μ½μ–΄μ™€μ„œ
κ΄€λ ¨λœ 처리λ₯Ό μ†μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

Side Bar

sidebar

μ‚¬μ΄λ“œλ₯Ό ν†΅ν•΄μ„œ 이미지 선택, λ‹€μš΄λ‘œλ“œ, μž‘μ—…λ¬Ό μ‚­μ œ 등을 μ†μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€

Clip

ν•΄λ‹Ή κΈ°λŠ₯은 image-to-image, inpainting μ—λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

clip

ν•΄λ‹Ή κΈ°λŠ₯은 μ—…λ‘œλ“œν•œ 이미지에 λŒ€ν•΄μ„œ AIκ°€ μžλ™μœΌλ‘œ λΆ„μ„ν•˜μ—¬ μ•Œλ§žλŠ” ν”„λ‘¬ν”„νŠΈλ₯Ό μΆ”μ²œν•©λ‹ˆλ‹€.
μ‚¬μš©μžλŠ” μ œμ‹œλœ μ—¬λŸ¬ ν”„λ‘¬ν”„νŠΈλ“€ 쀑 λͺ‡κ°€μ§€ μ„ νƒν•˜μ—¬ μ‹€μ œ ν”„λ‘¬ν”„νŠΈμ— 반영 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

🎯 Training

training

μ‚¬μš©μžκ°€ λ§Œμ•½ νŠΉν™”λœ 이미지에 λŒ€ν•œ ν•™μŠ΅μ„ μ‹œν‚€κ³  싢을 λ•Œ
ν•΄λ‹Ή λΆ€λΆ„μ—μ„œ λ‹€μ–‘ν•œ νŒŒλΌλ―Έν„° 및 κΈ°λ³Έ Model 선택. ν•™μŠ΅ 이미지가 λ‹΄κΈ΄ 경둜 선택 등을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•™μŠ΅ μ€‘μ—λŠ” μ‹€μ‹œκ°„μœΌλ‘œ ν•™μŠ΅ 상황에 λŒ€ν•œ 톡계λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

training_status

🎯 History

history1

μ‚¬μš©μžλ“€μ€ Generation μ‚¬μš©ν•œ 기둝듀을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
ν•΄λ‹Ή 기둝을 ν†΅ν•΄μ„œ 이전에 μƒμ„±ν•œ 이미지듀에 λŒ€ν•΄μ„œ μ‰½κ²Œ λ‹€μš΄λ‘œλ“œ ν•  수 있으며,
ν•΄λ‹Ή κΈ°λ‘μ—λŠ” ν”„λ‘¬ν”„νŠΈ 정보, 툴 도ꡬ,λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

history2

λ˜ν•œ 뢁마크 κΈ°λŠ₯을 ν™œμš©ν•˜λ©΄ Home νŽ˜μ΄μ§€μ— ν•΄λ‹Ή 뢁마크 λͺ©λ‘μ„ λ³Ό 수 μžˆλ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

🎯 Settings

setting

Settingsμ—λŠ” ν˜„μž¬ GPU μ„œλ²„ μƒνƒœλ₯Ό 확인할 수 있고.
기본적으둜 μ‚¬μš©ν•  GPU μ„œλ²„λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

🎯Token

AI 생성 및 ν›ˆλ ¨μ— λŒ€ν•΄μ„œ λ§Žμ€ 컴퓨터 μžμ›μ„ μ†Œλͺ¨ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ‚¬μš©μžλ“€μ΄ λ¬΄μž‘μ • μ‚¬μš©ν•˜λŠ” 것을 막기 μœ„ν•΄ 토큰 μ΄λΌλŠ” μ‹œμŠ€ν…œμ„ λ„μž…ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ“Œ Token λ°œν–‰

token_issue

λ³Έ κΈ°λŠ₯은 계정 κΆŒν•œ 쀑 μ΅œμƒμœ„ super_admin μ—λ§Œ ν™œμ„±ν™” λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν•΄λ‹Ή κΈ°λŠ₯은 각 λΆ€μ„œλ³„μ— 토큰에 λŒ€ν•œ λ°œκΈ‰μ„ λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
ν•΄λ‹Ή λΆ€λΆ„μ—μ„œλŠ” λΆ€μ„œμ— 전달항 토큰 μ–‘ 및 μœ νš¨κΈ°κ°„μ„ μ„€μ •ν•΄μ„œ
λ„˜κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ Token λΆ„λ°°

token_distribute

λ³Έ κΈ°λŠ₯은 계정 κΆŒν•œ 쀑 super_admin ν˜Ήμ€ department_admin μ—λ§Œ ν™œμ„±ν™”κ°€ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ°œν–‰μ„ 톡해 받은 토큰에 λŒ€ν•΄μ„œ ν•΄λ‹Ή λΆ€μ„œ 내에 μžˆλŠ” μ‚¬λžŒλ“€ 쀑 전달할 μ‚¬λžŒλ“€μ„ μ„ νƒν—ˆμ—¬
ν•΄λ‹Ή μ‚¬λžŒλ“€μ—κ²Œ 토큰을 λ„˜κ²¨ 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ Statistics

token_statictics

λΆ€μ„œ (super_admin, department_admin 만 κ°€λŠ₯) 및 μžκΈ°μžμ‹ μ— λŒ€ν•œ
λ‹€μ–‘ν•œ μ‚¬μš© 톡계λ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • λͺ¨λΈ μ‚¬μš© λΉˆλ„
  • 토큰 μ‚¬μš©λŸ‰, 이미지 μƒμ„±λŸ‰
  • Tool μ‚¬μš© λΉˆλ„ 톡계

🎯 νšŒμ›

πŸ“Œ νšŒμ›κ°€μž… & 이메일 인증

signup

email_verify

νšŒμ› κ°€μž… μ‹œ ν•΄λ‹Ή 이메일이 μœ νš¨ν•œ 이메일인지 ν™•μΈν•˜κΈ° μœ„ν•΄μ„œ
확인 μ½”λ“œλ₯Ό μš”κ΅¬ν•©λ‹ˆλ‹€.

μ‹€μ œ 이메일에 μ „μ†‘λœ μ½”λ“œλ₯Ό μž…λ ₯ν•  경우 "μž„μ‹œ νšŒμ›" μœΌλ‘œμ„œ 승인이 되고
μ •μ‹μœΌλ‘œ 승인이 되기 μœ„ν•΄μ„œλŠ” κ΄€λ¦¬μžμ˜ νšŒμ›κ΄€λ¦¬λ₯Ό ν†΅ν•΄μ„œ
승인이 λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“Œ νšŒμ›κ΄€λ¦¬

λ³Έ κΈ°λŠ₯은 super_admin 만 κ°€λŠ₯ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€.

user_management

κΈ°μ‘΄ νšŒμ›λ“€μ— λŒ€ν•œ 계정 κΆŒν•œ 정보 μˆ˜μ •, 계정 μ‚­μ œ (κ°•μ œ νƒˆν‡΄) 등이 κ°€λŠ₯ν•˜λ©°,
μž„μ‹œ νšŒμ›μ— λŒ€ν•œ 승인,거절 선택을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ”† 기술

πŸ–₯️ Front End

Electon

Electron ν”„λ ˆμž„μ›Œν¬λ₯Ό ν™œμš©ν•˜μ—¬ React ν™˜κ²½μ—μ„œλ„ λ°μŠ€ν¬ν†± μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ²˜λŸΌ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ Web ν™˜κ²½μ—μ„œλŠ” λΆˆκ°€λŠ₯ ν•œ 것듀에 λŒ€ν•œ 섀정도 κ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€.

  • μ§€μ •ν•œ 파일 κ²½λ‘œμ— μžˆλŠ” 이미지듀을 μ½μ–΄μ˜€κΈ°
  • μ»€μŠ€ν…€ 단좕킀 μ„€μ •

μ΄λŸ¬ν•œ κΈ°λŠ₯은 Eletron의 IPC κ°œλ…μ„ ν™œμš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

electron-ipc-img(https://kdydesign.github.io/2020/12/23/electron-ipc-communication/)

기본적으둜 preload.ts μ—μ„œ React ν”„λ‘œμ νŠΈ μ•ˆμ—μ„œ μ‹€ν–‰μ‹œν‚¬ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  main.ts μ—μ„œ κ΄€λ ¨λœ μ²˜λ¦¬ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.

Lazy Loading

.exe 파일둜 μ‹€ν–‰λ˜λŠ” 것이라 해도 기본적으둜 React 의 ν™˜κ²½μ„ 바탕을 두고 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ React의 CSR (Client Side Rendering)을 λ”°λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

기본적으둜 CSR은 처음 FCP (First contentful paint) κ°€ λŠλ¦¬λ‹€λŠ” 단점을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ·Έ μ΄μœ λŠ” CSR νŠΉμ§•μ€ 기본적으둜 SPA (Signe Plage Applicaton)을 λ”°λ₯΄κΈ° λ•Œλ¬Έμ—
λͺ¨λ“  JS νŒŒμΌμ„ λ‹€ λ‹€μš΄μ„ λ°›μ•„μ•Ό 웹이 μ‹€ν–‰λ˜λŠ” νŠΉμ§• λ•Œλ¬Έμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ ꡳ이 μ²˜μŒμ— λ‹€ λ°›μ§€ μ•Šκ³  ν•„μš” ν•  λ•Œ 만 λ‹€μš΄λ°›κ²Œ λ§Œλ“€λ©΄ 초기 λ‘œλ”©μ΄ κ°μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ 기술이 λ°”λ‘œ Lazy Loading μž…λ‹ˆλ‹€.

🌐 Back End

FastAPI

κ³ μ„±λŠ₯에 쀑점을 두고 μžˆλŠ” κ°€μž₯ λΉ λ₯Έ 마이크둜 ν”„λ ˆμž„μ›Œν¬μΈ FastAPIλ₯Ό ν™œμš©ν•˜μ—¬ AI μ£Όμ œμ— μ ν•©ν•œ BE ν”„λ ˆμž„μ›Œν¬ ν™œμš© μ—­λŸ‰μ„ μŒ“μ„ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. FastAPI의 API λ¬Έμ„œν™” μžλ™ν™” κΈ°λŠ₯(swagger), type hintλ₯Ό μ‚¬μš©ν•œ λΉ λ₯΄κ³  μ•ˆμ „ν•œ validation, DI(μ˜μ‘΄μ„± μ£Όμž…) 쀑심 μ„€κ³„λ‘œ κ°„νŽΈν•œ κ°œλ°œμ΄λΌλŠ” μž₯점을 적극 ν™œμš©ν–ˆμŠ΅λ‹ˆλ‹€.

Redis & Celery

AI ν•™μŠ΅ 및 AI Generation κΈ°λŠ₯ μ‚¬μš©κ³Ό 같이 μž₯μ‹œκ°„μ˜ μž‘μ—…μ΄ ν•„μš”ν•œ κΈ°λŠ₯을 μ²˜λ¦¬ν•˜κ³  μ‹œμŠ€ν…œ 응닡성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ Redis와 Celeryλ₯Ό μ΄μš©ν•˜μ—¬ 비동기 처리λ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ Defect Studioμ—μ„œ AI λͺ¨λΈ ν•™μŠ΅ 쀑에도 λ‹€λ₯Έ μž‘μ—…λ“€μ„ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸŽ“ AI

Diffusion 및 λ‹€μ–‘ν•œ AI λͺ¨λΈμ„ 톡해 이미지 및 ν…μŠ€νŠΈ 등을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 diffusers, transformersλ₯Ό ν™œμš©ν•΄ λ‹€μ–‘ν•œ Generation AIλ₯Ό ν™œμš©ν•˜κ³ , DreamBooth 기반의 ν•™μŠ΅, λͺ¨λΈ Management λ“± μ—¬λŸ¬ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6