Skip to content

boostcampaitech7/level4-nlp-finalproject-hackathon-nlp-05-lv3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

[Lv. 4] ๊ธฐ์—…์—ฐ๊ณ„ํ•ด์ปคํ†ค - ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ

๐Ÿ›๏ธ Foodly (์‹œ๊ฐ์žฅ์• ์ธ์„ ์œ„ํ•œ ์‹๋ฃŒํ’ˆ ์‡ผํ•‘ ์„œ๋น„์Šค)

image

๐Ÿƒ ํ”„๋กœ์ ํŠธ ์„ค๋ช…

๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

demo.mp4
ํŠน์ง•ใ€€ใ€€ใ€€ใ€€ ์„ค๋ช…
์ฃผ์ œ ์‹œ๊ฐ์žฅ์• ์ธ์„ ์œ„ํ•œ ์˜จ๋ผ์ธ ์‹๋ฃŒํ’ˆ ์‡ผํ•‘ ์ง€์› ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
๋ฌธ์ œ ์ •์˜ ์˜จ๋ผ์ธ ์‡ผํ•‘์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŽธ๋ฆฌํ•œ ๊ณผ์ •์ด์ง€๋งŒ, ์‹œ๊ฐ์žฅ์• ์ธ์—๊ฒŒ๋Š” ํ™”๋ฉด์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์Œ์„ฑ์œผ๋กœ ๋“ฃ๊ณ  ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์ƒํ’ˆ์˜ ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด์™€ ์•Œ๋ ˆ๋ฅด๊ธฐ ์ •๋ณด ๋“ฑ ์ด๋ฏธ์ง€๋กœ ์ œ๊ณต๋˜๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์—์„œ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ - ์ƒํ’ˆ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€(์ธ๋„ค์ผ)๋ฅผ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ „๋‹ฌ
- ์ƒํ’ˆ์˜ ํฌ๊ธฐ ์ •๋ณด, ๋ณด๊ด€๋ฒ•, ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด ๋“ฑ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ง๊ด€์ ์ธ ํ…์ŠคํŠธ๋กœ ์ œ๊ณต
- ๋ฆฌ๋ทฐ ๊ธยท๋ถ€์ • ์˜๊ฒฌ ์š”์•ฝ, ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ์ถ”์ฒœ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ
๊ฒฐ๊ณผ๋ฌผ WrapUp Report, Presentation Material

๐Ÿ’ก ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ

image

โœ… ์‹œ๊ฐ์žฅ์• ์ธ 7๋ถ„์˜ ํ‘ธ๋“œ๋ฆฌ ์‚ฌ์šฉ์„ฑ ํ‰๊ฐ€

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-02-18 แ„‹แ…ฉแ„’แ…ฎ 9 01 07

๐ŸŸ "๋‚˜์•ผ, ์ž, ์—ฐ์–ด"ํŒ€ ๋ฉค๋ฒ„ ์†Œ๊ฐœ

๊ณฝํฌ์ค€ย  ๊น€์ •์€ย  ๊น€์ง„์žฌย  ์˜ค์ˆ˜ํ˜„ย  ์œค์„ ์›…ย  ์ •๋ฏผ์ง€ย 
๊ณฝํฌ์ค€ ๊น€์ •์€ ๊น€์ง„์žฌ ์˜ค์ˆ˜ํ˜„ ์œค์„ ์›… ์ •๋ฏผ์ง€

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์—ญํ•  ๋ถ„๋‹ด

