Skip to content

πŸ€±λ””μ–΄λ²¨λ¦¬(DearBelly)🀱: μ‚°λͺ¨μ™€ νƒœμ•„λ₯Ό μœ„ν•œ ν”Œλž«νΌ, 디어벨리

Notifications You must be signed in to change notification settings

DearBelly/DearBelly-CV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🩹 Pill Analysis Module

πŸ“˜ κ°œμš”

λ³Έ λ¦¬ν¬μ§€ν† λ¦¬λŠ” DearBelly의 μ•½ 이미지 인식 기반의 μž„μ‚°λΆ€ 볡용 자문 μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€.

경ꡬ약 이미지λ₯Ό λΆ„λ₯˜ν•˜μ—¬ μ•½ν’ˆλͺ…을 μ‹λ³„ν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό λ°”νƒ•μœΌλ‘œ LLM을 톡해 μž„μ‚°λΆ€ 볡용 κ°€λŠ₯ 여뢀와 μ£Όμ˜μ‚¬ν•­μ„ μ•ˆλ‚΄ν•©λ‹ˆλ‹€.

전체 개발 νŒŒμ΄ν”„λΌμΈμ€ 데이터 μ „μ²˜λ¦¬ β†’ 데이터 증강 β†’ λͺ¨λΈ ν•™μŠ΅(SimpleCNN/LightCNN/EfficientNet-B3) β†’ μΆ”λ‘  β†’ LLM 자문(OpenAI API) 순으둜 κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

이미지 데이터셋 μ „μ²˜λ¦¬λΆ€ν„° CNN ν•™μŠ΅, μΆ”λ‘ , μœ ν‹Έλ¦¬ν‹° ν…ŒμŠ€νŠΈκΉŒμ§€ ν•˜λ‚˜μ˜ ꡬ쑰둜 ν†΅ν•©λ˜μ–΄ 있으며,
Google Colab / 둜컬 ν™˜κ²½μ—μ„œ λ™μΌν•˜κ²Œ μž¬ν˜„ κ°€λŠ₯ν•©λ‹ˆλ‹€.


🧠 μ£Όμš” κΈ°λŠ₯

ꡬ뢄 μ„€λͺ…
데이터 μ „μ²˜λ¦¬(data_prep) ZIP ν•΄μ œ, 이미지 개수 검사, 쀑앙 크둭 및 λ¦¬μ‚¬μ΄μ¦ˆ μžλ™ν™”
데이터 증강(data_augmentation) λ…Έμ΄μ¦ˆ μΆ”κ°€, Shear, 밝기 쑰절 λ“± 이미지 λ‹€μ–‘ν™” κΈ°λŠ₯
데이터셋 λ‘œλ”(dataset_precomputed.py) JSON 기반 이미지·라벨 λ§€ν•‘ μžλ™ 생성 및 PyTorch Dataset ꡬ성
λͺ¨λΈ(models) SimpleCNN, LightCNN, EfficientNet-B3 λ“± 닀쀑 λ°±λ³Έ λͺ¨λΈ 지원
ν•™μŠ΅(trainers) LightCNN / EfficientNet / TIMM 백본별 ν•™μŠ΅ 루프 및 ArcFace, Mixup μ˜΅μ…˜ 제곡
μ˜΅ν‹°λ§ˆμ΄μ €(optimizer) SGD / Momentum / Adam λ“± 비ꡐ μ‹€ν—˜μš© μ΅œμ ν™” λͺ¨λ“ˆ 포함
μΆ”λ‘ (inference/predict.py) ν•™μŠ΅λœ λͺ¨λΈλ‘œ 단일 이미지 예츑 및 Top-k ν™•λ₯  좜λ ₯
톡합 μ‹€ν–‰(predict_and_advise.py) 이미지 μΆ”λ‘  ν›„ LLM 기반 볡용 μžλ¬ΈκΉŒμ§€ ν•œ λ²ˆμ— μ‹€ν–‰
μ„œλΉ„μŠ€(services/pregnancy_advice.py) LLM(OpenAI API) 기반 μž„μ‚°λΆ€ 볡용 κ°€λŠ₯ μ—¬λΆ€ 및 μ£Όμ˜μ‚¬ν•­ μ•ˆλ‚΄
ν…ŒμŠ€νŠΈ(tests/test_training_smoke.py) λͺ¨λΈ ν•™μŠ΅ 및 μΆ”λ‘  슀λͺ¨ν¬ ν…ŒμŠ€νŠΈ
μœ ν‹Έ(utils) μ‹œλ“œ κ³ μ •(seed), 경둜 관리(paths), 라벨 λ§€ν•‘(idx2label), EarlyStopping λ“± 곡톡 μœ ν‹Έ

