Spaces:
Running
Running
File size: 8,875 Bytes
1bf41f9 b76540e 0977623 1bf41f9 3a900c7 b76540e 0977623 8ccf878 0977623 8ccf878 1bf41f9 0977623 35e7d15 0977623 35e7d15 0977623 35e7d15 0977623 35e7d15 0977623 8ccf878 0977623 447b452 0977623 22c52a4 0977623 22c52a4 447b452 22c52a4 0977623 447b452 0977623 447b452 0977623 447b452 0977623 447b452 8ccf878 1bf41f9 0977623 |
1 2 3 4 5 6 7 8 9 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# -*- coding: utf-8 -*-
"""
SaliencyMapDemo
"""
#from datetime import datetime
import sys
from typing import Literal
import gradio as gr
import numpy as np
from src import PROGRAM_NAME, get_package_version
from src.args_parser import parse_args
from src.reporter import log
from src.saliency import SaliencyMap, convert_colormap
from src.utils import Stopwatch
__version__ = get_package_version()
log.info("#ใขใใช่ตทๅไธญ")
watch = Stopwatch.start_new()
def jet_tab_selected(image: np.ndarray):
"""
JETใฟใใ้ธๆๆ
"""
sw = Stopwatch.start_new()
log.info(f"#jet_tab_selected({sw.elapsed:.3f}s)")
saliency = SaliencyMap("SpectralResidual")
success, saliency_map = saliency.compute(image)
if not success:
return image # ใจใฉใผใ็บ็ใใๅ ดๅใฏๅ
ฅๅ็ปๅใ่ฟใใพใใ
retval = convert_colormap(image, saliency_map, "jet")
log.info(f"#jet_tab_selected({sw.elapsed:.3f}s)")
return retval
def hot_tab_selected(image: np.ndarray):
"""
HOTใฟใใ้ธๆๆ
"""
sw = Stopwatch.start_new()
log.info(f"#hot_tab_selected({sw.elapsed:.3f}s)")
saliency = SaliencyMap("SpectralResidual")
success, saliency_map = saliency.compute(image)
if not success:
return image # ใจใฉใผใ็บ็ใใๅ ดๅใฏๅ
ฅๅ็ปๅใ่ฟใใพใใ
retval = convert_colormap(image, saliency_map, "turbo")
log.info(f"#hot_tab_selected({sw.elapsed:.3f}s)")
return retval
def submit_clicked(image: np.ndarray, algorithm: Literal["SpectralResidual", "FineGrained"]):
"""
ๅ
ฅๅ็ปๅใๅ
ใซ้ก่ใใใใ่จ็ฎใใพใใ
Parameters:
image: ๅ
ฅๅ็ปๅ
str: ้ก่ๆงใใใใฎใขใซใดใชใบใ
Returns:
np.ndarray: JET็ปๅ
np.ndarray: HOT็ปๅ
"""
sw = Stopwatch.start_new()
log.info(f"#submit_clicked({sw.elapsed:.3f}s)")
#
saliency = SaliencyMap(algorithm)
log.debug(f"#SaliencyMap({sw.elapsed:.3f}s)")
success, saliency_map = saliency.compute(image)
log.debug(f"#compute({sw.elapsed:.3f}s)")
if not success:
return image, image # ใจใฉใผใ็บ็ใใๅ ดๅใฏๅ
ฅๅ็ปๅใ่ฟใใพใใ
log.debug(f"#jet({sw.elapsed:.3f}s)")
jet = convert_colormap(image, saliency_map, "jet")
# jet = None
log.debug(f"#hot({sw.elapsed:.3f}s)")
hot = convert_colormap(image, saliency_map, "hot")
saliency = None
log.info(f"#submit_clicked({sw.elapsed:.3f}s)")
return jet, hot
def gallery_selected(_, evt: gr.SelectData):
"""
ใฎใฃใฉใชใผใฎ็ปๅใ้ธๆใใใใจใใซๅผใณๅบใใใใณใผใซใใใฏ้ขๆฐใ
Parameters:
_ (Unused): ไฝฟ็จใใใชใๅผๆฐใ
evt (gr.SelectData): Gradioใฎใฎใฃใฉใชใผ้ธๆใคใใณใใใผใฟใ
Returns:
str: ้ธๆใใใใฎใฃใฉใชใผ็ปๅใฎใในใ
"""
image_path = evt.value['image']['path']
return image_path
args = parse_args()
"""
ใขใใชใฎ็ป้ขใไฝๆใใGradioใตใผใในใ่ตทๅใใพใใ
analytics_enabled=False
https://github.com/gradio-app/gradio/issues/4226
ใใใใชใญใผใๅฏพๅฟใจใใฆใtopใฌใใซใฎใคใณใใณใใซใ
https://www.gradio.app/guides/developing-faster-with-reload-mode
"""
with gr.Blocks(
analytics_enabled=False,
title=f"{PROGRAM_NAME} {get_package_version()}",
head="""
<meta name="format-detection" content="telephone=no">
<meta name="robots" content="noindex, nofollow, noarchive">
<meta name="referrer" content="no-referrer" />
"""
) as demo:
gr.Markdown("""
# Saliency Map demo.
็ปๅใซใใใๆณจ็ฎใในใ้ ๅใๅฏ่ฆๅใใใ้ก่ๆงใใใใใ่กจ็คบใใใใขใขใใชใงใใ
""")
with gr.Accordion("ๅใๆฑใ่ชฌๆๆธ", open=False):
gr.Markdown("""
### ้ก่ๆงใใใใจใฏ
้ก่ๆงใใใใจใฏใ็ปๅๅ
ใฎๆณจ็ฎใในใ้ ๅใๅฏ่ฆๅใใๆๆณใงใใใไบบ้ใฎ่ฆ่ฆใทในใใ ใ็ปๅๅ
ใฎ้่ฆใชๆ
ๅ ฑใซ็ฆ็นใๅฝใฆใๆนๆณใๆจกๅฃใใใใฎใงใใๅใใฏใปใซใซใฏๆณจ็ฎๅบฆๅใใ่กจใๅคใๅฒใๅฝใฆใใใใใใซๅบใฅใใฆๆณจ็ฎใในใ้ ๅใๅผท่ชฟใใใพใใ
ใใฎใใขใขใใชใงใฏใ้ก่ๆงใใใใๅฉ็จใใฆ็ปๅๅ
ใฎๆณจ็ฎใในใ้ ๅใ่ฆ่ฆ็ใซ็คบใใพใใใฆใผใถใผใ็ปๅใใขใใใญใผใใใใจใใขใใชใฏ้ก่ๆงใใใใ็ๆใใๆณจ็ฎใใใ้ ๅใๅผท่ชฟใใ็ปๅใๅฅใฟใใซ่กจ็คบใใพใใใใใซใใใใฆใผใถใผใฏ็ปๅๅ
ใงใฉใฎ้ ๅใ็นใซ้่ฆใงใใใใ็ดๆ็ใซ็่งฃใใใใจใใงใใพใใ
## ๆไฝ่ชฌๆ
้ก่ๆงใใใใใขใไฝฟ็จใใๆ้ ใฏไปฅไธใฎ้ใใงใ๏ผ
1. inputใฟใใง็ปๅใ้ธๆใใพใใไธ้จใฎ๐ไธ้จใฎใฏใชใใใใผใใขใคใณใณ๏ผใณใใผ&ใใผในใใขใคใณใณ๏ผใใใฏใชใใใใผใใใๅ
ฅๅใใใใจใๅบๆฅใพใใ
2. Submitใใฟใณใใฏใชใใฏใใใจใ้ธๆใใ็ปๅใๅฆ็ใใใ้ก่ๆงใใใใ็ๆใใใพใใ
3. ็ตๆใฏใJETใฟใใจHOTใฟใใซ่กจ็คบใใพใใ
### ๆดป็จใขใคใใข๐จ
ใใฎใใขใฏใๅตไฝๆดปๅใฎ้ใซๆณจ็ฎใใใใคใณใใ่ฆ่ฆๅใใใใใซๅฝน็ซใกใพใใ่ฆ่ฆๅใใใ็ตๆใๅบใซใใฉใฎ้จๅใซๅ ็ญใๅฟ
่ฆใใๅคๆญใใใใจใใงใใพใใ
ไพใใฐใ็ฎใซๆณจ็ฎใใใใคใณใใๅฐใชใๅ ดๅใฏใ็ฎใ้็น็ใซๅ ็ญใใใใจใงใไฝๅๅ
จไฝใฎ้ญ
ๅใ้ซใใใใจใใงใใใใใใใพใใใ
ใๅฉ็จใใใ ใใใใใใจใใใใใพใใ
""")
algorithm_type = gr.Radio(
["SpectralResidual", "FineGrained"],
label="Saliency",
value="SpectralResidual",
interactive=True
)
submit_button = gr.Button("submit", variant="primary")
with gr.Row():
with gr.Tab("input", id="input"):
image_input = gr.Image(sources=["upload", "clipboard"], interactive=True)
with gr.Tab("overlay(JET)"):
image_overlay_jet = gr.Image(interactive=False)
# tab_jet.select(jet_tab_selected,
# inputs=[image_input],
# outputs=image_overlay_jet)
with gr.Tab("overlay(HOT)"):
image_overlay_hot = gr.Image(interactive=False)
# tab_hot.select(hot_tab_selected,
# inputs=[image_input],
# outputs=image_overlay_hot, api_name=False)
#
with gr.Accordion("Sample Image Gallery", open=False):
gr.Markdown("""
### ็ปๅใฎใฉใคใปใณใน่กจ็คบ
็ปๅใฎใฉใคใปใณในใฏใในใฆCC0(ใใใชใใฏใใกใคใณ)ใงใใ
""")
gallery = gr.Gallery(type="filepath",
value=["assets/black_256x256.webp",
"assets/grayscale_256x256.webp",
"assets/DSC_0108.webp",
"assets/DSC_0297.webp"],
label="Sample Gallery",
interactive=False,
#height=156,
columns=5,
allow_preview=False,
selected_index=0,
preview=False,
show_download_button=False,
show_share_button=False
)
# ใฎใฃใฉใชใผๅ
ใฎ็ปๅใ้ธๆๆ
gallery.select(gallery_selected,
inputs=[gallery],
outputs=[image_input],
show_api=False
)
submit_button.click(
submit_clicked,
inputs=[image_input, algorithm_type],
outputs=[image_overlay_jet, image_overlay_hot]
)
gr.Markdown(f"""
Python {sys.version}
App {get_package_version()}
""")
demo.queue(default_concurrency_limit=5)
log.info(f"#ใขใใช่ตทๅๅฎไบ({watch.elapsed:.3f}s)ใขใใชใ็ตไบใใใซใฏCtrl+Cใญใผใๅ
ฅๅใใฆใใ ใใใ")
log.debug("reload")
if __name__ == "__main__":
# ใขใใชใ่ตทๅใใพใใ
# https://www.gradio.app/docs/gradio/blocks#blocks-launch
demo.launch(
inbrowser=args.inbrowser,
share=args.share,
server_port=args.server_port,
max_file_size=args.max_file_size,
)
|