OverDriveLee Suweeraya commited on
Commit
4407d55
·
0 Parent(s):

Duplicate from Suweeraya/Breast_Cancer_Ultrasound_Image_Segmentation

Browse files

Co-authored-by: Suweeraya Noensai <[email protected]>

Files changed (7) hide show
  1. .gitattributes +34 -0
  2. BreastCancerSegmentation.h5 +3 -0
  3. README.md +13 -0
  4. app.py +82 -0
  5. benign(10).png +0 -0
  6. benign(109).png +0 -0
  7. requirements.txt +3 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
BreastCancerSegmentation.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:36aa1880280e4b736dbd1556d320a0deb202a5129943e616c4c05d6fcc8b327e
3
+ size 372562440
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Breast Cancer Ultrasound Image Segmentation
3
+ emoji: 🏆
4
+ colorFrom: purple
5
+ colorTo: yellow
6
+ sdk: gradio
7
+ sdk_version: 3.32.0
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: Suweeraya/Breast_Cancer_Ultrasound_Image_Segmentation
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from PIL import Image
3
+ import numpy as np
4
+ import cv2
5
+ from keras.models import Model
6
+ from keras.layers import Input, Conv2D, MaxPooling2D, Conv2DTranspose, concatenate
7
+
8
+ size = 128
9
+
10
+ def preprocess_image(image, size=128):
11
+ image = image.resize((size, size))
12
+ image = image.convert("L")
13
+ image = np.array(image) / 255.0
14
+ return image
15
+
16
+ def conv_block(input, num_filters):
17
+ conv = Conv2D(num_filters, (3, 3), activation="relu", padding="same", kernel_initializer='he_normal')(input)
18
+ conv = Conv2D(num_filters, (3, 3), activation="relu", padding="same", kernel_initializer='he_normal')(conv)
19
+ return conv
20
+
21
+ def encoder_block(input, num_filters):
22
+ conv = conv_block(input, num_filters)
23
+ pool = MaxPooling2D((2, 2))(conv)
24
+ return conv, pool
25
+
26
+ def decoder_block(input, skip_features, num_filters):
27
+ uconv = Conv2DTranspose(num_filters, (2, 2), strides=2, padding="same")(input)
28
+ con = concatenate([uconv, skip_features])
29
+ conv = conv_block(con, num_filters)
30
+ return conv
31
+
32
+ def build_model(input_shape):
33
+ input_layer = Input(input_shape)
34
+
35
+ s1, p1 = encoder_block(input_layer, 64)
36
+ s2, p2 = encoder_block(p1, 128)
37
+ s3, p3 = encoder_block(p2, 256)
38
+ s4, p4 = encoder_block(p3, 512)
39
+
40
+ b1 = conv_block(p4, 1024)
41
+
42
+ d1 = decoder_block(b1, s4, 512)
43
+ d2 = decoder_block(d1, s3, 256)
44
+ d3 = decoder_block(d2, s2, 128)
45
+ d4 = decoder_block(d3, s1, 64)
46
+
47
+ output_layer = Conv2D(1, 1, padding="same", activation="sigmoid")(d4)
48
+ model = Model(input_layer, output_layer, name="U-Net")
49
+ model.load_weights('BreastCancerSegmentation.h5')
50
+ return model
51
+
52
+ def preprocess_image(image, size=128):
53
+ image = cv2.resize(image, (size, size))
54
+ image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
55
+ image = image / 255.
56
+ return image
57
+
58
+ def segment(image):
59
+ image = preprocess_image(image, size=size)
60
+ image = np.expand_dims(image, 0)
61
+ output = model.predict(image, verbose=0)
62
+ mask_image = output[0]
63
+ mask_image = np.squeeze(mask_image, -1)
64
+ mask_image *= 255
65
+ mask_image = mask_image.astype(np.uint8)
66
+ mask_image = Image.fromarray(mask_image).convert("L")
67
+ return mask_image
68
+
69
+ if __name__ == "__main__":
70
+ model = build_model(input_shape=(size, size, 1))
71
+ gr.Interface(
72
+ fn=segment,
73
+ inputs="image",
74
+ outputs=gr.Image(type="pil", label="Breast Cancer Mask"),
75
+ examples=[["benign(10).png"], ["benign(109).png"]],
76
+ title = '<h1 style="text-align: center;">Breast Cancer Ultrasound Image Segmentation! 💐 </h1>',
77
+ description = """
78
+ Check out this exciting development in the field of breast cancer diagnosis and treatment!
79
+ A demo of Breast Cancer Ultrasound Image Segmentation has been developed.
80
+ Upload image file, or try out one of the examples below! 🙌
81
+ """
82
+ ).launch(debug=True)
benign(10).png ADDED
benign(109).png ADDED
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ opencv-python
2
+ tensorflow
3
+ keras