| import numpy as np | |
| from datasets import load_dataset | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| palette_dataset = load_dataset("danielritchie/cinematic-mood-palette")["train"] | |
| palette_vectors = [] | |
| palette_names = [] | |
| for row in palette_dataset: | |
| palette_vectors.append([row["V"], row["A"], row["D"], row["Cx"], row["Co"]]) | |
| palette_names.append(row.get("name", "unknown")) | |
| palette_vectors = np.array(palette_vectors) | |
| def nearest_palette_vector(raw_vad): | |
| raw_vec = np.array([[raw_vad[k] for k in ["V","A","D","Cx","Co"]]]) | |
| sims = cosine_similarity(raw_vec, palette_vectors)[0] | |
| idx = np.argmax(sims) | |
| anchor = palette_vectors[idx] | |
| return { | |
| "vector": { | |
| "V": anchor[0], | |
| "A": anchor[1], | |
| "D": anchor[2], | |
| "Cx": anchor[3], | |
| "Co": anchor[4], | |
| }, | |
| "name": palette_names[idx] | |
| } | |
| def amplify_with_palette(raw, drama): | |
| anchor_data = nearest_palette_vector(raw) | |
| anchor = anchor_data["vector"] | |
| amplified = { | |
| k: float(raw[k] + drama * (anchor[k] - raw[k])) | |
| for k in raw | |
| } | |
| return amplified, anchor_data["name"] | |