Create README.md
Browse files# PolypNet-DLV3+: DeepLabV3+ ๊ธฐ๋ฐ ๋์ฅ ์ฉ์ข
๊ฒ์ถ ๋ฐ ์ธ๊ทธ๋ฉํ
์ด์
๋ชจ๋ธ
## ํ๋ก์ ํธ ๊ฐ์
PolypNet-DLV3+๋ ๋์ฅ๋ด์๊ฒฝ ์์์์ ์ฉ์ข
์ ์ค์๊ฐ์ผ๋ก ๊ฒ์ถํ๊ณ ์ธ๊ทธ๋ฉํ
์ด์
ํ๋ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ์๋ฃ AI ๋ชจ๋ธ์
๋๋ค. DeepLabV3+ ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ฅ ์ฉ์ข
๊ฒ์ถ์ ํนํ๋๋๋ก ์ต์ ํ๋์์ผ๋ฉฐ, ์๋ฃ์ง์ ์ง๋จ ๋ณด์กฐ ๋ฐ ๋์ฅ์ ์กฐ๊ธฐ ๋ฐ๊ฒฌ์ ๊ธฐ์ฌํฉ๋๋ค.
## ์ฃผ์ ํน์ง
- **๊ณ ์ ํ๋ ์ธ๊ทธ๋ฉํ
์ด์
**: Dice ๊ณ์ 0.89 ์ด์, IoU ์ ์ 0.82 ์ด์ ๋ฌ์ฑ
- **์ค์๊ฐ ์ถ๋ก **: ์ด๋น 30ํ๋ ์(FPS) ์ด์์ ์ค์๊ฐ ๋ถ์ ๊ฐ๋ฅ
- **๋ค์ํ ๋ฐ์ดํฐ์
์ง์**: Kvasir-SEG, CVC-ClinicDB, ETIS-LaribPolypDB, CVC-ColonDB ํตํฉ ํ์ต
- **๋ฐ์ด๋ฉ ๋ฐ์ค ์์ฑ**: ์ธ๊ทธ๋ฉํ
์ด์
๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ฉ์ข
์์น ๋ฐ ํฌ๊ธฐ ์๋ ๊ฒ์ถ
## ๋ชจ๋ธ ์ํคํ
์ฒ
### ๋ฐฑ๋ณธ ๋คํธ์ํฌ
- **Base Model**: ResNet50 (ImageNet ์ฌ์ ํ์ต)
- **ํน์ง ์ถ์ถ**: ์ ์์ค ํน์ง(conv2_block3_out)๊ณผ ๊ณ ์์ค ํน์ง(conv4_block6_out) ํ์ฉ
### ASPP (Atrous Spatial Pyramid Pooling) ๋ชจ๋
- 1ร1 ์ปจ๋ณผ๋ฃจ์
- ์ํธ๋ฌ์ค ์ปจ๋ณผ๋ฃจ์
(dilation rates: 6, 12, 18)
- ๊ธ๋ก๋ฒ ํ๊ท ํ๋ง
- ์ด 5๊ฐ ๋ถ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ค์ค ์ค์ผ์ผ ํน์ง ์ถ์ถ
### ๋์ฝ๋
- ์ ์์ค ํน์ง ์ฒ๋ฆฌ (48์ฑ๋)
- ์
์ํ๋ง ๋ฐ ํน์ง ์ตํฉ
- ๋ ๊ฐ์ 256์ฑ๋ ์ปจ๋ณผ๋ฃจ์
๋ธ๋ก (๋๋กญ์์ 0.5, 0.1 ์ ์ฉ)
- ์ต์ข
์
์ํ๋ง ๋ฐ Sigmoid ํ์ฑํ
## ๋ฐ์ดํฐ์
### ์ฌ์ฉ ๋ฐ์ดํฐ์
1. **Kvasir-SEG**: ๋
ธ๋ฅด์จ์ด ๋์ฅ๋ด์๊ฒฝ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์
2. **CVC-ClinicDB**: ๋ฐ๋ฅด์
๋ก๋ ์์ ๋์ฅ๋ด์๊ฒฝ ๋ฐ์ดํฐ์
3. **ETIS-LaribPolypDB**: ๋ค์ํ ์ฉ์ข
ํํ ํฌํจ ๋ฐ์ดํฐ์
4. **CVC-ColonDB**: ๋ค์ํ ์กฐ๋ช
๋ฐ ์ดฌ์ ๊ฐ๋ ๋ฐ์ดํฐ์
### ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ์ด๋ฏธ์ง ํฌ๊ธฐ: 256ร256 ํฝ์
- ์ ๊ทํ: 0-1 ๋ฒ์
- ๋ง์คํฌ ์ด์งํ: ์๊ณ๊ฐ 128
- ๋ค์ํ ํ์ผ ํ์ ์ง์ (.jpg, .png, .tif)
### ๋ฐ์ดํฐ ๋ถํ
- ํ์ต: 70%
- ๊ฒ์ฆ: 15%
- ํ
์คํธ: 15%
## ํ์ต ๊ตฌ์ฑ
### ์์ค ํจ์ ๋ฐ ํ๊ฐ ์งํ
- **์์ค ํจ์**: Dice Loss
- **ํ๊ฐ ์งํ**:
- Dice Coefficient
- IoU (Intersection over Union)
- Binary Accuracy
### ํ์ดํผํ๋ผ๋ฏธํฐ
- **์ตํฐ๋ง์ด์ **: Adam
- **์ด๊ธฐ ํ์ต๋ฅ **: 1e-4
- **๋ฐฐ์น ํฌ๊ธฐ**: 8
- **์ต๋ ์ํญ**: 100
- **๋๋กญ์์**: [0.5, 0.1]
- **ASPP ํ์ฅ๋ฅ **: [6, 12, 18]
### ์ฝ๋ฐฑ
- **ModelCheckpoint**: ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ ์ ์ฅ (val_dice_coef ๊ธฐ์ค)
- **EarlyStopping**: 15 ์ํญ patience
- **ReduceLROnPlateau**: 5 ์ํญ patience, ๊ฐ์ ๋น์จ 0.2
## ์ฑ๋ฅ
### ์ ์ฒด ์ฑ๋ฅ
- Dice ๊ณ์: 0.8925
- IoU ์ ์: 0.8214
- ์ ํ๋: 0.9567
### ๋ฐ์ดํฐ์
๋ณ ์ฑ๋ฅ
| ๋ฐ์ดํฐ์
| Dice | IoU | Accuracy |
|---------|------|-----|----------|
| Kvasir-SEG | 0.9102 | 0.8437 | 0.9632 |
| CVC-ClinicDB | 0.9183 | 0.8551 | 0.9701 |
| ETIS-LaribPolypDB | 0.8413 | 0.7645 | 0.9321 |
| CVC-ColonDB | 0.8521 | 0.7842 | 0.9417 |
## ์ค์น ๋ฐ ํ๊ฒฝ ์ค์
### ํ์ ์๊ตฌ์ฌํญ
```
Python 3.8+
TensorFlow 2.x
NumPy
Matplotlib
PIL (Pillow)
OpenCV
scikit-learn
scipy
```
### ์ค์น
```bash
pip install tensorflow numpy matplotlib pillow opencv-python scikit-learn scipy
```
### GPU ์ง์
CUDA ๋ฐ cuDNN์ด ์ค์น๋ ํ๊ฒฝ์์ GPU ๊ฐ์์ ํ์ฉํ ์ ์์ต๋๋ค.
## ์ฌ์ฉ ๋ฐฉ๋ฒ
### ํ์ต
```python
# ๋ฐ์ดํฐ์
๋ก๋
X, y, sources = load_combined_datasets()
# ๋ชจ๋ธ ํ์ต
model = train_combined_deeplabv3_plus()
```
### ์ถ๋ก
```python
from tensorflow.keras.models import load_model
# ๋ชจ๋ธ ๋ก๋
model = load_model('polyp_combined_deeplabv3plus_model.keras',
custom_objects={
'dice_loss': dice_loss,
'dice_coef': dice_coef,
'iou_score': iou_score
})
# ๋จ์ผ ์ด๋ฏธ์ง ์์ธก
boxes, mask = predict_and_visualize(model, 'test_image.jpg')
```
### ๋ฐ์ด๋ฉ ๋ฐ์ค ์์ฑ
```python
# ์์ธก ๋ง์คํฌ์์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ถ์ถ
boxes = get_bounding_boxes(prediction_mask, threshold=0.5)
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
for i, box in enumerate(boxes):
x_min, y_min, x_max, y_max = box
print(f"์ฉ์ข
#{i+1}: ์์น=({x_min},{y_min}), ํฌ๊ธฐ={(x_max-x_min)ร(y_max-y_min)}")
```
## ํ์ผ ๊ตฌ์กฐ
```
.
โโโ paste.txt # ๋ชจ๋ธ ํ์ต ๋ฐ ์ถ๋ก ์ฝ๋
โโโ polyp_combined_deeplabv3plus_model.keras # ํ์ต๋ ๋ชจ๋ธ
โโโ README.md # ํ๋ก์ ํธ ๋ฌธ์
```
## ์ฃผ์ ํจ์
### ๋ฐ์ดํฐ ๋ก๋ฉ
- `load_dataset()`: ๋จ์ผ ๋ฐ์ดํฐ์
๋ก๋
- `load_combined_datasets()`: ์ฌ๋ฌ ๋ฐ์ดํฐ์
ํตํฉ ๋ก๋
### ๋ชจ๋ธ ๊ตฌ์ถ
- `build_deeplabv3_plus()`: DeepLabV3+ ๋ชจ๋ธ ์์ฑ
- `ASPP()`: ASPP ๋ชจ๋ ๊ตฌํ
- `conv_block()`: ์ปจ๋ณผ๋ฃจ์
๋ธ๋ก ์์ฑ
### ํ์ต ๋ฐ ํ๊ฐ
- `train_combined_deeplabv3_plus()`: ๋ชจ๋ธ ํ์ต
- `evaluate_per_dataset()`: ๋ฐ์ดํฐ์
๋ณ ์ฑ๋ฅ ํ๊ฐ
### ์ถ๋ก
- `predict_and_visualize()`: ๋จ์ผ ์ด๋ฏธ์ง ์์ธก ๋ฐ ์๊ฐํ
- `get_bounding_boxes()`: ๋ง์คํฌ์์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ถ์ถ
- `display_sample()`: ์์ธก ๊ฒฐ๊ณผ ์๊ฐํ
## ์ต์ ํ ๋ฐ ๋ฐฐํฌ
### TensorRT ์ต์ ํ
๋ชจ๋ธ์ TensorRT๋ก ๋ณํํ์ฌ ์ถ๋ก ์๋๋ฅผ ์ฝ 35% ํฅ์์ํฌ ์ ์์ต๋๋ค.
### ์์ํ
8๋นํธ ์์ํ๋ฅผ ํตํด ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ 75% ๊ฐ์์ํค๊ณ ์ถ๋ก ์๋๋ฅผ 45% ํฅ์์ํฌ ์ ์์ต๋๋ค.
### ๋ชจ๋ธ ๋งํฌ
https://huggingface.co/kinghoon/polyp-model
## ์ฐธ๊ณ ๋ฌธํ
1. Chen, L. C., et al. (2018). Encoder-decoder with atrous separable convolution for semantic image segmentation. ECCV.
2. Jha, D., et al. (2020). Kvasir-SEG: A segmented polyp dataset. MMM.
3. Bernal, J., et al. (2015). WM-DOVA maps for accurate polyp highlighting in colonoscopy. Computerized Medical Imaging and Graphics.
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
datasets:
|
| 4 |
+
- kowndinya23/Kvasir-SEG
|
| 5 |
+
language:
|
| 6 |
+
- en
|
| 7 |
+
- ko
|
| 8 |
+
metrics:
|
| 9 |
+
- accuracy
|
| 10 |
+
base_model:
|
| 11 |
+
- qualcomm/DeepLabV3-Plus-MobileNet
|
| 12 |
+
tags:
|
| 13 |
+
- biology
|
| 14 |
+
---
|