Skip to content

[ํŒŒ๋ž€ํ•™๊ธฐ][๐Ÿ†์ด๋…ธ๋ฒ ์ดํ„ฐ ์ƒ] ํ…์ŠคํŠธ์™€ ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ํŠน์ • ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„

Notifications You must be signed in to change notification settings

jujeongho0/Anything

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

30 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

2021-1 ์•„์ฃผ๋Œ€ ํŒŒ๋ž€ํ•™๊ธฐ(ajou_Paran)

ํŒ€๋ช… : Anything

๋„์ „ ๊ณผ์ œ๋ช… : ๊ฐ€๊ตฌ์‚ฐ์—… ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋ณตํ•ฉ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ์—ฐ๊ตฌ ๋ฐ ๊ฐœ๋ฐœ

๊ฐœ๋ฐœ ๋™๊ธฐ : ๊ฐ€๊ตฌ๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์™€ ํŒจํ„ด์ด ์กด์žฌํ•œ๋‹ค. ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ€๊ตฌ๊ฐ€ ์žˆ์„ ๋•Œ ์ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€๋งค์šฐ ์–ด๋ ต๋‹ค. ๋”ฐ๋ผ์„œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๊ธฐ์ˆ (NLP)๊ณผ, ์ปดํ“จํ„ฐ ๋น„์ „ ๊ธฐ์ˆ (CV)์„ ํ™œ์šฉํ•˜์—ฌ ๋ณธ์ธ์ด ์›ํ•˜๋Š” ํ˜•ํƒœ์™€ ํŒจํ„ด์˜ ๊ฐ€๊ตฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๊ตฌ ์‚ฐ์—… ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋ณตํ•ฉ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•œ๋‹ค.

๋„์ „ ๋ชฉํ‘œ : ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ์™€ ์ด๋ฏธ์ง€๋ฅผ ๋ณตํ•ฉ์ ์œผ๋กœ ์ด์šฉํ•ด ํŠน์ • ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„ ๊ฐœ๋ฐœ

๊ฐœ์š” :

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ์™€ ํŒจํ„ด ์ด๋ฏธ์ง€ ์ž…๋ ฅ
  2. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋Š” tensorflow์˜ Bidirectional GRU๋ฅผ ์ด์šฉํ•ด ํ•™์Šตํ•œ NLP ๋ชจ๋ธ์„ ํ†ตํ•ด 22๊ฐœ์˜ ๊ฐ€๊ตฌ ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ๊ฐ€๊ตฌ๋กœ ๋ถ„๋ฅ˜
  3. sklearn.neighbors.KNeighborsClassifier()๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€(GoogleNet ๋ชจ๋ธ์„ transfer learningํ•œ CNN ๋ชจ๋ธ๋กœ feature ์ถ”์ถœ)์™€ ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” 4000์—ฌ์žฅ์˜ ํŒจํ„ด ์ด๋ฏธ์ง€ feature ์ค‘ ์œ ์‚ฌํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€ 4๊ฐœ ์ถ”์ถœ
  4. yolov5์™€ cv2.grabCut()์„ ์ด์šฉํ•ด 2-1์—์„œ ๋ถ„๋ฅ˜๋œ ๊ฐ€๊ตฌ์˜ ์ด๋ฏธ์ง€์—์„œ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ
  5. ORB ๊ธฐ์ˆ (Oriented FAST and Rotated BRIEF)๊ณผ BFMatcher ๊ธฐ์ˆ  ์ด์šฉํ•ด "์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€ + 2-2์—์„œ ์ถ”์ถœํ•œ 4๊ฐœ์˜ ์œ ์‚ฌ ํŒจํ„ด"๊ณผ "3์—์„œ ๋ฐฐ๊ฒฝ์ด ์ œ๊ฑฐ๋œ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€"์—์„œ ๋‹ค์ˆ˜์˜ ๋น„์Šทํ•œ ๋ฒกํ„ฐ๊ฐ€ ์ถ”์ถœ๋œ๋‹ค๋ฉด ํ•ด๋‹น ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ€๊ตฌ๋กœ ํŒ๋‹จํ•˜์—ฌ ์ถ”์ถœ
  6. ์ตœ์ข…์ ์œผ๋กœ, 4์—์„œ ์ถ”์ถœํ•œ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€๋“ค์„ ์ตœ์ข… ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋ณด์—ฌ์คŒ
  7. Django๋ฅผ ์ด์šฉํ•ด ์œ„ ๊ณผ์ •์„ ์›น์œผ๋กœ ๊ตฌํ˜„
  8. ์›น ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค Pythonanywhere๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„ ๋ฐฐํฌ

