| import numpy as np |
| import tensorflow as tf |
| from huggingface_hub import hf_hub_download |
|
|
| |
| model_path = hf_hub_download( |
| repo_id="danielritchie/vibe-color-model", |
| filename="vibe_model.h5" |
| ) |
|
|
| |
| model = tf.keras.models.load_model(model_path, compile=False) |
|
|
|
|
| def infer_color(vad): |
| input_data = np.array([[ |
| vad["V"], |
| vad["A"], |
| vad["D"], |
| vad["Cx"], |
| vad["Co"] |
| ]], dtype=np.float32) |
|
|
| output = model.predict(input_data, verbose=0)[0] |
|
|
| r, g, b, e, i = output |
|
|
| return { |
| "R": float(r), |
| "G": float(g), |
| "B": float(b), |
| "E": float(e), |
| "I": float(i) |
| } |
|
|
| def scale_rgb(rgb): |
| return { |
| "R": int(max(0, min(255, rgb["R"] * 255))), |
| "G": int(max(0, min(255, rgb["G"] * 255))), |
| "B": int(max(0, min(255, rgb["B"] * 255))), |
| "E": rgb["E"], |
| "I": rgb["I"] |
| } |
|
|
| def render_color(rgb): |
| return f""" |
| <div style=" |
| width:100%; |
| height:240px; |
| border-radius:18px; |
| background: rgb({rgb['R']},{rgb['G']},{rgb['B']}); |
| box-shadow: 0px 6px 32px rgba(0,0,0,0.25); |
| transition: all 0.3s ease-in-out; |
| "></div> |
| """ |
|
|
|
|