seawolf2357 commited on
Commit
fc74d98
Β·
verified Β·
1 Parent(s): 6ae096f

Update templates/index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +221 -70
templates/index.html CHANGED
@@ -1,26 +1,196 @@
1
  <!DOCTYPE html>
2
- <!--
3
- Copyright 2025 Google LLC
4
 
5
- Licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
 
9
- http://www.apache.org/licenses/LICENSE-2.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
- Unless required by applicable law or agreed to in writing, software
12
- distributed under the License is distributed on an "AS IS" BASIS,
13
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- See the License for the specific language governing permissions and
15
- limitations under the License.
16
- -->
17
 
18
- <html lang="en">
19
 
20
  <head>
21
  <meta charset="UTF-8">
22
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
23
- <title>Radiology Report Explainer</title>
24
  <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
25
  <link rel="preconnect" href="https://fonts.googleapis.com">
26
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -41,22 +211,13 @@
41
  <div class="info-page-container">
42
  <div class="info-content">
43
  <div class="info-header">
44
- <span class="info-title-demo">Radiology Explainer Demo</span><br>
45
- <span class="info-title-demo info-subtitle-demo">Built with</span>
46
  <span class="info-title-med info-subtitle-demo">MedGemma</span>
47
  </div>
48
- <div class="info-text">Consider an educational scenario where interacting with a radiology image can
49
- substantially improve learning. This demonstration shows how MedGemma might be built upon to provide
50
- a useful tool for exploring radiology images and associated reports by translating them into
51
- simple language, with visual cues to highlight the relevant areas of the image.</div>
52
- <div class="info-disclaimer-text"><span class="info-disclaimer-title">Disclaimer</span> This
53
- demonstration is for illustrative purposes only and does not represent a finished or approved
54
- product. It is not representative of compliance to any regulations or standards for
55
- quality, safety or efficacy. Any real-world application would require additional development,
56
- training, and adaptation. The experience highlighted in this demo shows MedGemma's baseline
57
- capability for the displayed task and is intended to help developers and users explore possible
58
- applications and inspire further development.</div>
59
- <button class="info-button" id="view-demo-button">View Demo</button>
60
  </div>
61
  </div>
62
  </div>
@@ -64,11 +225,11 @@
64
  <div class="nav-button nav-button-back" id="back-to-info-button">
65
  <div class="nav-button-inner">
66
  <span class="material-symbols-outlined nav-button-icon">keyboard_arrow_left</span>
67
- <span class="nav-button-text">Back</span>
68
  </div>
69
  </div>
70
  <div class="case-selector-tabs-container" id="case-selector-tabs-container">
71
- <div>X-Ray</div>
72
  <div class="case-selector-tabs" id="case-selector-tabs">
73
  {% if available_reports %}
74
  {% for report in available_reports %}
@@ -81,7 +242,7 @@
81
  {% endif %}
82
  {% endfor %}
83
  {% else %}
84
- <span class="no-cases-available">No cases available</span>
85
  {% endif %}
86
  </div>
87
 
@@ -98,7 +259,7 @@
98
  {% endif %}
99
  {% endfor %}
100
  {% else %}
101
- <span class="no-cases-available">No cases available</span>
102
  {% endif %}
103
  </div>
104
 
@@ -106,49 +267,46 @@
106
  <div class="nav-button nav-button-info" id="info-button">
107
  <div class="nav-button-inner">
108
  <span class="material-symbols-outlined nav-button-icon">code_blocks</span>
109
- <span class="nav-button-text">Details about this Demo</span>
110
  </div>
111
  </div>
112
 
113
 
114
 
115
  <div class="image-section">
116
- <div id="image-modality-header" class="image-header">{{ image_type | default('Medical Image', true) }}
117
  </div> <!-- Updated: ID added, initial text changed -->
118
  <div id="image-container" class="image-container"> <!-- Container for relative positioning -->
119
- <img id="report-image" src="" alt="Medical Image" style="display: none;">
120
- <div id="image-loading" class="loading" style="display: none;">Loading image...</div>
121
  <div id="image-error" class="error-message" style="display: none;"></div>
122
  </div>
123
  <div id="ct-image-note" class="image-note">
124
- This shows a single slice of the CT. Not all elements in the report can be visualized.
125
  </div>
126
  </div>
127
 
128
  <div class="report-section">
129
- <div id="app-loading" class="loading" style="display: none;">Loading report details...</div>
130
  <div id="app-error" class="error-message" style="display: none;"></div>
131
  <div class="explanation-section">
132
  <div id="explanation-output" class="explanation-box">
