HSL Camera AI
Guida utente completa — post-produzione AI per immagini e video di moda e prodotto
🗺 Panoramica
HSL Camera AI è una piattaforma web per automatizzare la post-produzione di immagini e video. Si inviano file a flussi di lavoro (workflow) configurati, l'agent AI elabora tutto in background, e i risultati compaiono nella griglia Results.
| Sezione | A cosa serve |
|---|---|
| Results | Griglia di tutti i risultati. Da qui si possono aprire, scaricare, archiviare in Library o raffinare. |
| New Job | Invio manuale di un singolo job a un workflow. |
| Batch | Invio di molti file contemporaneamente allo stesso workflow. |
| Library | Archivio permanente degli output approvati. |
| Queue | Monitor in tempo reale dei job in attesa o in elaborazione. |
| Workflows | Configurazione dei flussi di lavoro disponibili. |
| Engines | Configurazione degli engine AI (OpenAI, Google, Kling…) |
| Log | Log in tempo reale dell'agent. |
📷 Results
La vista Results mostra tutti i job completati come griglia di anteprime, ordinati dal più recente. Usa il filtro in alto a destra per vedere solo i risultati di un workflow specifico.
Vista Results — griglia dei job completati
Azioni su ogni card
Passa il cursore su una card per far apparire i pulsanti:
- → Lib Sposta l'output nella Library (operazione permanente e non reversibile).
- ⬇ Download Scarica il file in full resolution.
- ✕ Elimina Elimina il job e tutti i suoi file. Non ripristinabile.
Zoom e lightbox
Clicca su qualsiasi anteprima per aprire il lightbox a schermo intero. Nel lightbox puoi:
Lightbox — confronto e zoom dell'output AI
- Slider ⇄ Trascina il divisore centrale per confrontare l'output AI (sinistra) con l'immagine originale (destra).
- Zoom + / − Ingrandisce o riduce l'immagine con step precisi. Usa anche la rotella del mouse per zoomare in continuo, e trascina per spostarti nell'immagine ingrandita. Doppio click alterna tra fit e riempimento schermo.
- Download ⬇ Scarica l'output in full resolution.
- Artifacts Mostra i file di log e gli step intermedi generati dal job.
- Retry Rimanda il job in coda con gli stessi parametri.
- Refine Apre il pannello di rifinitura (vedi sotto).
- Esc / ✕ Chiude il lightbox.
Refine
Refine permette di usare l'output di un job come input per un nuovo job, modificando il prompt o aggiungendo immagini di supporto — senza dover ricaricare i file.
| Campo | Descrizione |
|---|---|
| Target Workflow | Il workflow che elaborerà il refine (può essere diverso dall'originale). |
| Prompt | Prompt completo per questo refine. Sostituisce il prompt base del workflow. |
| Immagini aggiuntive | File extra da aggiungere dopo l'output AI come input aggiuntivo (es. immagini di stile). |
➕ New Job
Invia un singolo job a un workflow. Usa questa sezione per elaborazioni one-off o quando vuoi controllare i parametri nel dettaglio.
Modulo New Job
Come inviare un job
- Trascina una o più immagini nell'area di upload, oppure clicca per sfogliare i file.
- Seleziona il Workflow dal menu a tendina. La descrizione appare sotto il menu.
- Opzionale: espandi Workflow prompt per vedere il prompt base del workflow (vedi sotto).
- Inserisci eventuali parametri nel campo Prompt append (opzionale — vedi sotto).
- Clicca Submit. Il job viene creato e appare subito in Queue.
Workflow prompt
Dopo aver selezionato un workflow, compare sotto l'elenco immagini una sezione ▶ Workflow prompt espandibile. Cliccandola si visualizza il testo completo del prompt.txt del workflow — utile per capire il contesto già fornito al modello prima di scrivere un Prompt append.
Ordine delle immagini
Quando carichi più immagini, l'ordine è importante. Usa le frecce ▲▼ per riordinarle. L'ordine definisce quale immagine corrisponde a quale ruolo nel prompt del workflow (es. Image 1 = soggetto, Image 2 = stile).
Se il workflow ha un image_mapping.json, ogni posizione riceve un suffisso di slot (es. _REF2, _REF3) al momento del caricamento. Le immagini che non rientrano in nessuno slot del mapping vengono escluse dal job con un avviso nel log.
Analisi accessori (prefisso accessory_)
Nei workflow che usano openai_prod come Prompt Engine, qualsiasi immagine caricata con il nome che inizia per accessory_ (es. accessory_belt.jpeg) attiva automaticamente uno step di analisi visiva:
- L'immagine viene analizzata da gpt-4o vision.
- Viene generata una descrizione tecnica precisa dell'accessorio: materiale, colore esatto, texture, hardware, cuciture.
- La descrizione viene iniettata nel prompt di generazione con l'istruzione di preservare l'accessorio esattamente come mostrato.
La descrizione è salvata anche come accessory_description.txt negli artifact del job per ispezione.
accessory_ viene preservato durante il caricamento: il suffisso di mapping viene aggiunto in coda al nome originale (es. accessory_belt.jpeg → accessory_belt_REF2.jpeg), non lo sostituisce.
Prompt append
Il campo Prompt append permette di personalizzare il comportamento del workflow per questo specifico job. Supporta due formati che possono coesistere nello stesso campo:
I parametri KEY=VALUE vengono estratti automaticamente e passati all'engine. Il testo rimanente viene appendato al prompt base del workflow.
📦 Batch
Invia più file contemporaneamente allo stesso workflow. Ogni file genera un job separato e indipendente. Ideale per elaborare interi shooting in una sola operazione.
Modulo Batch — invio multiplo
- Seleziona il Workflow.
- Inserisci un eventuale Prompt append condiviso — viene applicato a tutti i job del batch.
- Trascina i file nell'area FILES. Ogni file diventa un job indipendente.
- Verifica che ogni file mostri il badge READY, poi clicca Submit Batch.
📚 Library
La Library è l'archivio permanente degli output approvati. I file qui presenti non vengono mai rimossi dalle pulizie automatiche dei job.
Library — archivio degli output approvati
Filtrare e cercare
I tab in cima alla griglia filtrano per workflow di origine. Il numero tra parentesi indica quanti item ci sono. Il campo di ricerca in alto a destra filtra per nome file in tempo reale.
Ingrandire le immagini
Come in Results, clicca su qualsiasi item per aprire il lightbox con zoom a dimensione nativa.
Selezionare e agire
Clicca su una o più card per selezionarle. La barra azioni appare in basso:
- ⬇ Download Scarica il file selezionato.
- ✏ Rename Rinomina il file.
- ✕ Delete Elimina definitivamente il file dalla Library.
- Deselect Deseleziona tutti gli item.
Upload diretto
Il bottone + Upload in alto a destra permette di caricare file direttamente in Library, senza passare da un job AI.
⏳ Queue
La Queue mostra tutti i job in attesa o in elaborazione, con aggiornamento automatico ogni 5 secondi. Non è necessario ricaricare la pagina.
Queue — monitor dei job in elaborazione
Colonne
| Colonna | Contenuto |
|---|---|
| Workflow | Nome del workflow e modello tecnico usato (es. gemini-2.0-flash-preview-image-generation). |
| Job | ID del job, stato e orario di invio. |
| Images | Numero di file input e nome del primo file. |
| Params | Parametri effettivi risolti: SIZE, QUALITY, PAD_INPUT, ecc. |
Stati
PENDING — in attesa di essere preso dall'agent PROCESSING — in elaborazione FAILED — elaborazione fallita
Leggere i parametri
I tag nella colonna Params mostrano i parametri effettivi che verranno usati — risultato del merge tra tutti i livelli di configurazione:
- tag grigio Valore proveniente dal default engine o workflow.
- tag blu Valore esplicitamente impostato nel prompt append del job (override).
Azioni
- Retry Rimanda il job in coda come PENDING, con gli stessi file e parametri.
- Remove Rimuove il job dalla coda senza elaborarlo.
⚙️ Workflows
La sezione Workflows permette di configurare i flussi di lavoro disponibili. Ogni workflow combina un prompt, un engine AI, dei parametri di default e opzionalmente immagini di riferimento.
Lista workflow con drag handle per il riordino
Riordinare i workflow
Trascina la maniglia ⠿ a sinistra di ogni card per cambiare l'ordine nella lista. Il salvataggio è automatico al rilascio. Funziona anche da iPad e dispositivi touch.
Creare un nuovo workflow
Clicca + New in alto a destra. Il nome inserito viene prefissato automaticamente con WKF_IN_.
Configurare un workflow
Clicca su un workflow per espandere la card di configurazione. I campi disponibili sono:
| Campo | Descrizione |
|---|---|
| Prompt | Il prompt base inviato all'engine. Può essere un prompt completo o istruzioni per il Prompt Engine. |
| Prompt Engine | LLM che elabora il prompt base prima di inviarlo all'Image Engine. Usa passthrough per inviare il prompt direttamente. |
| Image Engine | Modello AI che genera l'output (immagine o video). |
| Default Size | Dimensioni output di default (es. 1024x1024) — sovrascrivibile per singolo job. |
| Default Quality | Qualità di default (high, medium, low) — solo engine OpenAI. |
| Pad Input | Aggiunge padding all'immagine di input per adattarla all'aspect ratio del SIZE target, evitando zoom/distorsioni. Valori: white, black, transparent. |
| image_mapping | Definisce quale slot di input corrisponde a quale immagine del workflow. |
| Reference Images | Immagini fisse aggiunte in coda agli input di ogni job (es. immagini di stile). |
| Output Format | Formato del file di output: PNG, JPEG, WebP. |
| Description | Descrizione breve mostrata nella lista e nei selettori. |
🤖 Engines
La sezione Engines mostra e permette di configurare tutti gli engine AI disponibili.
Pannello Engines — configurazione degli engine AI
Defaults
La card Defaults in cima definisce il Prompt Engine e l'Image Engine usati dai workflow che non ne specificano uno esplicito.
Configurazione per engine
Espandendo un engine appaiono i campi specifici per quella piattaforma:
- Prompt Model Modello LLM per l'elaborazione del prompt (es.
gpt-5.2). - Image Model Modello per la generazione dell'immagine (es.
gemini-2.0-flash-preview-image-generation). - Default Size Dimensioni output di default per questo engine.
- Default Quality Qualità di default (
high,medium,low). - Note Nota editoriale (max 160 caratteri).
Clicca 💾 Save All per salvare le modifiche a tutti gli engine.
🔢 Gerarchia dei parametri
SIZE, QUALITY e PAD_INPUT vengono risolti con la seguente priorità. Il livello più alto vince sempre:
postprod_agent_runtime.json).
openai_prod ha default_size=1024x1536. Il workflow SHOES ha DEFAULT_SIZE=1024x1024. Il job ha SIZE=1536x1024 nel prompt append. → Viene usato 1536x1024 (livello 1 vince su tutto).
INPUT_MAX_SIZE (v1.11.0) segue la stessa gerarchia a 3 livelli: campo Input Max Size nella scheda Workflow, sopra il campo omonimo nella scheda Engines (OpenAI/Google; altri engine via JSON grezzo), entrambi sovrascrivibili dal prompt append del singolo job.
📋 Riferimento parametri prompt append
Questi parametri possono essere inseriti nel campo Prompt append in formato CHIAVE=valore, uno per riga.
| Parametro | Valori | Engine | Descrizione |
|---|---|---|---|
SIZE |
1024x1024, 1024x1536, 1536x1024, … |
OpenAI, Google, Veo, Sora | Dimensioni dell'output in pixel (larghezza × altezza). |
QUALITY |
high, medium, low |
OpenAI | Qualità della generazione. high usa più crediti ma produce dettagli migliori. |
PAD_INPUT |
white, black, transparent |
Tutti (immagini) | Aggiunge padding all'immagine di input per adattarla all'aspect ratio del SIZE, prevenendo zoom/distorsioni. |
OUTPUT_NAME |
es. risultato.png |
Tutti | Nome personalizzato del file di output. |
OUTPUT_FORMAT |
jpeg, png, webp |
Dove supportato | Formato del file di output. |
INPUT_MAX_SIZE |
es. 2048 (px, lato lungo) |
Tutti (immagini, tranne video) | Riduce (mai ingrandisce) le immagini di input se superano questa dimensione, mantenendo le proporzioni — utile per alleggerire upload/costi banda. Se non impostato, nessun resize (comportamento invariato). Campo Input Max Size disponibile nella scheda Workflow (per ogni workflow) e nella scheda Engines per OpenAI/Google (per ogni engine); per gli altri engine (fal.ai, Kling, Armandick, ecc.) va aggiunto manualmente come "input_max_size" nel JSON grezzo della scheda Engines. Aggiunto in v1.11.0, campi UI aggiunti in v1.11.2. |
Esempio completo
PAD_INPUT=white quando l'immagine di input è molto più larga (o alta) rispetto alle proporzioni del SIZE target. Senza padding, l'engine AI tende a zoomare per riempire il frame, deformando il soggetto. Con il padding, l'immagine originale viene centrata su uno sfondo neutro della dimensione corretta.
Studios
Gli Studios sono pagine pubbliche brandizzate che espongono un workflow PostProdAgent a utenti esterni — clienti, partner o team — senza dare accesso all'interfaccia admin del Playground.
Ogni studio ha un URL dedicato (es. /fabric-studio), un'identità visiva personalizzabile (sfondo, colori, logo) e uno o più slot per il caricamento delle immagini di input.
Creare uno studio
Dal tab Studios, clicca + New Studio. Compila i campi:
| Campo | Descrizione |
|---|---|
Title | Nome visualizzato nella pagina pubblica (es. "Fabric Studio") |
Slug | Parte finale dell'URL, generato automaticamente dal titolo (es. /fabric-studio) |
Description | Sottotitolo visibile nella pagina pubblica |
Workflow | Il workflow PostProdAgent che elabora le immagini caricate |
Accent color | Colore principale di bottoni e bordi slot |
Background | Immagine di sfondo della pagina pubblica (jpg/png) |
CTA text | Testo del bottone di invio (default: "Generate") |
Prompt append | Istruzioni extra aggiunte automaticamente a ogni job (invisibili all'utente) |
Password | Se compilata, la pagina pubblica mostra un form di accesso prima di mostrare gli slot |
Slot immagini
Ogni studio ha uno o più slot, ovvero riquadri dove l'utente carica le immagini di input. Per ogni slot configuri:
- Size — Small / Medium / Large: dimensione visiva del riquadro
- Titolo slot — etichetta visibile sotto il riquadro nella pagina pubblica (es. "Tessuto principale")
- Hint interno — testo suggerimento mostrato dentro il riquadro prima dell'upload (es. "Carica il tessuto")
Con il bottone + Add slot aggiungi altri slot (es. per workflow che richiedono immagine del tessuto + modellino + dettaglio).
Pagina pubblica
Una volta salvato, lo studio è disponibile all'URL http://<server>:8765/<slug> — accessibile da qualsiasi browser, senza login.
Il flusso utente è:
- L'utente apre il link dello studio nel browser
- Carica le immagini negli slot (click o drag & drop)
- Aggiunge istruzioni aggiuntive opzionali nel campo testo
- Clicca il bottone CTA (es. "Produci")
- La pagina mostra lo spinner di elaborazione e poi il risultato a schermo intero
- L'utente può scaricare il risultato o tornare per un nuovo job
Gateway API
Il Gateway API espone i workflow PostProdAgent tramite un'interfaccia compatibile con le OpenAI Responses API. Qualsiasi client che parla il protocollo OpenAI può puntare il suo base_url a questo server e inviare job senza integrazioni custom.
La documentazione interattiva è disponibile all'indirizzo gateway_api.html.
Autenticazione
Tutti gli endpoint richiedono HTTP Basic Authentication con le stesse credenziali dell'interfaccia admin:
curl -u admin:admin http://<server>:8765/v1/responses ...
Endpoint
| Metodo | Path | Descrizione |
|---|---|---|
POST | /v1/responses | Crea un job, ritorna subito con status: queued e un id |
GET | /v1/responses/{id} | Polling: ritorna lo stato e, quando completato, l'immagine risultante in base64 |
GET | /v1/models | Lista dei model/workflow disponibili (compatibile con openai.models.list()) |
Esempio Python
import openai, base64, time
client = openai.OpenAI(
base_url="http://46.62.134.81:8765/v1",
api_key="admin:admin",
)
with open("fabric.jpg", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
# Crea il job
response = client.responses.create(
model="postprod/virtual_try_on",
input=[{"role": "user", "content": [
{"type": "input_image", "image_url": f"data:image/jpeg;base64,{img_b64}"},
]}],
)
# Polling
while response.status not in ("completed", "failed"):
time.sleep(5)
response = client.responses.retrieve(response.id)
# Risultato
img_url = next(c.image_url.url for c in response.output[0].content
if hasattr(c, "image_url"))
print("Risultato:", img_url[:60], "...")
model mappa al workflow: postprod/virtual_try_on → WKF_IN_VIRTUAL_TRY_ON. Usa postprod/auto con il campo workflow per specificare esplicitamente il nome completo del workflow.
📋 Changelog
Sono elencate le ultime tre versioni. Lo storico completo delle release precedenti vive nel CHANGELOG.md del repository.
v1.21.0 — IDM: i dettagli del prodotto, ritagliati da soli
- Nuovo: workflow IDM (Intelligent Detail Mapping) Da una singola foto di prodotto, l'app individua fino a 5 dettagli significativi — chiusure, logo, cuciture, lavorazioni, texture del tessuto — e te li restituisce già ritagliati. I ritagli sono presi dal file originale a piena risoluzione, mai da una copia ridotta: un dettaglio che occupa il 10% di uno scatto da 24 megapixel esce a piena definizione. Per usarlo: nel workflow imposta
idm_mapper_openaicome prompt engine eidm_cropcome image engine, e nel prompt descrivi quali dettagli contano per il tuo prodotto. - Ogni dettaglio è un risultato a sé I ritagli compaiono in Results come schede indipendenti, accanto al lavoro che li ha prodotti: si scaricano, si cancellano e si mandano a un altro workflow con Refine uno per uno. Portare un singolo dettaglio a 4x è ora questione di due clic. Il risultato principale del lavoro resta la foto con i riquadri disegnati sopra, che serve a vedere a colpo d'occhio cosa è stato individuato — ed è da lì che si fa Retry, perché rifare il lavoro rifà anche tutti i ritagli.
- Cancellare un workflow ora dice quanti risultati porta via Prima l'avviso diceva "tutti i suoi dati", che è vero sia che i lavori siano zero sia che siano seicento. Ora, se ci sono risultati, l'app si ferma e chiede conferma dichiarando il numero esatto. Un workflow senza risultati si cancella come prima. Ricorda che la cancellazione resta definitiva: non c'è cestino e non c'è backup dei lavori.
v1.20.9 — Fix del viraggio colore, con un interruttore
- Nuovo: interruttore per la normalizzazione colore Nelle impostazioni di ogni workflow, "Normalize color space to sRGB before generation" — attivo di default. Da disattivare solo se hai un motivo specifico per inviare le immagini senza conversione.
- Risolto il "viraggio colore" su alcuni risultati Toni caldi (marroni, cuoio, rossi scuri) potevano tornare leggermente alterati rispetto alla foto sorgente. Causa: foto scattate in Adobe RGB (comune in uscita da fotocamera o Lightroom/Photoshop) — i motori di generazione leggono i numeri RGB grezzi e ignorano il profilo colore dichiarato, quindi una foto Adobe RGB veniva silenziosamente reinterpretata come sRGB, proprio dove i due spazi colore divergono di più. Le foto sorgente vengono ora convertite in vero sRGB prima che qualunque motore le veda.
- Corretti altri punti della pipeline Un controllo più ampio, partito dalla stessa indagine, ha trovato altri passaggi (ridimensionamenti, conversioni di formato, il ritaglio di un job Edit Region) che perdevano silenziosamente il profilo colore della foto sorgente. Corretti tutti.
v1.20.8 — Output PNG più leggero e identico byte per byte
- PNG più piccoli, invariati rispetto all'API I file prodotti dagli engine basati su OpenAI non vengono più ricodificati prima del salvataggio — il file su disco è ora esattamente quello restituito dall'API, byte per byte, invece di essere sempre convertito in un'immagine a 4 canali (RGBA) a prescindere dalla trasparenza richiesta. I lavori non trasparenti producono quindi file più piccoli, e un eventuale profilo colore della sorgente viene preservato automaticamente.
- Corretto un errore di configurazione dello stesso giorno L'opzione "fedeltà" (input_fidelity) era stata attivata per un modello che non la supporta, causando il fallimento di ogni lavoro sull'engine di default. L'app ora si rifiuta di avviarsi con quella combinazione, invece di fallire lavoro per lavoro in produzione.