seawolf2357 commited on
Commit
2c781c1
ยท
verified ยท
1 Parent(s): fc74d98

Update templates/index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +0 -185
templates/index.html CHANGED
@@ -88,191 +88,6 @@
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>
197
- <link
198
- href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500&family=Google+Sans+Text:wght@500&display=swap"
199
- rel="stylesheet">
200
- <link
201
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200"
202
- rel="stylesheet">
203
- <!-- Link to the correct JS file -->
204
- <script src="https://unpkg.com/compromise" defer></script>
205
- <script src="{{ url_for('static', filename='js/demo.js') }}" defer></script>
206
- </head>
207
-
208
- <body>
209
- <div class="info">
210
- <!-- New Info Page Content -->
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>
224
- <div class="main">
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 %}
236
- {% if report.image_type == 'CXR' %}
237
- <div class="nav-button nav-button-case" data-report-name="{{ report.name }}">
238
- <div class="nav-button-inner">
239
- <span class="nav-button-text">{{ report.name }}</span>
240
- </div>
241
- </div>
242
- {% endif %}
243
- {% endfor %}
244
- {% else %}
245
- <span class="no-cases-available">์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ผ€์ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค</span>
246
- {% endif %}
247
- </div>
248
-
249
- <div>CT</div>
250
- <div class="case-selector-tabs" id="case-selector-tabs2">
251
- {% if available_reports %}
252
- {% for report in available_reports %}
253
- {% if report.image_type == 'CT' %}
254
- <div class="nav-button nav-button-case" data-report-name="{{ report.name }}">
255
- <div class="nav-button-inner">
256
- <span class="nav-button-text">{{ report.name }}</span>
257
- </div>
258
- </div>
259
- {% endif %}
260
- {% endfor %}
261
- {% else %}
262
- <span class="no-cases-available">์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ผ€์ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค</span>
263
- {% endif %}
264
- </div>
265
-
266
- </div>
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 -->
 
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 -->