133
- <div id="explanation-loading" class="loading">Generating explanation... Please wait.</div>
134
- <div class="explanation-header">What this means
135
  </div>
136
  <div id="explanation-content">
137
- Click a sentence to see the explanation here.
138
  </div>
139
  </div>
140
  </div>
141
  <div class="report-text-area">
142
  <div id="report-text-display" >
143
  <!-- Report text will be loaded here -->
144
- Select a report to view its text.
145
  </div>
146
  <div class="floating-disclaimer">
147
  <span class="material-symbols-outlined disclaimer-icon">warning</span>
148
- <span class="disclaimer-text">This demonstration is for illustrative purposes of MedGemma's baseline
149
- capability only. It does not represent a finished or approved product, is not intended to
150
- diagnose or suggest treatment of any disease or condition, and should not be used for medical
151
- advice.</span>
152
  </div>
153
  </div>
154
  </div>
@@ -163,54 +321,47 @@
163
  <div id="immersive-info-dialog" class="dialog-overlay" style="display: none;" role="dialog" aria-modal="true"
164
  aria-labelledby="dialog-title">
165
  <div class="dialog-box">
166
- <button id="dialog-close-button" class="dialog-close-btn" aria-label="Close dialog">
167
  <span class="material-symbols-outlined">close</span>
168
  </button>
169
- <h2 id="dialog-title" class="dialog-title-text">Details About This Demo</h2>
170
  <div class="dialog-body-scrollable">
171
- <p><b>The Model:</b> This demo exclusively features Google's MedGemma-4B, a Gemma 3-based model
172
- fine-tuned for
173
- comprehending medical text and images, such as chest X-rays. It demonstrates MedGemma's ability to
174
- accelerate the development of AI-powered healthcare applications by offering advanced
175
- interpretation of medical data.</p>
176
- <p><b>Accessing and Using the Model:</b> Google's MedGemma-4B is available on <a
177
  href="https://huggingface.co/google/medgemma-4b-it" target="_blank">HuggingFace<img
178
  class="hf-logo"
179
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg">
180
- </a> and
181
  <a href="https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/medgemma" target="_blank">Model
182
  Garden <img class="hf-logo"
183
- src="https://www.gstatic.com/cloud/images/icons/apple-icon.png"></a>.
184
- Learn more about using the model and its limitations on the <a
185
  href="https://developers.google.com/health-ai-developer-foundations?referral=rad_explain"
186
  target="_blank">HAI-DEF
187
- developer site</a>.
188
  </p>
189
- <p><b>Health AI Developer Foundations (HAI-DEF)</b> provides a collection of open-weight models and
190
- companion resources to empower developers in building AI models for healthcare.</p>
191
- <p><b>Enjoying the Demo?</b> We'd love your feedback! If you found this demo helpful, please show
192
- your appreciation by clicking the β™‘ button on the HuggingFace page, linked at the top.</p>
193
- <p><b>Explore More Demos:</b> Discover additional demonstrations on HuggingFace Spaces or via Colabs:
194
  </p>
195
  <ul>
196
  <li><a href="https://huggingface.co/spaces/google/cxr-foundation-demo?referral=rad_explain"
197
  target="_blank">
198
- CXR Foundations Demo <img class="hf-logo"
199
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
200
  -
201
- Showcases on-browser, data-efficient, and zero-shot classification of CXR images.</li>
202
  <li><a href="https://huggingface.co/spaces/google/path-foundation-demo?referral=rad_explain"
203
  target="_blank">
204
- Path Foundations Demo <img class="hf-logo"
205
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
206
  -
207
- Highlights on-browser, data-efficient classification and outlier detection within pathology
208
- slides.</li>
209
  <li><a href="https://github.com/Google-Health/medgemma/tree/main/notebooks/fine_tune_with_hugging_face.ipynb" target="_blank">
210
- Finetune MedGemma Colab <img class="hf-logo"
211
  src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Google_Colaboratory_SVG_Logo.svg"></a>
212
  -
213
- See an example of how to fine-tune this model.</li>
214
  </ul>
215
  </div>
216
  </div>
 
1
  <!DOCTYPE html>
 
 
2
 
