LionImageSearch / app.py
awacke1's picture
Update app.py
59e125e
raw
history blame
2.22 kB
import pandas as pd
import gradio as gr
from datasets import load_dataset
#dataset = load_dataset("laion/laion2B-en-joined") too big space evicted
#dataset = load_dataset("laion/laion-coco") # try smaller? evicted again. try try again
#dataset = load_dataset("laion/laion400m") # smaller still - you can do it!
dataset = load_dataset("laion/laion-art", split="train") # 1.2G? parquet
#dataset_filtered = dataset.filter(lambda x : x["TEXT"].contains
#dataset = dataset.filter(lambda example: example["TEXT"].startswith("Christmas"))
#len(sw)
#print(sw)
#print(dataset.features)
#print (type(dataset))
df = pd.DataFrame(dataset)
#df = pd.read_csv("images.csv")
df = df[["TEXT", "URL"]]
#try:
# df['URL'] = df['URL'].apply(lambda x: '<a href= "' + str(x) + '" target="_blank"> <img src= "' + str(x) + '"/> </a>')
#except:
# print("Exception adding URL anchor link template")
def display_df():
df_images = df.head(100)
return df_images
def display_next100(dataframe, end):
dataframe = dataframe.sample(frac=1)
start = (end or dataframe.index[-1]) + 1
end = start + 99
df_images = df.loc[start:end]
return df_images, end
with gr.Blocks() as demo:
gr.Markdown("<h1><center>🦁Lion Image Search🎨</center></h1>")
gr.Markdown("""<div align="center">Art Descriptions from <a href = "https://huggingface.co/datasets/laion/laion2B-en-joined">Laion</a>. <a href="https://playgroundai.com/create">Create Art Here</a>. <a href="https://paperswithcode.com/datasets?q=art&v=lst&o=newest">Papers,Code,Datasets for SOTA in Art</a>""")
with gr.Row():
num_end = gr.Number(visible=False)
b1 = gr.Button("Images with Descriptions 0-100")
b2 = gr.Button("Next 100 Images with Descriptions")
with gr.Row():
#out_dataframe = gr.Dataframe(wrap=True, max_rows=100, overflow_row_behaviour= "paginate", datatype = ["markdown", "markdown"], headers=['URL', 'TEXT'])
out_dataframe = gr.Dataframe(wrap=True, max_rows=100, overflow_row_behaviour= "paginate", headers=['TEXT','URL'])
b1.click(fn=display_df, outputs=out_dataframe)
b2.click(fn=display_next100, inputs= [out_dataframe, num_end ], outputs=[out_dataframe, num_end])
demo.launch(debug=True, show_error=True)