haritsahm commited on
Commit
047bb92
·
1 Parent(s): 68465b3

replace interface with block and remove unused

Browse files
Files changed (4) hide show
  1. .dockerignore +2 -0
  2. DESCRIPTION.md +17 -0
  3. figures/physenet.png +0 -0
  4. main.py +61 -13
.dockerignore CHANGED
@@ -3,5 +3,7 @@
3
  !weights/
4
  !utils/
5
  !examples/
 
6
  !main.py
7
  !requirements.txt
 
 
3
  !weights/
4
  !utils/
5
  !examples/
6
+ !figures/
7
  !main.py
8
  !requirements.txt
9
+ !DESCRIPTION.md
DESCRIPTION.md ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Overview
2
+
3
+ Breast cancer classification using 2-views (bilateral) that compose a mammography exam, owing to the correlations contained in mammography views, which present crucial information for identifying tumors.
4
+
5
+ Reference: https://arxiv.org/abs/2204.05798
6
+
7
+ ## Data
8
+
9
+ The model is trained using CBIS [INBReast Dataset](https://pubmed.ncbi.nlm.nih.gov/22078258/)
10
+
11
+ - Target: Lesions (masses, calcifications, asymmetries, and distortions)
12
+ - Task: Segmentation
13
+ - Modality: Grayscale
14
+
15
+ ## Demo
16
+
17
+ Please select the example below or upload 2 pairs of mammography exam result.
figures/physenet.png ADDED
main.py CHANGED
@@ -21,12 +21,6 @@ BILATERAL_MODEL.eval()
21
  INPUT_HEIGHT, INPUT_WIDTH = 600, 500
22
 
23
  SUPPORTED_IMG_EXT = ['.png', '.jpg', '.jpeg']
24
- INPUT_FILES = [
25
- gr.File(file_count='single', file_types=SUPPORTED_IMG_EXT, label='CC View'),
26
- gr.File(file_count='single', file_types=SUPPORTED_IMG_EXT, label='MLO View'),
27
- ]
28
- OUTPUT_GALLERY = gr.Gallery(
29
- label='Highlighted Area').style(grid=[2], height='auto')
30
  EXAMPLE_IMAGES = [
31
  ['examples/f4b2d377f43ba0bd_left_cc.png',
32
  'examples/f4b2d377f43ba0bd_left_mlo.jpg'],
@@ -186,15 +180,69 @@ def predict_bilateral(cc_file, mlo_file):
186
 
187
  def run():
188
  """Run Gradio App."""
189
- demo = gr.Interface(
190
- fn=predict_bilateral,
191
- inputs=INPUT_FILES,
192
- outputs=[OUTPUT_GALLERY, gr.Label(label='Cancer Type')],
193
- examples=EXAMPLE_IMAGES,
194
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
 
196
  demo.launch(server_name='0.0.0.0', server_port=7860) # nosec B104
197
- demo.close()
198
 
199
 
200
  if __name__ == '__main__':
 
21
  INPUT_HEIGHT, INPUT_WIDTH = 600, 500
22
 
23
  SUPPORTED_IMG_EXT = ['.png', '.jpg', '.jpeg']
 
 
 
 
 
 
24
  EXAMPLE_IMAGES = [
25
  ['examples/f4b2d377f43ba0bd_left_cc.png',
26
  'examples/f4b2d377f43ba0bd_left_mlo.jpg'],
 
180
 
181
  def run():
182
  """Run Gradio App."""
183
+ with open('DESCRIPTION.md', encoding='utf-8') as f:
184
+ description = f.read()
185
+
186
+ with gr.Blocks() as demo:
187
+ with gr.Column():
188
+ gr.Markdown(
189
+ """
190
+ <h1 style="text-align: center;">Bilateral View Hypercomplex Breast Classification</h1>
191
+ """
192
+ )
193
+ with gr.Row():
194
+ gr.Markdown(description)
195
+ gr.Markdown(
196
+ """
197
+ ## Model Architecture
198
+ <img src="file/figures/physenet.png" width=auto>
199
+
200
+ Parameterized Hypercomplex Shared Encoder network (PHYSEnet).
201
+ """
202
+ )
203
+ with gr.Row():
204
+ with gr.Column():
205
+ cc_file = gr.File(file_count='single',
206
+ file_types=SUPPORTED_IMG_EXT, label='CC View')
207
+ mlo_file = gr.File(file_count='single',
208
+ file_types=SUPPORTED_IMG_EXT, label='MLO View')
209
+ with gr.Row():
210
+ process_btn = gr.Button('Process')
211
+ clear_btn = gr.Button('Clear')
212
+ with gr.Column():
213
+ output_gallery = gr.Gallery(
214
+ label='Highlighted Area').style(grid=[2], height='auto')
215
+ cancer_type = gr.Label(label='Cancer Type')
216
+ gr.Examples(
217
+ examples=EXAMPLE_IMAGES,
218
+ inputs=[cc_file, mlo_file],
219
+ )
220
+ gr.Markdown('Note that this method is sensitive to input image types.\
221
+ Current pipeline expect the values between 0.0-255.0')
222
+
223
+ process_btn.click(
224
+ fn=predict_bilateral,
225
+ inputs=[cc_file, mlo_file],
226
+ outputs=[output_gallery, cancer_type]
227
+ )
228
+
229
+ clear_btn.click(
230
+ lambda _: (
231
+ gr.update(value=None),
232
+ gr.update(value=None),
233
+ gr.update(value=None),
234
+ gr.update(value=None),
235
+ ),
236
+ inputs=None,
237
+ outputs=[
238
+ cc_file,
239
+ mlo_file,
240
+ output_gallery,
241
+ cancer_type,
242
+ ],
243
+ )
244
 
245
  demo.launch(server_name='0.0.0.0', server_port=7860) # nosec B104
 
246
 
247
 
248
  if __name__ == '__main__':