3
+ <html lang="ko">
 
 
4
 
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <title>방사선 λ³΄κ³ μ„œ μ„€λͺ… 도ꡬ</title>
9
+ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
10
+ <link rel="preconnect" href="https://fonts.googleapis.com">
11
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
+ <link
13
+ href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500&family=Google+Sans+Text:wght@500&display=swap"
14
+ rel="stylesheet">
15
+ <link
16
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200"
17
+ rel="stylesheet">
18
+ <!-- Link to the correct JS file -->
19
+ <script src="https://unpkg.com/compromise" defer></script>
20
+ <script src="{{ url_for('static', filename='js/demo.js') }}" defer></script>
21
+ </head>
22
+
23
+ <body>
24
+ <div class="info">
25
+ <!-- New Info Page Content -->
26
+ <div class="info-page-container">
27
+ <div class="info-content">
28
+ <div class="info-header">
29
+ <span class="info-title-demo">방사선 μ„€λͺ… 도ꡬ 데λͺ¨</span><br>
30
+ <span class="info-title-demo info-subtitle-demo">기반 기술:</span>
31
+ <span class="info-title-med info-subtitle-demo">MedGemma</span>
32
+ </div>
33
+ <div class="info-text">방사선 μ˜μƒκ³Όμ˜ μƒν˜Έμž‘μš©μ΄ ν•™μŠ΅μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆλŠ” ꡐ윑 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μƒκ°ν•΄λ³΄μ„Έμš”. 이 데λͺ¨λŠ” MedGemmaλ₯Ό 기반으둜 방사선 μ˜μƒκ³Ό κ΄€λ ¨ λ³΄κ³ μ„œλ₯Ό μ‰¬μš΄ μ–Έμ–΄λ‘œ λ²ˆμ—­ν•˜κ³ , μ˜μƒμ˜ κ΄€λ ¨ μ˜μ—­μ„ μ‹œκ°μ μœΌλ‘œ κ°•μ‘°ν•˜μ—¬ 탐색할 수 μžˆλŠ” μœ μš©ν•œ 도ꡬλ₯Ό μ œκ³΅ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.</div>
34
+ <div class="info-disclaimer-text"><span class="info-disclaimer-title">λ©΄μ±… μ‘°ν•­</span> 이 데λͺ¨λŠ” μ„€λͺ… λͺ©μ μœΌλ‘œλ§Œ 제곡되며 μ™„μ„±λ˜κ±°λ‚˜ 승인된 μ œν’ˆμ„ λ‚˜νƒ€λ‚΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν’ˆμ§ˆ, μ•ˆμ „μ„± λ˜λŠ” 효λŠ₯에 λŒ€ν•œ κ·œμ •μ΄λ‚˜ ν‘œμ€€ μ€€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ μ‘μš© ν”„λ‘œκ·Έλž¨μ—λŠ” μΆ”κ°€ 개발, ꡐ윑 및 적응이 ν•„μš”ν•©λ‹ˆλ‹€. 이 데λͺ¨μ—μ„œ κ°•μ‘°λœ κ²½ν—˜μ€ ν‘œμ‹œλœ μž‘μ—…μ— λŒ€ν•œ MedGemma의 κΈ°λ³Έ κΈ°λŠ₯을 보여주며, κ°œλ°œμžμ™€ μ‚¬μš©μžκ°€ κ°€λŠ₯ν•œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ νƒμƒ‰ν•˜κ³  μΆ”κ°€ κ°œλ°œμ— μ˜κ°μ„ 주도둝 돕기 μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.</div>
35
+ <button class="info-button" id="view-demo-button">데λͺ¨ 보기</button>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div class="main">
40
+ <div class="nav-button nav-button-back" id="back-to-info-button">
41
+ <div class="nav-button-inner">
42
+ <span class="material-symbols-outlined nav-button-icon">keyboard_arrow_left</span>
43
+ <span class="nav-button-text">λ’€λ‘œ</span>
44
+ </div>
45
+ </div>
46
+ <div class="case-selector-tabs-container" id="case-selector-tabs-container">
47
+ <div>X-레이</div>
48
+ <div class="case-selector-tabs" id="case-selector-tabs">
49
+ {% if available_reports %}
50
+ {% for report in available_reports %}
51
+ {% if report.image_type == 'CXR' %}
52
+ <div class="nav-button nav-button-case" data-report-name="{{ report.name }}">
53
+ <div class="nav-button-inner">
54
+ <span class="nav-button-text">{{ report.name }}</span>
55
+ </div>
56
+ </div>
57
+ {% endif %}
58
+ {% endfor %}
59
+ {% else %}
60
+ <span class="no-cases-available">μ‚¬μš© κ°€λŠ₯ν•œ μΌ€μ΄μŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€</span>
61
+ {% endif %}
62
+ </div>
63
+
64
+ <div>CT</div>
65
+ <div class="case-selector-tabs" id="case-selector-tabs2">
66
+ {% if available_reports %}
67
+ {% for report in available_reports %}
68
+ {% if report.image_type == 'CT' %}
69
+ <div class="nav-button nav-button-case" data-report-name="{{ report.name }}">
70
+ <div class="nav-button-inner">
71
+ <span class="nav-button-text">{{ report.name }}</span>
72
+ </div>
73
+ </div>
74
+ {% endif %}
75
+ {% endfor %}
76
+ {% else %}
77
+ <span class="no-cases-available">μ‚¬μš© κ°€λŠ₯ν•œ μΌ€μ΄μŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€</span>
78
+ {% endif %}
79
+ </div>
80
+
81
+ </div>
82
+ <div class="nav-button nav-button-info" id="info-button">
83
+ <div class="nav-button-inner">
84
+ <span class="material-symbols-outlined nav-button-icon">code_blocks</span>
85
+ <span class="nav-button-text">이 데λͺ¨μ— λŒ€ν•œ 상세 정보</span>
86
+ </div>
87
+ </div>
88
+
89
+
90
+
91
+ <div class="image-section">
92
+ <div id="image-modality-header" class="image-header">{{ image_type | default('의료 μ˜μƒ', true) }}
93
+ </div> <!-- Updated: ID added, initial text changed -->
94
+ <div id="image-container" class="image-container"> <!-- Container for relative positioning -->
95
+ <img id="report-image" src="" alt="의료 μ˜μƒ" style="display: none;">
96
+ <div id="image-loading" class="loading" style="display: none;">이미지 λ‘œλ”© 쀑...</div>
97
+ <div id="image-error" class="error-message" style="display: none;"></div>
98
+ </div>
99
+ <div id="ct-image-note" class="image-note">
100
+ 이것은 CT의 단일 슬라이슀λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. λ³΄κ³ μ„œμ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ‹œκ°ν™”ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
101
+ </div>
102
+ </div>
103
+
104
+ <div class="report-section">
105
+ <div id="app-loading" class="loading" style="display: none;">λ³΄κ³ μ„œ 상세 정보 λ‘œλ”© 쀑...</div>
106
+ <div id="app-error" class="error-message" style="display: none;"></div>
107
+ <div class="explanation-section">
108
+ <div id="explanation-output" class="explanation-box">
109
+ <div id="explanation-loading" class="loading">μ„€λͺ…을 μƒμ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€... μž μ‹œλ§Œ κΈ°λ‹€λ €μ£Όμ„Έμš”.</div>
110
+ <div class="explanation-header">이것이 μ˜λ―Έν•˜λŠ” λ°”
111
+ </div>
112
+ <div id="explanation-content">
113
+ λ¬Έμž₯을 ν΄λ¦­ν•˜λ©΄ 여기에 μ„€λͺ…이 ν‘œμ‹œλ©λ‹ˆλ‹€.
114
+ </div>
115
+ </div>
116
+ </div>
117
+ <div class="report-text-area">
118
+ <div id="report-text-display" >
119
+ <!-- Report text will be loaded here -->
120
+ λ³΄κ³ μ„œλ₯Ό μ„ νƒν•˜λ©΄ ν…μŠ€νŠΈκ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.
121
+ </div>
122
+ <div class="floating-disclaimer">
123
+ <span class="material-symbols-outlined disclaimer-icon">warning</span>
124
+ <span class="disclaimer-text">이 데λͺ¨λŠ” MedGemma의 κΈ°λ³Έ κΈ°λŠ₯을 μ„€λͺ…ν•˜κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œλ§Œ μ œκ³΅λ©λ‹ˆλ‹€. μ™„μ„±λ˜κ±°λ‚˜ 승인된 μ œν’ˆμ„ λ‚˜νƒ€λ‚΄μ§€ μ•ŠμœΌλ©°, μ§ˆλ³‘μ΄λ‚˜ μƒνƒœλ₯Ό μ§„λ‹¨ν•˜κ±°λ‚˜ 치료λ₯Ό μ œμ•ˆν•˜κΈ° μœ„ν•œ 것이 μ•„λ‹ˆλ©°, μ˜ν•™μ  쑰언에 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.</span>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ <!-- Embed available reports data for JavaScript -->
129
+ <script id="reports-data" type="application/json">
130
+ {{ available_reports | tojson | safe }}
131
+ </script>
132
+ <div id="explanation-error" class="error-message" style="display: none;"></div>
133
+ </div>
134
+
135
+ <!-- Immersive Info Dialog -->
136
+ <div id="immersive-info-dialog" class="dialog-overlay" style="display: none;" role="dialog" aria-modal="true"
137
+ aria-labelledby="dialog-title">
138
+ <div class="dialog-box">
139
+ <button id="dialog-close-button" class="dialog-close-btn" aria-label="λŒ€ν™”μƒμž λ‹«κΈ°">
140
+ <span class="material-symbols-outlined">close</span>
141
+ </button>
142
+ <h2 id="dialog-title" class="dialog-title-text">이 데λͺ¨μ— λŒ€ν•œ 상세 정보</h2>
143
+ <div class="dialog-body-scrollable">
144
+ <p><b>λͺ¨λΈ:</b> 이 데λͺ¨λŠ” κ΅¬κΈ€μ˜ MedGemma-4Bλ₯Ό λ…μ μ μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λŠ” Gemma 3 기반 λͺ¨λΈλ‘œ, 흉뢀 X-λ ˆμ΄μ™€ 같은 의료 ν…μŠ€νŠΈ 및 이미지λ₯Ό μ΄ν•΄ν•˜λ„λ‘ λ―Έμ„Έ μ‘°μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 의료 λ°μ΄ν„°μ˜ κ³ κΈ‰ 해석을 μ œκ³΅ν•˜μ—¬ AI 기반 의료 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ κ°€μ†ν™”ν•˜λŠ” MedGemma의 λŠ₯λ ₯을 λ³΄μ—¬μ€λ‹ˆλ‹€.</p>
145
+ <p><b>λͺ¨λΈ μ ‘κ·Ό 및 μ‚¬μš©:</b> κ΅¬κΈ€μ˜ MedGemma-4BλŠ” <a
146
+ href="https://huggingface.co/google/medgemma-4b-it" target="_blank">HuggingFace<img
147
+ class="hf-logo"
148
+ src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg">
149
+ </a>와
150
+ <a href="https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/medgemma" target="_blank">Model
151
+ Garden <img class="hf-logo"
152
+ src="https://www.gstatic.com/cloud/images/icons/apple-icon.png"></a>μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
153
+ λͺ¨λΈ μ‚¬μš© 및 μ œν•œ 사항에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ <a
154
+ href="https://developers.google.com/health-ai-developer-foundations?referral=rad_explain"
155
+ target="_blank">HAI-DEF
156
+ 개발자 μ‚¬μ΄νŠΈ</a>μ—μ„œ ν™•μΈν•˜μ„Έμš”.
157
+ </p>
158
+ <p><b>Health AI Developer Foundations (HAI-DEF)</b>λŠ” κ°œλ°œμžκ°€ 의료 λΆ„μ•Όμš© AI λͺ¨λΈμ„ ꡬ좕할 수 μžˆλ„λ‘ ν•˜λŠ” μ˜€ν”ˆ μ›¨μ΄νŠΈ λͺ¨λΈ 및 κ΄€λ ¨ λ¦¬μ†ŒμŠ€ λͺ¨μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.</p>
159
+ <p><b>데λͺ¨κ°€ λ§ˆμŒμ— λ“œμ…¨λ‚˜μš”?</b> μ—¬λŸ¬λΆ„μ˜ ν”Όλ“œλ°±μ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€! 이 데λͺ¨κ°€ 도움이 λ˜μ—ˆλ‹€λ©΄, 상단에 링크된 HuggingFace νŽ˜μ΄μ§€μ—μ„œ β™‘ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ κ°μ‚¬μ˜ λ§ˆμŒμ„ ν‘œν˜„ν•΄μ£Όμ„Έμš”.</p>
160
+ <p><b>더 λ§Žμ€ 데λͺ¨ 탐색:</b> HuggingFace Spaces λ˜λŠ” Colab을 톡해 μΆ”κ°€ 데λͺ¨λ₯Ό ν™•μΈν•˜μ„Έμš”:
161
+ </p>
162
+ <ul>
163
+ <li><a href="https://huggingface.co/spaces/google/cxr-foundation-demo?referral=rad_explain"
164
+ target="_blank">
165
+ CXR Foundations 데λͺ¨ <img class="hf-logo"
166
+ src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
167
+ -
168
+ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” 데이터 효율적이고 μ œλ‘œμƒ· CXR 이미지 λΆ„λ₯˜λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.</li>
169
+ <li><a href="https://huggingface.co/spaces/google/path-foundation-demo?referral=rad_explain"
170
+ target="_blank">
171
+ Path Foundations 데λͺ¨ <img class="hf-logo"
172
+ src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
173
+ -
174
+ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” 데이터 효율적인 λΆ„λ₯˜ 및 병리 μŠ¬λΌμ΄λ“œ λ‚΄ μ΄μƒμΉ˜ 탐지λ₯Ό κ°•μ‘°ν•©λ‹ˆλ‹€.</li>
175
+ <li><a href="https://github.com/Google-Health/medgemma/tree/main/notebooks/fine_tune_with_hugging_face.ipynb" target="_blank">
176
+ MedGemma λ―Έμ„Έ μ‘°μ • Colab <img class="hf-logo"
177
+ src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Google_Colaboratory_SVG_Logo.svg"></a>
178
+ -
179
+ 이 λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•˜λŠ” λ°©λ²•μ˜ 예제λ₯Ό ν™•μΈν•˜μ„Έμš”.</li>
180
+ </ul>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </body>
185
 