ํŒ€์›ใ€€ใ€€ ์—ญํ• 
๊ณฝํฌ์ค€ ๋ฆฌ๋ทฐ ์š”์•ฝ ๋ฐ ํ‚ค์›Œ๋“œ ์ถ”์ถœ - ASTE(ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„, ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง, Metric ์„ ์ •), Clustering์„ ํ†ตํ•œ ์ถ”์ฒœ ํ‚ค์›Œ๋“œ ํฌํ•จ ๊ฒ€์ƒ‰๊ณผ ๋ฆฌ๋ทฐ ์š”์•ฝ
๊น€์ •์€ ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด ์ถ”์ถœ - YOLO11 SFT, CLOVA OCR output ํ›„์ฒ˜๋ฆฌ, Rule-based ๋ฐฉ์‹ ์ ์šฉ ์‹คํ—˜, HCX Fine-Tuning, ํ‰๊ฐ€ Metric ์„ ์ •
๊น€์ง„์žฌ ํฌ๊ธฐ ์ •๋ณด ๋ฌ˜์‚ฌ, ๋ฆฌ๋ทฐ ์š”์•ฝ ๋ฐ ํ‚ค์›Œ๋“œ ์ถ”์ถœ, ์•ฑ ๊ฐœ๋ฐœ - ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ง•, YOLO11 SFT, Rule-based ํ›„์ฒ˜๋ฆฌ, ASTE(HCX/DeepSeek Prompt Engineering, DeepSeek SFT), React Native, React (Chrome Extension) Spring Framework ๊ฐœ๋ฐœ
์˜ค์ˆ˜ํ˜„ ๋ฆฌ๋ทฐ ์š”์•ฝ ๋ฐ ํ‚ค์›Œ๋“œ ์ถ”์ถœ - ASTE(HCX/DeepSeek Prompt Engineering, DeepSeek SFT), Clustering์„ ํ†ตํ•œ ์ถ”์ฒœ ํ‚ค์›Œ๋“œ ํฌํ•จ ๊ฒ€์ƒ‰๊ณผ ๋ฆฌ๋ทฐ ์š”์•ฝ
์œค์„ ์›… ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์„ค๋ช… ์ƒ์„ฑ - Janus Pro Fine-Tuning, HCX ํ›„์ฒ˜๋ฆฌ(์š”์•ฝ, ๋ฒˆ์—ญ, Hallucination ์ œ๊ฑฐ), 1376๊ฐœ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ๊ณจ๋“œ๋ผ๋ฒจ ์ถ”์ถœ, VLM ํ‰๊ฐ€ metric ์„ค๊ณ„
์ •๋ฏผ์ง€ ์ƒํ’ˆ ์„ค๋ช… ์š”์•ฝ, ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด ์ถ”์ถœ - ์ƒํ’ˆ ์„ค๋ช… ์š”์•ฝ HCX Fine-Tuning, ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด ํ‰๊ฐ€ metric ์„ค๊ณ„ ๋ฐ golden label ์ƒ์„ฑ, OCR๊ณผ LLM์„ ํ™œ์šฉํ•œ ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด ์ถ”์ถœ ๋กœ์ง ์„ค๊ณ„ ๋ฐ ์‹คํ—˜

๐Ÿ“… ํ”„๋กœ์ ํŠธ ํƒ€์ž„๋ผ์ธ

  • ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์€ 2025-01-10 ~ 2025-02-10์ž…๋‹ˆ๋‹ค.

Foodly ํƒ€์ž„๋ผ์ธ


๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.
|-- README.md
|-- back
|   |-- build.gradle         # ๋ฐฑ์—”๋“œ ๋นŒ๋“œ ์„ค์ •
|   |-- docker-compose.yml   # Docker ์„ค์ • ํŒŒ์ผ
|   |-- gradle               # Gradle ์„ค์ • ๋ฐ wrapper ํŒŒ์ผ
|   |-- gradlew              # Gradle ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ (Linux/Mac)
|   |-- gradlew.bat          # Gradle ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ (Windows)
|   |-- settings.gradle      # ๋ชจ๋“ˆ ์„ค์ • ํŒŒ์ผ
|   `-- src                  # ๋ฐฑ์—”๋“œ ์†Œ์Šค ์ฝ”๋“œ
|-- doc
|   |-- image                # ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์ด๋ฏธ์ง€ ์ž๋ฃŒ (๋‹ค์ด์–ด๊ทธ๋žจ, ์Šคํฌ๋ฆฐ์ƒท ๋“ฑ)
|   `-- ...pdf               # ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ ์ž๋ฃŒ, ๋ณด๊ณ ์„œ ๋ฌธ์„œ
|-- eda
|   |-- README.md            # EDA ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
|   |-- eda1_visualize.ipynb # ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Notebook (EDA ๋‹จ๊ณ„1)
|   |-- eda2_visualize.ipynb # ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” Notebook (EDA ๋‹จ๊ณ„2)
|   `-- product_crawling.py  # ์ œํ’ˆ ๋ฐ์ดํ„ฐ ํฌ๋กค๋ง ์Šคํฌ๋ฆฝํŠธ
|-- front
|   |-- chrome_extension     # ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ จ ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ
|   `-- foodly_application   # Foodly ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (๋ชจ๋ฐ”์ผ/์›น) ๊ด€๋ จ ์ฝ”๋“œ, Node.js ๊ธฐ๋ฐ˜
`-- models
    |-- final_outputs                        # ๋ชจ๋ธ ์‹คํ–‰ ํ›„ ์ƒ์„ฑ๋œ ์ตœ์ข… ๋ฐ์ดํ„ฐ
    |-- nutrition_ingredients_information    # ์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด
    |   |-- README.md                        # ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
    |   `-- main.py, prompt, src ๋“ฑ
    |-- product_summarization                # ์ƒํ’ˆ ์ƒ์„ธ์ •๋ณด ์š”์•ฝ
    |   |-- README.md                        # ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
    |   |-- main.py, prompt, src ๋“ฑ
    |-- review                               # ๋ฆฌ๋ทฐ ์š”์•ฝ ๋ฐ ์ถ”์ฒœ ํ‚ค์›Œ๋“œ๋ณ„ ์ƒํ’ˆ ์žฌ์ •๋ ฌ
    |   |-- README.md                        # ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
    |   |-- prompt, src, utils ๋“ฑ
    |-- size_description                     # ์ƒํ’ˆ ํฌ๊ธฐ ์ •๋ณด ์ถ”์ถœ
    |   |-- README.md                        # ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
    |   |-- src, data, size_info.yaml ๋“ฑ
    `-- thumbnail_description                # ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ์„ค๋ช…
        |-- README.md                        # ๋ชจ๋“ˆ ๊ฐœ์š” ๋ฐ ์‹คํ–‰ ๊ฐ€์ด๋“œ
        `-- main.py, prompt, src, utils ๋“ฑ


