nightfury's picture
Update app.py
0222b1d
raw
history blame
11.4 kB
import gradio as gr
import numpy as np
import colorizers as c
from colorizers.util import postprocess_tens, preprocess_img
def interface(image, model: str = "eccv16"):
if model == "eccv16":
img = c.eccv16(pretrained=True).eval()
else:
img = c.siggraph17(pretrained=True).eval()
oimg = np.asarray(image)
if(oimg.ndim == 2):
oimg = np.tile(oimg[:,:,None], 3)
(tens_l_orig, tens_l_rs) = preprocess_img(oimg)
output_img = postprocess_tens(
tens_l_orig,
img(tens_l_rs).cpu()
)
return output_img
css='''
.Box {
background-color: var(--color-canvas-default);
border-color: var(--color-border-default);
border-style: solid;
border-width: 1px;
border-radius: 6px;
}
.d-flex {
display: flex !important;
}
.flex-md-row {
flex-direction: row !important;
}
.flex-column {
flex-direction: column !important;
}
'''
title = "Image Colorization Using AI Models"
description = r"""<center>An automatic colorization functionality for Real-Time User-Guided Image Colorization with Learned Deep Priors,ECCV16 & SIGGRAPH 2017 Models!<br>
Practically the algorithm is used to COLORIZE your **old BLACK & WHITE / GRAYSCALE photos**.<br>
To use it, simply just upload the concerned image.<br>
"""
article = r"""
<p style='text-align: '>
Given a grayscale photograph as input, this demo attacks the problem of hallucinating a plausible color version of the photograph. This problem is clearly underconstrained, so previous approaches have either relied on significant user interaction or resulted in desaturated colorizations. A fully automatic approach has been proposed that produces vibrant and realistic colorizations. The underlying uncertainty of the problem was embraced by posing it as a classification task and use class-rebalancing at training time to increase the diversity of colors in the result. The system is implemented as a feed-forward pass in a CNN at test time and is trained on over a million color images. The algorithm is evaluated using a "colorization Turing test," asking human participants to choose between a generated and ground truth color image. The method used here successfully fools humans on 32% of the trials, significantly higher than other methodology used by the other photo automation tools. Moreover, the colorization can be a powerful pretext task for self-supervised feature learning, acting as a cross-channel encoder. This approach results in state-of-the-art performance on several feature learning benchmarks.
</p>
<img src="https://camo.githubusercontent.com/8f849fd53753e61659664d37849703d949209ec93957d1a2fd529be9772f7030/687474703a2f2f726963687a68616e672e6769746875622e696f2f636f6c6f72697a6174696f6e2f7265736f75726365732f696d616765732f746561736572342e6a7067" alt="Teaser Image" data-canonical-src="http://richzhang.github.io/colorization/resources/images/teaser4.jpg" style="max-width: 100%;">
<p>
<img class="round" style="height:275px" src="http://richzhang.github.io/colorization/resources/images/net_diagram.jpg">
</p>
<div class="footer">
<p>Built by <a href="https://twitter.com/jadejadushyant" style="text-decoration: underline;" target="_blank">Dushyantsinh Jadeja</a> & the Model being used in here is from <a href="https://github.com/richzhang/colorization" style="text-decoration: underline;" target="_blank">richzhang</a> - Gradio Demo by πŸ€— Hugging Face
</p>
</div>
<div class="acknowledgments">
<p><h4>LICENSE</h4>
<div class="Box mb-3 clearfix">
<div class="d-flex flex-column flex-md-row">
<div class="p-3 col-md-6">
<svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-law color-fg-default float-left mr-2">
<path fill-rule="evenodd" d="M12.75 2.75a.75.75 0 00-1.5 0V4.5H9.276a1.75 1.75 0 00-.985.303L6.596 5.957A.25.25 0 016.455 6H2.353a.75.75 0 100 1.5H3.93L.563 15.18a.762.762 0 00.21.88c.08.064.161.125.309.221.186.121.452.278.792.433.68.311 1.662.62 2.876.62a6.919 6.919 0 002.876-.62c.34-.155.606-.312.792-.433.15-.097.23-.158.31-.223a.75.75 0 00.209-.878L5.569 7.5h.886c.351 0 .694-.106.984-.303l1.696-1.154A.25.25 0 019.275 6h1.975v14.5H6.763a.75.75 0 000 1.5h10.474a.75.75 0 000-1.5H12.75V6h1.974c.05 0 .1.015.14.043l1.697 1.154c.29.197.633.303.984.303h.886l-3.368 7.68a.75.75 0 00.23.896c.012.009 0 0 .002 0a3.154 3.154 0 00.31.206c.185.112.45.256.79.4a7.343 7.343 0 002.855.568 7.343 7.343 0 002.856-.569c.338-.143.604-.287.79-.399a3.5 3.5 0 00.31-.206.75.75 0 00.23-.896L20.07 7.5h1.578a.75.75 0 000-1.5h-4.102a.25.25 0 01-.14-.043l-1.697-1.154a1.75 1.75 0 00-.984-.303H12.75V2.75zM2.193 15.198a5.418 5.418 0 002.557.635 5.418 5.418 0 002.557-.635L4.75 9.368l-2.557 5.83zm14.51-.024c.082.04.174.083.275.126.53.223 1.305.45 2.272.45a5.846 5.846 0 002.547-.576L19.25 9.367l-2.547 5.807z"></path>
</svg>
<p class="text-small color-fg-muted mb-0 lh-condensed-ultra">
richzhang/colorization
is licensed under the
</p>
<h3 class="mt-0 mb-2 h4">BSD 2-Clause "Simplified" License</h3>
<p class="mb-0 color-fg-muted text-small pr-2">A permissive license that comes in two variants, the BSD 2-Clause and BSD 3-Clause. Both have very minute differences to the MIT license.</p>
</div>
<div class="d-flex px-3 col-md-6 flex-column flex-sm-row pb-sm-3">
<div class="pb-3 col-sm-4 pt-md-2">
<h4 class="mt-1 mb-2 h5">Permissions</h4>
<ul class="list-style-none">
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-check color-fg-success ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
<span class="v-align-middle" title="The licensed material and derivatives may be used for commercial purposes.">
Commercial use
</span>
</li>
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-check color-fg-success ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
<span class="v-align-middle" title="The licensed material may be modified.">
Modification
</span>
</li>
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-check color-fg-success ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
<span class="v-align-middle" title="The licensed material may be distributed.">
Distribution
</span>
</li>
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-check color-fg-success ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
<span class="v-align-middle" title="The licensed material may be used and modified in private.">
Private use
</span>
</li>
</ul>
</div>
<div class="pb-3 col-sm-4 pt-md-2">
<h4 class="mt-1 mb-2 h5">Limitations</h4>
<ul class="list-style-none">
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-x color-fg-danger ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
<span class="v-align-middle" title="This license includes a limitation of liability.">
Liability
</span>
</li>
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-x color-fg-danger ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
<span class="v-align-middle" title="This license explicitly states that it does NOT provide any warranty.">
Warranty
</span>
</li>
</ul>
</div>
<div class="pb-3 col-sm-4 pt-md-2">
<h4 class="mt-1 mb-2 h5">Conditions</h4>
<ul class="list-style-none">
<li class="text-small pl-3">
<svg width="13" class="octicon octicon-info color-fg-accent ml-n3 v-align-middle" viewBox="0 0 16 16" version="1.1" height="13" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
<span class="v-align-middle" title="A copy of the license and copyright notice must be included with the licensed material.">
License and copyright notice
</span>
</li>
</ul>
</div>
</div>
</div>
<p class="color-fg-muted text-small mb-0 border-top col-12 float-left p-2 px-sm-3">
This is not legal advice.
<a href="https://docs.github.com/articles/licensing-a-repository/#disclaimer">Learn more about repository licenses</a>.
</p>
</div>
For the full list of restrictions please <a href="https://github.dev/richzhang/colorization/blob/master/LICENSE" target="_blank" style="text-decoration: underline;" target="_blank">read the license</a></p>
<br>
<center><img src='https://visitor-badge.glitch.me/badge?page_id=dj_colorization_eccv16siggraph17' alt='visitor badge'></center>
"""
#with gr.Interface(css=css) as mainBody:
gr.HTML("""<style>
{css}
</Style>""")
mainBody = gr.Interface(
interface,
[
gr.components.Image(type="pil", label="image"),
gr.components.Radio(
["eccv16", "siggraph17"],
type="value",
label="model"
)
],
[
gr.components.Image(label="output")
],
gr.HTML(css=css),
#inputs="sketchpad",
#outputs="label",
theme="huggingface",
title=title,
description=description,
article=article,
live=True,
)
mainBody.launch()