186
+ </html><!DOCTYPE html>
 
 
 
 
 
187
 
188
+ <html lang="ko">
189
 
190
  <head>
191
  <meta charset="UTF-8">
192
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
193
+ <title>방사선 λ³΄κ³ μ„œ μ„€λͺ… 도ꡬ</title>
194
  <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
195
  <link rel="preconnect" href="https://fonts.googleapis.com">
196
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 
211
  <div class="info-page-container">
212
  <div class="info-content">
213
  <div class="info-header">
214
+ <span class="info-title-demo">방사선 μ„€λͺ… 도ꡬ 데λͺ¨</span><br>
215
+ <span class="info-title-demo info-subtitle-demo">기반 기술:</span>
216
  <span class="info-title-med info-subtitle-demo">MedGemma</span>
217
  </div>
218
+ <div class="info-text">방사선 μ˜μƒκ³Όμ˜ μƒν˜Έμž‘μš©μ΄ ν•™μŠ΅μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆλŠ” ꡐ윑 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μƒκ°ν•΄λ³΄μ„Έμš”. 이 데λͺ¨λŠ” MedGemmaλ₯Ό 기반으둜 방사선 μ˜μƒκ³Ό κ΄€λ ¨ λ³΄κ³ μ„œλ₯Ό μ‰¬μš΄ μ–Έμ–΄λ‘œ λ²ˆμ—­ν•˜κ³ , μ˜μƒμ˜ κ΄€λ ¨ μ˜μ—­μ„ μ‹œκ°μ μœΌλ‘œ κ°•μ‘°ν•˜μ—¬ 탐색할 수 μžˆλŠ” μœ μš©ν•œ 도ꡬλ₯Ό μ œκ³΅ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.</div>
219
+ <div class="info-disclaimer-text"><span class="info-disclaimer-title">λ©΄μ±… μ‘°ν•­</span> 이 데λͺ¨λŠ” μ„€λͺ… λͺ©μ μœΌλ‘œλ§Œ 제곡되며 μ™„μ„±λ˜κ±°λ‚˜ 승인된 μ œν’ˆμ„ λ‚˜νƒ€λ‚΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν’ˆμ§ˆ, μ•ˆμ „μ„± λ˜λŠ” 효λŠ₯에 λŒ€ν•œ κ·œμ •μ΄λ‚˜ ν‘œμ€€ μ€€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ μ‘μš© ν”„λ‘œκ·Έλž¨μ—λŠ” μΆ”κ°€ 개발, ꡐ윑 및 적응이 ν•„μš”ν•©λ‹ˆλ‹€. 이 데λͺ¨μ—μ„œ κ°•μ‘°λœ κ²½ν—˜μ€ ν‘œμ‹œλœ μž‘μ—…μ— λŒ€ν•œ MedGemma의 κΈ°λ³Έ κΈ°λŠ₯을 보여주며, κ°œλ°œμžμ™€ μ‚¬μš©μžκ°€ κ°€λŠ₯ν•œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ νƒμƒ‰ν•˜κ³  μΆ”κ°€ κ°œλ°œμ— μ˜κ°μ„ 주도둝 돕기 μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.</div>
220
+ <button class="info-button" id="view-demo-button">데λͺ¨ 보기</button>
 
 
 
 
 
 
 
 
 