๐Ÿ’พ ํ”„๋กœ์ ํŠธ ์„ค์น˜ ๋ฐ ์‹คํ–‰

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” AI๋ฅผ ํฌํ•จํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ์‹คํ–‰ ๋ฐฉ๋ฒ•์ด ๊ฐ๊ฐ ๋ณ„๋„๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ํด๋” ๋‚ด์˜ README.md์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ ํŒŒํŠธ์˜ ์ฃผ์š” ์‹คํ–‰ ๋ฐฉ๋ฒ• ์•ˆ๋‚ด์ž…๋‹ˆ๋‹ค.

models (๋ชจ๋ธ ๊ด€๋ จ ๋ชจ๋“ˆ)

๋ชจ๋ธ ๊ด€๋ จ ๋ชจ๋“ˆ์€ ์ด 5๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋ธ ๋ชจ๋“ˆ์€ ๋…๋ฆฝ์ ์ธ Python ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • nutrition_ingredients_information/ (์„ฑ๋ถ„/์˜์–‘ ์ •๋ณด)
  • product_summarization/ (์ƒํ’ˆ ์ƒ์„ธ์ •๋ณด ์š”์•ฝ)
  • review/ (๋ฆฌ๋ทฐ ์š”์•ฝ ๋ฐ ์ถ”์ฒœ ํ‚ค์›Œ๋“œ๋ณ„ ์ƒํ’ˆ ์žฌ์ •๋ ฌ)
  • size_description/ (์ƒํ’ˆ ํฌ๊ธฐ ์ •๋ณด)
  • thumbnail_description/ (์ธ๋„ค์ผ ์ด๋ฏธ์ง€)

์‹คํ–‰:

  • environment.yml ํŒŒ์ผ์„ ํ™œ์šฉํ•ด Conda ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • python main.py ๋ช…๋ น์–ด๋กœ ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์˜: ๊ฐ ๋ชจ๋“ˆ์˜ ๊ตฌ์ฒด์ ์ธ ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ๋ชจ๋“ˆ ๋‚ด README๋‚˜ ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

eda (๋ฐ์ดํ„ฐ ํƒ์ƒ‰/๋ถ„์„)

์„ค์น˜:

  • Python ๊ฐ€์ƒํ™˜๊ฒฝ(์˜ˆ: Conda)์„ ๊ตฌ์„ฑํ•˜๊ณ , ํ•„์š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. (eda/environment.yml ํŒŒ์ผ ์ฐธ๊ณ )

์‹คํ–‰:

  • Jupyter Notebook์„ ์‹คํ–‰ํ•˜์—ฌ eda1_visualize.ipynb์™€ eda2_visualize.ipynb ํŒŒ์ผ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • python product_crawling.py ๋ช…๋ น์–ด๋กœ ํฌ๋กค๋ง ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ƒ์„ธ ๊ฐ€์ด๋“œ๋Š” eda/README.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

frontend (ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)

chrome_extension

์„ค์น˜:

  • npm install๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰:

  • npm build๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ buildํ•ฉ๋‹ˆ๋‹ค.
  • ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ '์••์ถ• ํ•ด์ œ๋œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ'์œผ๋กœ front/chrome_extension/dist๋ฅผ ๋กœ๋“œํ•˜๋ฉด ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

foodly_application

์„ค์น˜:

  • Node.js ๊ธฐ๋ฐ˜์œผ๋กœ, npm install๋กœ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • React Native (iOS, Android Application)๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ํ™˜๊ฒฝ์„ค์ •์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.
  • (iOS) cd front/chrome_extension/ios && pod install์„ ์ด์šฉํ•˜์—ฌ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰:

  • (iOS) npm run ios๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • (Android) npm run android๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

backend (์„œ๋ฒ„)

์„ค์น˜:

  • docker-compose.yml์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ €์žฅํ•˜๋Š” mySQL์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰:

  • ./gradlew bootRun ๋ช…๋ น์–ด๋กœ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ž์„ธํ•œ ๋‚ด์šฉ์€ back/README.md๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

About

level4-nlp-finalproject-hackathon-nlp-05-lv3 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published