22๊ฐœ์˜ ๊ฐ€๊ตฌ ์นดํ…Œ๊ณ ๋ฆฌ :

  '๊ฐ€์ฃฝ์†ŒํŒŒ', '์†ŒํŒŒ๋ฒ ๋“œ', 
  '๋”๋ธ”/ํ€ธ/ํ‚น์นจ๋Œ€', '์‹ฑ๊ธ€/์ˆ˜ํผ์‹ฑ๊ธ€+์นจ๋Œ€', '๋””๋ฐ˜์นจ๋Œ€', 
  '์˜ท์žฅ', '์–ด๋ฆฐ์ด์˜ท์žฅ', 
  '๋ฐ”ํ…Œ์ด๋ธ”', '์ปคํ”ผํ…Œ์ด๋ธ”/๋ณด์กฐํ…Œ์ด๋ธ”', '์‹ํƒ',  
  '์‹ํƒ์˜์ž', '๋ฐ”์˜์ž', '์‚ฌ๋ฌด์šฉ์˜์ž', '์Šคํˆด/๋ฒค์น˜', '์–ด๋ฆฐ์ด์˜์ž', '์˜์•„์šฉ์˜์ž', '๊ฐ€์ฃฝ์•”์ฒด์–ด', '๋ผํƒ„์•”์ฒด์–ด', '๋ฆฌํด๋ผ์ด๋„ˆ', 
  '์ปคํŠผ', '์ƒค์›Œ์ปคํŠผ', '๋ธ”๋ผ์ธ๋“œ'

Work Flow

1


Prototype

  • "ํ™”์žฅ์‹ค์— ์“ฐ๋Š” ์ปคํŠผ" + ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ โ†’ ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” "์ƒค์›Œ์ปคํŠผ" ์ถœ๋ ฅ

  • "์•ผ์ž๋กœ ๋งŒ๋“  ์˜์ž" + ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ โ†’ ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” "๋ผํƒ„ ์•”์ฒด์–ด" ์ถœ๋ ฅ

  • "๊ฐ€์ฃฝ์œผ๋กœ ๋งŒ๋“  ์†ŒํŒŒ" + ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ โ†’ ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” "๊ฐ€์ฃฝ์†ŒํŒŒ" ์ถœ๋ ฅ

  • "๋งคํŠธ๋ฆฌ์Šค ์นจ๋Œ€" + ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ โ†’ ํŠน์ • ํŒจํ„ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” "๋””๋ฐ˜์นจ๋Œ€" ์ถœ๋ ฅ


์ด๋…ธ๋ฒ ์ดํ„ฐ ์ƒ ์ˆ˜์ƒ



๊ฐ€์ถœ์› ๋“ฑ๋ก