221
  </div>
222
  </div>
223
  </div>
 
225
  <div class="nav-button nav-button-back" id="back-to-info-button">
226
  <div class="nav-button-inner">
227
  <span class="material-symbols-outlined nav-button-icon">keyboard_arrow_left</span>
228
+ <span class="nav-button-text">λ’€λ‘œ</span>
229
  </div>
230
  </div>
231
  <div class="case-selector-tabs-container" id="case-selector-tabs-container">
232
+ <div>X-레이</div>
233
  <div class="case-selector-tabs" id="case-selector-tabs">
234
  {% if available_reports %}
235
  {% for report in available_reports %}
 
242
  {% endif %}
243
  {% endfor %}
244
  {% else %}
245
+ <span class="no-cases-available">μ‚¬μš© κ°€λŠ₯ν•œ μΌ€μ΄μŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€</span>
246
  {% endif %}
247
  </div>
248
 
 
259
  {% endif %}
260
  {% endfor %}
261
  {% else %}
262
+ <span class="no-cases-available">μ‚¬μš© κ°€λŠ₯ν•œ μΌ€μ΄μŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€</span>
263
  {% endif %}
264
  </div>
265
 
 
267
  <div class="nav-button nav-button-info" id="info-button">
268
  <div class="nav-button-inner">
