Spaces:
Running
Running
import pandas as pd | |
from pathlib import Path | |
import typing as tp | |
import gradio as gr | |
audio_attacks_with_variations = ['random_noise', 'lowpass_filter', 'highpass_filter', 'boost_audio', 'duck_audio', 'shush_fraction'] | |
audio_models = ['wavmark', 'timbre', 'audioseal'] | |
audio_metrics = ['snr', 'sisnr', 'stoi', 'ba', 'pesq', 'detect_prob'] | |
image_attacks_with_variations = [ | |
# "crop", | |
"jpeg", | |
"brightness", | |
"contrast", | |
"saturation", | |
"sharpness", | |
"resize", | |
"perspective", | |
"median_filter", | |
"hue", | |
"gaussian_blur", | |
] | |
image_models = ["dctdwt", "fnns", "hidden", "ssl", "trustmark", "wam"] | |
image_metrics = [ | |
"psnr", | |
"ssim", | |
"lpips", | |
"bit_acc", | |
"p_value", | |
"word_acc", | |
"watermark_det_score", | |
] | |
def plot_data(metric, selected_attack, all_attacks_df): | |
attack_df = all_attacks_df[all_attacks_df.attack == selected_attack] | |
if metric == "None": | |
return gr.LinePlot(x_bin=None) | |
return gr.LinePlot( | |
attack_df, | |
x="strength", | |
y=metric, | |
color="model", | |
) | |
def mk_audio_variations(csv_file: Path, ): | |
all_attacks_df = pd.read_csv(csv_file) | |
with gr.Row(): | |
group_by = gr.Radio(audio_metrics, value=audio_metrics[0], label="Choose metric") | |
attacks_dropdown = gr.Dropdown( | |
audio_attacks_with_variations, label=audio_attacks_with_variations[0], info="Select attack" | |
) | |
attacks_by_strength = plot_data(group_by.value, attacks_dropdown.value, all_attacks_df) | |
all_graphs = [attacks_by_strength, ] | |
group_by.change( | |
lambda group: plot_data(group, attacks_dropdown.value, all_attacks_df), | |
group_by, | |
all_graphs | |
) | |
attacks_dropdown.change( | |
lambda attack: plot_data(group_by.value, attack, all_attacks_df), | |
attacks_dropdown, | |
all_graphs | |
) | |
def mk_image_variations(csv_file: Path, ): | |
all_attacks_df = pd.read_csv(csv_file) | |
with gr.Row(): | |
group_by = gr.Radio(image_metrics, value=image_metrics[0], label="Choose metric") | |
attacks_dropdown = gr.Dropdown( | |
image_attacks_with_variations, label=image_attacks_with_variations[0], info="Select attack" | |
) | |
attacks_by_strength = plot_data(group_by.value, attacks_dropdown.value, all_attacks_df) | |
all_graphs = [attacks_by_strength, ] | |
group_by.change( | |
lambda group: plot_data(group, attacks_dropdown.value, all_attacks_df), | |
group_by, | |
all_graphs | |
) | |
attacks_dropdown.change( | |
lambda attack: plot_data(group_by.value, attack, all_attacks_df), | |
attacks_dropdown, | |
all_graphs | |
) |