NLP๋ฅผ ์ด์šฉํ•ด ๊ฐ€๊ตฌ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ๊ตฌํ˜„(NLP_BiGRU)

  • ๊ฐœ์š”

    • 22์ข…์˜ ๊ฐ€๊ตฌ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ์ธ๊ณต์ง€๋Šฅ ๋ชจ๋ธ
    • ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” IKEA์—์„œ ์›น ํฌ๋กค๋งํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ
    • Bidirectional GRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉ
  • ๊ตฌํ˜„ ์‚ฌํ•ญ

    • ikea_crawling.ipynb() : BeautifulSoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํ•™์Šต๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋  ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ IKEA์˜ [๊ฐ€๊ตฌ ์„ค๋ช…]์„ ์›น ํฌ๋กค๋ง

    • NLP_BiGRU.ipynb() :
    • konlpy ๋ผ์ด๋ธŒ๋Ÿฌ์ด์˜ okt() ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ์ด์šฉํ•ด ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ† ํฐํ™”
    • ๋‹จ์–ด์˜ ๋นˆ๋„์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ •์ˆ˜ ์ธ์ฝ”๋”ฉ(์ƒ์œ„ ๋นˆ๋„์ˆ˜ 1000๊ฐœ์˜ ๋‹จ์–ด๋งŒ ์‚ฌ์šฉ)
    • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ค‘ ์ตœ์žฅ ๊ธธ์ด๋กœ ํŒจ๋”ฉ
    • ์œ„ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ „์ฒ˜๋ฆฌ๋œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ Embedding()์„ ์ด์šฉํ•ด ๋‹จ์–ด ์ž„๋ฒ ๋”ฉ(128 ์ฐจ์›์„ ๊ฐ€์ง€๋Š” ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ 1000๊ฐœ(๋‹จ์–ด ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ))
    • 'Bidirectional GRU' ๋ชจ๋ธ ์ด์šฉ
    • 'categorical_crossentropy' ์†์‹คํ•จ์ˆ˜ ์ด์šฉ
    • 'adam' ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉ
    • ๊ตฌํ˜„ํ•œ NLP ์ธ๊ณต์ง€๋Šฅ์„ 'anythingNLP.h5'๋กœ ์ €์žฅ
  • ๊ฒ€์ฆ ์ •ํ™•๋„

  ...์ค‘๋žต...
  Epoch 00020: val_acc did not improve from 0.99342

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ชจ๋ธ ๊ตฌํ˜„(CV_furniture)

  • ๊ฐœ์š”

    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” Google์—์„œ ์›น ํฌ๋กค๋งํ•œ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€(CV_furniture/images/) ์ค‘ NLP์—์„œ ์ถ”์ถœ๋œ ๊ฐ€๊ตฌ์˜ ์ด๋ฏธ์ง€
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด + ์œ ์‚ฌ ํŒจํ„ด 4๊ฐœ ์ถ”์ถœ โ†’ ์ด 5๊ฐœ์˜ ํŒจํ„ด์œผ๋กœ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€์™€ ๋ฒกํ„ฐ ๋น„๊ต
    • ์ผ์ • ๊ธฐ์ค€ ์ด์ƒ์˜ ๋ฒกํ„ฐ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ๋กœ ํŒ๋‹จํ•ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ๋กœ ์ถœ๋ ฅ
  • ๊ตฌํ˜„ ์‚ฌํ•ญ

    • image_webcrawling.ipynb : selenium ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Google ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์ธ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€๋ฅผ Google์—์„œ ์›น ํฌ๋กค๋ง

    • CV.ipynb :
    • sklearn.neighbors.KNeighborsClassifier()๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€(GoogleNet ๋ชจ๋ธ์„ transfer learningํ•œ CNN ๋ชจ๋ธ๋กœ feature ์ถ”์ถœ)์™€ ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” 4000์—ฌ์žฅ์˜ ํŒจํ„ด ์ด๋ฏธ์ง€(CV_furniture/DTD/) feature ์ค‘ ์œ ์‚ฌํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€ 4๊ฐœ ์ถ”์ถœ โ†’ ์ด 5๊ฐœ์˜ ํŒจํ„ด ์‚ฌ์šฉ
    • yolov5์™€ cv2.grabCut()์„ ์ด์šฉํ•ด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€์—์„œ ๊ฐ€๊ตฌ ์ธ์‹์˜ ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ
    • ORB ๊ธฐ์ˆ (Oriented FAST and Rotated BRIEF)๊ณผ BFMatcher ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด ์œ„์—์„œ ๊ตฌํ•œ 5๊ฐœ์˜ ํŒจํ„ด๊ณผ ๋ฐฐ๊ฒฝ์ด ์ œ๊ฑฐ๋œ ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€ ๋ฒกํ„ฐ ๋น„๊ต โ†’ ๋‹ค์ˆ˜์˜ ๋น„์Šทํ•œ ๋ฒกํ„ฐ๊ฐ€ ์ถ”์ถœ๋œ๋‹ค๋ฉด ํ•ด๋‹น ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ€๊ตฌ๋กœ ํŒ๋‹จํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ๋กœ ์ถœ๋ ฅ
  • GoogleNet ๋ชจ๋ธ ์ •ํ™•๋„

  76%
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด๊ณผ ์œ ์‚ฌ ํŒจํ„ด ์œ ์‚ฌ๋„

  83.57%