269
  <span class="material-symbols-outlined nav-button-icon">code_blocks</span>
270
+ <span class="nav-button-text">이 데λͺ¨μ— λŒ€ν•œ 상세 정보</span>
271
  </div>
272
  </div>
273
 
274
 
275
 
276
  <div class="image-section">
277
+ <div id="image-modality-header" class="image-header">{{ image_type | default('의료 μ˜μƒ', true) }}
278
  </div> <!-- Updated: ID added, initial text changed -->
279
  <div id="image-container" class="image-container"> <!-- Container for relative positioning -->
280
+ <img id="report-image" src="" alt="의료 μ˜μƒ" style="display: none;">
281
+ <div id="image-loading" class="loading" style="display: none;">이미지 λ‘œλ”© 쀑...</div>
282
  <div id="image-error" class="error-message" style="display: none;"></div>
283
  </div>
284
  <div id="ct-image-note" class="image-note">
285
+ 이것은 CT의 단일 슬라이슀λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. λ³΄κ³ μ„œμ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ‹œκ°ν™”ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.
286
  </div>
287
  </div>
288
 
289
  <div class="report-section">
290
+ <div id="app-loading" class="loading" style="display: none;">λ³΄κ³ μ„œ 상세 정보 λ‘œλ”© 쀑...</div>
291
  <div id="app-error" class="error-message" style="display: none;"></div>