🧩 ν”„λ‘œμ νŠΈ ꡬ쑰

    ai_modules/
        β”œβ”€β”€ src/
        β”‚   β”œβ”€β”€ data_prep/
        β”‚   β”‚   β”œβ”€β”€ dataset_precomputed.py        # JSON 기반 데이터셋 λ‘œλ” (image_path + label)
        β”‚   β”‚   β”œβ”€β”€ extract_archives.py           # ZIP μ••μΆ• μžλ™ ν•΄μ œ 슀크립트
        β”‚   β”‚   β”œβ”€β”€ count_images.py               # 폴더별 이미지 개수 검사
        β”‚   β”‚   └── center_crop_resize.py         # 쀑앙 크둭 및 λ¦¬μ‚¬μ΄μ¦ˆ μžλ™ν™”
        β”‚   β”‚
        β”‚   β”œβ”€β”€ data_augmentation/                # 데이터 증강 (κ°œλ³„ μ‹€ν–‰ν˜•)
        β”‚   β”‚   β”œβ”€β”€ add_noise.py                  # κ°€μš°μ‹œμ•ˆ λ…Έμ΄μ¦ˆ μΆ”κ°€
        β”‚   β”‚   β”œβ”€β”€ shear_images.py               # Shear(기울이기) λ³€ν˜•
        β”‚   β”‚   └── adjust_brightness.py          # 밝기 쑰절
        β”‚   β”‚
        β”‚   β”œβ”€β”€ models/
        β”‚   β”‚   β”œβ”€β”€ simple_cnn.py                 # 2 conv + 2 fc 기반 κ²½λŸ‰ CNN
        β”‚   β”‚   β”œβ”€β”€ model_lightcnn.py             # LightCNN (AdaptiveAvgPool 포함)
        β”‚   β”‚   └── efficientnet_baseline.py      # EfficientNet-B3 λ°±λ³Έ λͺ¨λΈ
        β”‚   β”‚
        β”‚   β”œβ”€β”€ trainers/
        β”‚   β”‚   β”œβ”€β”€ train_light_cnn.py            # LightCNN ν•™μŠ΅/평가 루프
        β”‚   β”‚   β”œβ”€β”€ train_efficientnet_baseline.py# EfficientNet-B3 베이슀라인 ν•™μŠ΅ 슀크립트
        β”‚   β”‚   └── train_timm.py                 # TIMM λ°±λ³Έ ν•™μŠ΅ (ArcFace/Mixup μ˜΅μ…˜ 지원)
        β”‚   β”‚
        β”‚   β”œβ”€β”€ optimizer/
        β”‚   β”‚   β”œβ”€β”€ __init__.py
        β”‚   β”‚   β”œβ”€β”€ optim_experiment.py           # run_experiment_for, plot_from_csvs λ“± 곡톡 둜직
        β”‚   β”‚   └── main_lightcnn_optim.py        # SGD/Momentum/Adam 비ꡐ μ‹€ν–‰ μ—”νŠΈλ¦¬
        β”‚   β”‚
        β”‚   β”œβ”€β”€ inference/
        β”‚   β”‚   └── predict.py                    # 단일 이미지 μΆ”λ‘  (Top-k κ²°κ³Ό 좜λ ₯)
        β”‚   β”‚
        β”‚   β”œβ”€β”€ services/
        β”‚   β”‚   └── pregnancy_advice.py           # LLM 기반 μž„μ‚°λΆ€ 볡용 자문 λͺ¨λ“ˆ (OpenAI API)
        β”‚   β”‚
        β”‚   β”œβ”€β”€ utils/
        β”‚   β”‚   β”œβ”€β”€ seed.py                       # μ‹œλ“œ κ³ μ • μœ ν‹Έ
        β”‚   β”‚   β”œβ”€β”€ paths.py                      # 경둜 관리 클래슀
        β”‚   β”‚   β”œβ”€β”€ idx2label.py                  # 라벨 λ§€ν•‘ μœ ν‹Έ
        β”‚   β”‚   └── early_stopping.py             # EarlyStopping 클래슀
        β”‚   β”‚
        β”‚   β”œβ”€β”€ predict_and_advise.py             # CNN μΆ”λ‘  + LLM 자문 톡합 μ‹€ν–‰ 슀크립트
        β”‚   └── README.md                         # μ„œλΈŒλͺ¨λ“ˆμš© μ„€λͺ… λ¬Έμ„œ
        β”‚
        β”œβ”€β”€ configs/
        β”‚   └── baseline.yaml                     # ν•™μŠ΅ κΈ°λ³Έ μ„€μ • (경둜, 배치, 에폭, λŸ¬λ‹λ ˆμ΄νŠΈ λ“±)
        β”‚
        β”œβ”€β”€ tests/
        β”‚   └── test_training_smoke.py            # λͺ¨λΈ ν•™μŠ΅ κ²€μ¦μš© 슀λͺ¨ν¬ ν…ŒμŠ€νŠΈ
        β”‚
        β”œβ”€β”€ README.md                             # 리포지토리 전체 λ¬Έμ„œ (λ³Έ 파일)
        β”œβ”€β”€ requirements.txt                      # 의쑴 νŒ¨ν‚€μ§€ 리슀트
        β”œβ”€β”€ .gitignore                            # λ¬΄μ‹œ μ„€μ •
        └── __init__.py                          

βš™οΈ μ„€μΉ˜ 및 μ‹€ν–‰

1️⃣ ν•„μˆ˜ 라이브러리 μ„€μΉ˜

pip install -r requirements.txt

2️⃣ 데이터 μ „μ²˜λ¦¬

μ••μΆ•λœ TS/TL 데이터λ₯Ό μžλ™μœΌλ‘œ ν•΄μ œν•˜κ³  크둭/λ¦¬μ‚¬μ΄μ¦ˆλ₯Ό μˆ˜ν–‰ν•¨.

# μ••μΆ• ν•΄μ œ
python -m ai_modules.wound_analysis.src.data_prep.extract_archives \
    --img-zip-base "/path/to/μ›μ²œλ°μ΄ν„°/λ‹¨μΌκ²½κ΅¬μ•½μ œ 5000μ’…" \
    --lbl-zip-base "/path/to/라벨링데이터/λ‹¨μΌκ²½κ΅¬μ•½μ œ 5000μ’…" \
    --targets 39,41,42,43,46,48,51,54

# 이미지 개수 확인
python -m ai_modules.wound_analysis.src.data_prep.count_images \
    --root "/path/to/TS_57_단일"

# 쀑앙 크둭 ν›„ λ¦¬μ‚¬μ΄μ¦ˆ
python -m ai_modules.wound_analysis.src.data_prep.center_crop_resize \
    --input  "/path/to/TS_54_단일" \
    --output "/path/to/TS_54_단일crop128" \
    --crop-size 512 --resize-size 128

3️⃣ ν•™μŠ΅ μ‹€ν–‰

python -m ai_modules.wound_analysis.src.train \
    --config ai_modules/wound_analysis/configs/baseline.yaml

baseline.yaml μ˜ˆμ‹œ

image_root: "/content/gdrive/MyDrive/.../TS_81_단일crop128"
label_root: "/content/gdrive/MyDrive/.../TL_81_단일"
label_key: "dl_name"

img_size: 128
batch_size: 32
epochs: 5
lr: 0.001
save_dir: "runs/exp001"
seed: 42

4️⃣ μΆ”λ‘  μ‹€ν–‰

python -m ai_modules.wound_analysis.src.inference.predict \
    --weights runs/exp001/best.pt \
    --image path/to/sample.jpg \
    --num-classes 492 \
    --img-size 128

좜λ ₯ μ˜ˆμ‹œ:

{'pred_index': 27, 'probs_top5': [0.99, 0.87, 0.12, 0.08, 0.05]}

🧾 λΌμ΄μ„ μŠ€

λ³Έ λͺ¨λ“ˆμ˜ μ½”λ“œλŠ” ν•™μŠ΅ 및 개인 ν”„λ‘œμ νŠΈ λͺ©μ μœΌλ‘œ 곡개되며,
μ‹€μ œ 의료 진단/μ²˜λ°©μ—λŠ” μ‚¬μš©ν•  수 μ—†μŒ.

Β© 2025 DearBelly Project (Mom4U)
Author: hjjummy ,sangeun

About

πŸ€±λ””μ–΄λ²¨λ¦¬(DearBelly)🀱: μ‚°λͺ¨μ™€ νƒœμ•„λ₯Ό μœ„ν•œ ν”Œλž«νΌ, 디어벨리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages