NicheImage / app.py
toilaluan
update
150d282
raw
history blame
2.06 kB
import streamlit as st
import requests
import plotly.express as px
import pandas as pd
st.set_page_config(page_title="NicheImage Studio", layout="wide")
st.markdown("## :black[Image Generation Studio by NicheImage]")
replicate_logo = "assets/NicheTensorTransparent.png"
with st.sidebar:
st.image(replicate_logo, use_column_width=True)
st.markdown(
"""
**NicheImage is a decentralized network of image generation models, powered by the Bittensor protocol. Below you find information about the current models on the network.**
""",
unsafe_allow_html=True,
)
response = requests.get(
"http://proxy_client_nicheimage.nichetensor.com:10003/get_uid_info"
)
if response.status_code == 200:
response = response.json()
# Plot distribution of models
model_distribution = {}
for uid, info in response["all_uid_info"].items():
model_name = info["model_name"]
model_distribution[model_name] = model_distribution.get(model_name, 0) + 1
fig = px.pie(
values=list(model_distribution.values()),
names=list(model_distribution.keys()),
title="Model Distribution",
)
st.plotly_chart(fig)
transformed_dict = []
for k, v in response["all_uid_info"].items():
transformed_dict.append(
{
"uid": k,
"model_name": v["model_name"],
"mean_score": (
sum(v["scores"]) / (len(v["scores"])) if len(v["scores"]) > 0 else 0
),
}
)
transformed_dict = pd.DataFrame(transformed_dict)
# plot N bar chart for N models, sorted by mean score
for model in model_distribution.keys():
model_data = transformed_dict[transformed_dict["model_name"] == model]
model_data = model_data.sort_values(by="mean_score", ascending=False)
if model_data.mean_score.sum() == 0:
continue
st.write(f"Model: {model}")
st.bar_chart(model_data[["uid", "mean_score"]].set_index("uid"))
else:
st.error("Error getting miner info")