Django๋ฅผ ์ด์šฉํ•ด ํ”„๋ก ํŠธ์—”๋“œ + ๋ฐฑ์—”๋“œ(NLP์™€ CV ๋ชจ๋ธ ๊ฒฐํ•ฉ) ์›น ๊ตฌํ˜„(anything_site)

  • ๊ฐœ์š”

    • Django๋ฅผ ์ด์šฉํ•ด ์œ„ ๊ณผ์ •์„ ๊ฒฐํ•ฉํ•ด ๋ฐฑ์—”๋“œ ๊ตฌํ˜„
    • XD๋ฅผ ์ด์šฉํ•ด ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„
    • ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ์™€ ํŒจํ„ด ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ, ํŒจํ„ด ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ํ•ด๋‹น ๊ฐ€๊ตฌ์˜ ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์›น ๊ตฌํ˜„
  • ๊ตฌํ˜„ ์‚ฌํ•ญ

    • anything_site/form/templates/main_page.html : HTML์—์„œ form ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ ๋ฐ ํŒจํ„ด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

    • anything_site/form/views.py :
    • request.POST๋ฅผ ์ด์šฉํ•ด ์ „๋‹ฌ๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ NLP ๋ชจ๋ธ์„ ํ†ตํ•ด 22๊ฐœ์˜ ๊ฐ€๊ตฌ ์นดํ…Œ๊ณ ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ํŠน์ • ๊ฐ€๊ตฌ๋กœ ์ถ”์ถœ
    • request.FILES๋ฅผ ์ด์šฉํ•ด ์ „๋‹ฌ๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€๋ฅผ CV ๋ชจ๋ธ์„ ํ†ตํ•ด ์œ ์‚ฌ ํŒจํ„ด ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ฐ ํ•ด๋‹น ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€ ์ถ”์ถœ

    • anything_site/form/templates/searched_page.html :
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ๋ฐ NLP ๋ชจ๋ธ์„ ํ†ตํ•ด ์ถ”์ถœ๋œ ๊ฐ€๊ตฌ ์นดํ…Œ๊ณ ๋ฆฌ ๋กœ๋“œ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํŒจํ„ด ์ด๋ฏธ์ง€ ๋ฐ CV ๋ชจ๋ธ์„ ํ†ตํ•ด ์ถ”์ถœ๋œ ์œ ์‚ฌ ํŒจํ„ด ์ด๋ฏธ์ง€ 4๊ฐœ ๋กœ๋“œ
    • ํ•ด๋‹น ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€ ๋กœ๋“œ

    • anything_site/static/style : XD๋ฅผ ์ด์šฉํ•ด ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„(.HTML, .CSS, .JS)

    • ์ฐธ๊ณ  ์‚ฌํ•ญ :
    • ํŒจํ„ด ์ด๋ฏธ์ง€ 4000์—ฌ์žฅ(anything_site/static/DTD), ๊ฐ€๊ตฌ ์ด๋ฏธ์ง€(anything_site/static/images), ํ”„๋ก ํŠธ์—”๋“œ ํŒŒ์ผ(anything_site/static/style) โ†’ Django์˜ static ํŒŒ์ผ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•˜๋Š” ํŒจํ„ด ์ด๋ฏธ์ง€ โ†’ anything_site/media์— ๋™์ ์œผ๋กœ ์ €์žฅ โ†’ Django์˜ media ํŒŒ์ผ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ

About

[ํŒŒ๋ž€ํ•™๊ธฐ][๐Ÿ†์ด๋…ธ๋ฒ ์ดํ„ฐ ์ƒ] ํ…์ŠคํŠธ์™€ ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ํŠน์ • ํŒจํ„ด์ด ์žˆ๋Š” ๊ฐ€๊ตฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages