File size: 1,395 Bytes
4bbad46
44fd486
 
4bbad46
 
 
 
 
 
2740251
 
44fd486
ee5a1c0
4bbad46
2740251
 
 
 
 
 
44fd486
4bbad46
ccf6eb2
4bbad46
44fd486
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
from imwatermark import WatermarkDecoder
import gradio as gr

# https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion_xl/watermark.py
# Copied from https://github.com/Stability-AI/generative-models/blob/613af104c6b85184091d42d374fef420eddb356d/scripts/demo/streamlit_helpers.py#L66
WATERMARK_MESSAGE = 0b101100111110110010010000011110111011000110011110
# bin(x)[2:] gives bits of x as str, use int to convert them to 0/1
WATERMARK_BITS = [int(bit) for bit in bin(WATERMARK_MESSAGE)[2:]]

SDXL_MESSAGE=[bool(bit) for bit in bin(WATERMARK_MESSAGE)[2:]]

def detect_watermark(image):
    decoder = WatermarkDecoder('bits', 48)
    watermark = decoder.decode(image, 'dwtDct')
    
    if(all(watermark==SDXL_MESSAGE)):
        return "この画像はdiffusersのSDXLで作られた可能性があります。"
    else:
        return "何もわかりませんでした。"

gr.Interface(fn=detect_watermark,
             title="AI画像簡易チェックツール",
             description="指定の画像が画像生成AIによって作られたものか電子透かしを読み取って簡易的に判定します。このツールで判定したことを決して断定的に用いないでください。[DALLE3とFirefly用](https://contentcredentials.org/verify)",
             inputs=gr.Image(type="numpy"),
             outputs=gr.Textbox()).launch()