File size: 7,552 Bytes
909d450 09e75e8 909d450 09e75e8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
---
language:
- ko
- en
tags:
- medical
- skin-cancer
- dermatology
- vision
- classification
- gemma3
- korean
- healthcare
datasets:
- custom-skin-lesion-dataset
metrics:
- accuracy
- precision
- recall
- f1
model_type: multimodal
pipeline_tag: image-classification
widget:
- src: https://example.com/skin_lesion_sample.jpg
candidate_labels: 광선각화증,기저세포암,멜라닌세포모반,보웬병,비립종,사마귀,악성흑색종,지루각화증,편평세포암,표피낭종,피부섬유종,피지샘증식증,혈관종,화농 육아종,흑색점
model-index:
- name: gemma3-skin-tumor-diagnosis
results:
- task:
type: image-classification
name: Skin Tumor Classification
dataset:
type: custom
name: Korean Skin Lesion Dataset
metrics:
- type: accuracy
value: 0.6700
name: Accuracy
- type: f1
value: 0.6474
name: F1 Score
---
# Gemma3 피부종양 진단 모델
이 모델은 15가지 피부 질환을 진단할 수 있는 Gemma3 기반 멀티모달 모델입니다.
## 모델 성능
- 정확도: 67.0%
- F1 Score: 0.647
- 평가 이미지: 500개
## 주의사항
⚠️ 이 모델은 의료 참고용으로만 사용하며, 실제 진단은 반드시 전문의와 상담하세요.
\n# Gemma3 피부종양 진단 모델
## 📋 모델 개요
이 모델은 Google의 Gemma3를 기반으로 15가지 피부 종양을 분류하기 위해 파인튜닝된 멀티모달 모델입니다.
## 🎯 성능 지표
- **정확도 (Accuracy)**: 0.6700 (67.00%)
- **정밀도 (Precision)**: 0.6932
- **재현율 (Recall)**: 0.6711
- **F1 Score**: 0.6474
- **평가 이미지 수**: 500개
## 🏥 분류 가능한 피부 질환 (15개 클래스)
| 번호 | 질환명 | 영문명 | Code |
|------|--------|--------|------|
| 0 | 광선각화증 | Actinic Keratosis | AK |
| 1 | 기저세포암 | Basal Cell Carcinoma | BCC |
| 2 | 멜라닌세포모반 | Melanocytic Nevus | MN |
| 3 | 보웬병 | Bowen's Disease | BD |
| 4 | 비립종 | Milia | MI |
| 5 | 사마귀 | Wart | WA |
| 6 | 악성흑색종 | Malignant Melanoma | MM |
| 7 | 지루각화증 | Seborrheic Keratosis | SK |
| 8 | 편평세포암 | Squamous Cell Carcinoma | SCC |
| 9 | 표피낭종 | Epidermal Cyst | EC |
| 10 | 피부섬유종 | Dermatofibroma | DF |
| 11 | 피지샘증식증 | Sebaceous Hyperplasia | SH |
| 12 | 혈관종 | Hemangioma | HE |
| 13 | 화농 육아종 | Pyogenic Granuloma | PG |
| 14 | 흑색점 | Lentigo | LE |
## 📊 평가 데이터셋
- **총 평가 이미지**: 500개
- **평가 방식**: 랜덤 샘플링
- **출력 형식**: XML 구조화된 진단 결과
- **평가 일자**: 2025년 8월 14일
## 🔬 모델 아키텍처
- **Base Model**: Google Gemma3
- **Fine-tuning Method**: LoRA (Low-Rank Adaptation)
- **Task Type**: Multi-modal (Image + Text) Classification
- **Input**: 피부 병변 이미지 + 진단 instruction
- **Output**: 구조화된 XML 진단 결과
## 💻 사용 방법
### vLLM + OpenAI 호환 API 사용 (현재 설정)
```python
from openai import OpenAI
import base64
# 현재 사용 중인 설정 (localhost의 vLLM 서버)
client = OpenAI(
api_key="empty", # vLLM은 빈 키 사용
base_url="http://localhost:8001/v1" # vLLM 서버 주소
)
# 또는 RunPod 엔드포인트 사용 시
# client = OpenAI(
# api_key="rpa_토큰",
# base_url="https://api.runpod.ai/v2/엔드포인트/openai/v1"
# )
# 이미지 인코딩
def encode_image(path):
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
# 피부 진단 instruction (한국어)
instruction = """너는 피부 병변을 진단하는 전문 AI이다. 다음은 네가 진단할 수 있는 피부 병변 목록이며, 각 병변의 임상적 특징은 아래와 같다. 환자에게 나타난 병변의 이미지와 설명을 바탕으로 가장 적합한 질병을 하나 선택하여 진단하라.
0: 광선각화증
1: 기저세포암
2: 멜라닌세포모반
3: 보웬병
4: 비립종
5: 사마귀
6: 악성흑색종
7: 지루각화증
8: 편평세포암
9: 표피낭종
10: 피부섬유종
11: 피지샘증식증
12: 혈관종
13: 화농 육아종
14: 흑색점
<root><label id_code="{코드}" score="{점수}">{진단명}</label><summary>{진단소견}</summary><similar_labels><similar_label id_code="{코드}" score="{점수}">{유사질병명}</similar_label></similar_labels></root>
"""
# 진단 수행
image_base64 = encode_image("path_to_skin_image.jpg")
response = client.chat.completions.create(
model="model_name", # vLLM에서 로드된 모델명
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": instruction},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_base64}",
},
},
],
}
],
)
print(response.choices[0].message.content)
```
### 출력 형식 예시
```xml
<root>
<label id_code="1" score="85.2">기저세포암</label>
<summary>이미지에서는 진주빛 반투명 결절 형태의 병변이 관찰됩니다. 이러한 병변은 일반적으로 천천히 성장하며 주변 조직으로 깊게 침습할 수 있는 특성을 가지고 있습니다...</summary>
<similar_labels>
<similar_label id_code="3" score="12.0">보웬병</similar_label>
<similar_label id_code="0" score="8.5">광선각화증</similar_label>
</similar_labels>
</root>
```
## ⚠️ 중요 안내사항
- 이 모델은 의료진을 대체할 수 없으며, **참고용**으로만 사용해야 합니다
- 실제 진단 및 치료에는 반드시 **전문 의료진의 상담**이 필요합니다
- 모델의 결과는 확률적 추정치이며, 100% 정확하지 않을 수 있습니다
- 이 모델은 교육 및 연구 목적으로만 사용하시기 바랍니다
## 📈 클래스별 성능
자세한 클래스별 성능은 `class_performance.csv` 파일을 참조하세요.
| 클래스 | Precision | Recall | F1-Score |
|---------|-----------|--------|----------|
| 광선각화증 | 0.333 | 0.088 | 0.140 |
| 기저세포암 | 0.708 | 0.531 | 0.607 |
| 멜라닌세포모반 | 0.667 | 0.727 | 0.696 |
| 보웬병 | 0.500 | 0.765 | 0.605 |
| 비립종 | 0.649 | 0.923 | 0.762 |
| 사마귀 | 0.714 | 0.968 | 0.822 |
| 악성흑색종 | 0.636 | 0.219 | 0.326 |
| 지루각화증 | 0.449 | 0.815 | 0.579 |
| 편평세포암 | 0.581 | 0.923 | 0.713 |
| 표피낭종 | 0.875 | 0.656 | 0.750 |
| 피부섬유종 | 0.885 | 0.697 | 0.780 |
| 피지샘증식증 | 0.870 | 0.606 | 0.714 |
| 혈관종 | 0.969 | 0.689 | 0.805 |
| 화농 육아종 | 0.618 | 0.944 | 0.747 |
| 흑색점 | 0.944 | 0.515 | 0.667 |
## 🛠️ 개발 환경
- Python 3.11+
- vLLM OpenAI 호환 서버
- RunPod 클라우드 환경
- CUDA 지원 GPU
## 📁 저장소 파일 구조
```
├── evaluation_results.json # 상세 평가 결과
├── class_performance.csv # 클래스별 성능 지표
├── confusion_matrix.png # 혼동행렬 시각화
├── class_performance.png # 성능 차트
└── README.md # 모델 문서 (이 파일)
```
## 📝 라이선스
이 모델은 연구 및 교육 목적으로만 사용하시기 바랍니다.
## 📞 문의사항
모델 사용 중 문제가 발생하면 이슈를 등록해 주세요.
---
**개발**: Gemma3 기반 피부질환 진단 모델
**평가일**: 2025-08-14
**정확도**: 67.00%
|