292
  <div class="explanation-section">
293
  <div id="explanation-output" class="explanation-box">
294
+ <div id="explanation-loading" class="loading">μ„€λͺ…을 μƒμ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€... μž μ‹œλ§Œ κΈ°λ‹€λ €μ£Όμ„Έμš”.</div>
295
+ <div class="explanation-header">이것이 μ˜λ―Έν•˜λŠ” λ°”
296
  </div>
297
  <div id="explanation-content">
298
+ λ¬Έμž₯을 ν΄λ¦­ν•˜λ©΄ 여기에 μ„€λͺ…이 ν‘œμ‹œλ©λ‹ˆλ‹€.
299
  </div>
300
  </div>
301
  </div>
302
  <div class="report-text-area">
303
  <div id="report-text-display" >
304
  <!-- Report text will be loaded here -->
305
+ λ³΄κ³ μ„œλ₯Ό μ„ νƒν•˜λ©΄ ν…μŠ€νŠΈκ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.
306
  </div>
307
  <div class="floating-disclaimer">
308
  <span class="material-symbols-outlined disclaimer-icon">warning</span>
309
+ <span class="disclaimer-text">이 데λͺ¨λŠ” MedGemma의 κΈ°λ³Έ κΈ°λŠ₯을 μ„€λͺ…ν•˜κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œλ§Œ μ œκ³΅λ©λ‹ˆλ‹€. μ™„μ„±λ˜κ±°λ‚˜ 승인된 μ œν’ˆμ„ λ‚˜νƒ€λ‚΄μ§€ μ•ŠμœΌλ©°, μ§ˆλ³‘μ΄λ‚˜ μƒνƒœλ₯Ό μ§„λ‹¨ν•˜κ±°λ‚˜ 치료λ₯Ό μ œμ•ˆν•˜κΈ° μœ„ν•œ 것이 μ•„λ‹ˆλ©°, μ˜ν•™μ  쑰언에 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.</span>
 
 
 
310
  </div>
311
  </div>
312
  </div>
 
321
  <div id="immersive-info-dialog" class="dialog-overlay" style="display: none;" role="dialog" aria-modal="true"
322
  aria-labelledby="dialog-title">
323
  <div class="dialog-box">
324
+ <button id="dialog-close-button" class="dialog-close-btn" aria-label="λŒ€ν™”μƒμž λ‹«κΈ°">
325
  <span class="material-symbols-outlined">close</span>
326
  </button>
327
+ <h2 id="dialog-title" class="dialog-title-text">이 데λͺ¨μ— λŒ€ν•œ 상세 정보</h2>
328
  <div class="dialog-body-scrollable">
329
+ <p><b>λͺ¨λΈ:</b> 이 데λͺ¨λŠ” κ΅¬κΈ€μ˜ MedGemma-4Bλ₯Ό λ…μ μ μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λŠ” Gemma 3 기반 λͺ¨λΈλ‘œ, 흉뢀 X-λ ˆμ΄μ™€ 같은 의료 ν…μŠ€νŠΈ 및 이미지λ₯Ό μ΄ν•΄ν•˜λ„λ‘ λ―Έμ„Έ μ‘°μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 의료 λ°μ΄ν„°μ˜ κ³ κΈ‰ 해석을 μ œκ³΅ν•˜μ—¬ AI 기반 의료 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ κ°€μ†ν™”ν•˜λŠ” MedGemma의 λŠ₯λ ₯을 λ³΄μ—¬μ€λ‹ˆλ‹€.</p>
330
+ <p><b>λͺ¨λΈ μ ‘κ·Ό 및 μ‚¬μš©:</b> κ΅¬κΈ€μ˜ MedGemma-4BλŠ” <a
 
 
 
 
331
  href="https://huggingface.co/google/medgemma-4b-it" target="_blank">HuggingFace<img
332
  class="hf-logo"
333
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg">
334
+ </a>와
335
  <a href="https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/medgemma" target="_blank">Model
336
  Garden <img class="hf-logo"
337
+ src="https://www.gstatic.com/cloud/images/icons/apple-icon.png"></a>μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
338
+ λͺ¨λΈ μ‚¬μš© 및 μ œν•œ 사항에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ <a
339
  href="https://developers.google.com/health-ai-developer-foundations?referral=rad_explain"
340
  target="_blank">HAI-DEF
341
+ 개발자 μ‚¬μ΄νŠΈ</a>μ—μ„œ ν™•μΈν•˜μ„Έμš”.
342
  </p>
343
+ <p><b>Health AI Developer Foundations (HAI-DEF)</b>λŠ” κ°œλ°œμžκ°€ 의료 λΆ„μ•Όμš© AI λͺ¨λΈμ„ ꡬ좕할 수 μžˆλ„λ‘ ν•˜λŠ” μ˜€ν”ˆ μ›¨μ΄νŠΈ λͺ¨λΈ 및 κ΄€λ ¨ λ¦¬μ†ŒμŠ€ λͺ¨μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.</p>
344
+ <p><b>데λͺ¨κ°€ λ§ˆμŒμ— λ“œμ…¨λ‚˜μš”?</b> μ—¬λŸ¬λΆ„μ˜ ν”Όλ“œλ°±μ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€! 이 데λͺ¨κ°€ 도움이 λ˜μ—ˆλ‹€λ©΄, 상단에 링크된 HuggingFace νŽ˜μ΄μ§€μ—μ„œ β™‘ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ κ°μ‚¬μ˜ λ§ˆμŒμ„ ν‘œν˜„ν•΄μ£Όμ„Έμš”.</p>
345
+ <p><b>더 λ§Žμ€ 데λͺ¨ 탐색:</b> HuggingFace Spaces λ˜λŠ” Colab을 톡해 μΆ”κ°€ 데λͺ¨λ₯Ό ν™•μΈν•˜μ„Έμš”:
 
 
346
  </p>
347
  <ul>
348
  <li><a href="https://huggingface.co/spaces/google/cxr-foundation-demo?referral=rad_explain"
349
  target="_blank">
350
+ CXR Foundations 데λͺ¨ <img class="hf-logo"
351
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
352
  -
353
+ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” 데이터 효율적이고 μ œλ‘œμƒ· CXR 이미지 λΆ„λ₯˜λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.</li>
354
  <li><a href="https://huggingface.co/spaces/google/path-foundation-demo?referral=rad_explain"
355
  target="_blank">
356
+ Path Foundations 데λͺ¨ <img class="hf-logo"
357
  src="https://huggingface.co/datasets/huggingface/brand-assets/resolve/main/hf-logo.svg"></a>
358
  -
359
+ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” 데이터 효율적인 λΆ„λ₯˜ 및 병리 μŠ¬λΌμ΄λ“œ λ‚΄ μ΄μƒμΉ˜ 탐지λ₯Ό κ°•μ‘°ν•©λ‹ˆλ‹€.</li>
 
360
  <li><a href="https://github.com/Google-Health/medgemma/tree/main/notebooks/fine_tune_with_hugging_face.ipynb" target="_blank">
361
+ MedGemma λ―Έμ„Έ μ‘°μ • Colab <img class="hf-logo"
362
  src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Google_Colaboratory_SVG_Logo.svg"></a>
363
  -
364
+ 이 λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•˜λŠ” λ°©λ²•μ˜ 예제λ₯Ό ν™•μΈν•˜μ„Έμš”.</li>
365
  </ul>
366
  </div>
367
  </div>