Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Added more kernels and examples
Browse files- app.py +40 -27
- examples/huggingface.jpg +0 -0
app.py
CHANGED
|
@@ -6,35 +6,36 @@ from kornia import morphology as morph
|
|
| 6 |
|
| 7 |
import torch
|
| 8 |
|
| 9 |
-
def morphological_operators(filepath, operator):
|
| 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 |
examples = [
|
| 37 |
-
["examples/cat.png", "Dilation"]
|
|
|
|
| 38 |
]
|
| 39 |
|
| 40 |
title = "Kornia Morphological Operators"
|
|
@@ -44,10 +45,22 @@ article = "<p style='text-align: center'><a href='https://kornia.readthedocs.io/
|
|
| 44 |
iface = gr.Interface(morphological_operators,
|
| 45 |
[
|
| 46 |
gr.Image(type="filepath"),
|
| 47 |
-
gr.Dropdown(choices=["Dilation", "Erosion", "Open", "Close", "Gradient", "Bottom Hat", "Top Hat"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
],
|
| 49 |
"image",
|
| 50 |
-
examples
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
)
|
| 53 |
|
|
|
|
| 6 |
|
| 7 |
import torch
|
| 8 |
|
| 9 |
+
def morphological_operators(filepath, operator, kernel, kernel_size):
|
| 10 |
|
| 11 |
+
img: Tensor = K.io.load_image(filepath, K.io.ImageLoadType.RGB32)
|
| 12 |
+
img = img[None]
|
| 13 |
+
|
| 14 |
+
device = 'cpu' # 'cuda:0' for GPU
|
| 15 |
+
kernels = {
|
| 16 |
+
"Ones": torch.ones(kernel_size,kernel_size).to(device),
|
| 17 |
+
"Eye": torch.eye(kernel_size).to(device)
|
| 18 |
+
}
|
| 19 |
+
#torch.tensor([[0, 1, 0],[1, 1, 1],[0, 1, 0]]).to(device)
|
| 20 |
+
|
| 21 |
+
operations = {
|
| 22 |
+
'Dilation': morph.dilation(img, kernels[kernel]),
|
| 23 |
+
'Erosion':morph.erosion(img, kernels[kernel]),
|
| 24 |
+
'Open': morph.opening(img, kernels[kernel]),
|
| 25 |
+
'Close': morph.closing(img, kernels[kernel]),
|
| 26 |
+
'Gradient': 1. - morph.gradient(img, kernels[kernel]),
|
| 27 |
+
'Bottom Hat': 1. - morph.bottom_hat(img, kernels[kernel]),
|
| 28 |
+
'Top Hat': 1. - morph.top_hat(img, kernels[kernel])
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
output = K.tensor_to_image(operations[operator].squeeze(0))
|
| 33 |
+
return output
|
| 34 |
|
| 35 |
|
| 36 |
examples = [
|
| 37 |
+
["examples/cat.png", "Dilation", "Ones"],
|
| 38 |
+
["examples/huggingface.jpg", "Close", "Eye"]
|
| 39 |
]
|
| 40 |
|
| 41 |
title = "Kornia Morphological Operators"
|
|
|
|
| 45 |
iface = gr.Interface(morphological_operators,
|
| 46 |
[
|
| 47 |
gr.Image(type="filepath"),
|
| 48 |
+
gr.Dropdown(choices=["Dilation", "Erosion", "Open", "Close", "Gradient", "Bottom Hat", "Top Hat"]),
|
| 49 |
+
gr.Radio(choices=["Ones", "Eye"]),
|
| 50 |
+
gr.Slider(
|
| 51 |
+
minimum=1,
|
| 52 |
+
maximum=7,
|
| 53 |
+
step=2,
|
| 54 |
+
value=3,
|
| 55 |
+
label="Kernel size"
|
| 56 |
+
)
|
| 57 |
],
|
| 58 |
"image",
|
| 59 |
+
examples,
|
| 60 |
+
title=title,
|
| 61 |
+
description=description,
|
| 62 |
+
article=article,
|
| 63 |
+
live=True
|
| 64 |
|
| 65 |
)
|
| 66 |
|
examples/huggingface.jpg
ADDED
|