Stability.ai es una organización bien establecida en inteligencia artificial, conocida por sus modelos que generan imágenes y texto a partir de descripciones. A continuación se muestra un resumen de los modelos clave que han desarrollado, presentado en orden cronológico de liberación:
Modelos de generación de imágenes:
Stable Diffusion (agosto de 2022) El primer modelo de difusión latente, capaz de generar imágenes basadas en descripciones textuales.
Stable Diffusion 2.0 (noviembre de 2022) Una versión actualizada con calidad de imagen mejorada, soporte para resoluciones más altas y características adicionales.
Stable Diffusion XL (SDXL) (abril de 2023) centrada en el fotorrealismo, esta versión introdujo mejoras en la composición de imágenes y la generación de cara.
Stable Diffusion 3.0 (febrero de 2024) con una nueva arquitectura que combina transformadores de difusión y coincidencia de flujo, esta versión mejora el rendimiento para consultas de múltiples sujetos y la calidad general de la imagen.
Stable Cascade (febrero de 2024) basada en la arquitectura Würstchen, este modelo mejora la precisión y la eficiencia en la generación de texto a imagen.
Stable Diffusion 3.5 (octubre de 2024) incluye variantes como la difusión estable 3.5 grande y 3.5 Medium, que ofrece más opciones para diversas tareas de generación con eficiencia optimizada.
Importante
Esta es una biblioteca no oficial. Stability.ai no proporciona ninguna biblioteca oficial para Delphi . Este repositorio contiene la implementación Delphi sobre la estabilidad.
Puede acceder a la consola de estabilidad. AI para explorar las posibilidades disponibles.
Para obtener una clave API, debe crear una cuenta. Se le otorgará un crédito de 25, y se generará automáticamente una clave inicial. Puedes encontrar esta clave aquí.
Una vez que tenga un token, puede inicializar la interfaz IStabilityAI , que es un punto de entrada a la API.
Nota
uses StabilityAI;
var Stability := TStabilityAIFactory.CreateInstance(API_KEY);Advertencia
Para usar los ejemplos proporcionados en este tutorial, especialmente para trabajar con métodos asíncronos, recomiendo definir la interfaz de estabilidad con el alcance más amplio posible.
Entonces, establezca Stability := TStabilityAIFactory.CreateInstance(API_KEY); En el evento OnCreate de su aplicación.
Donde Stability: IStabilityAI;
En el contexto de los métodos asincrónicos, para un método que no implica la transmisión, las devoluciones de llamada usan el siguiente registro genérico: TAsynCallBack<T> = record definido en la unidad StabilityAI.Async.Support.pas . Este registro expone las siguientes propiedades:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnError: TProc<TObject, string>; El nombre de cada propiedad se explica por sí mismo; Si es necesario, consulte la documentación interna para obtener más detalles.
Nota
En el resto del tutorial, utilizaremos principalmente métodos anónimos a menos que se especifique lo contrario, ya que trabajar con API lo requiere debido a tiempos de procesamiento que a veces pueden ser bastante largos.
Imagen estable Ultra usa el modelo Diffusion 3.5. Este método se distingue por:
Ejemplo de código asincrónico
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate;
Stability.StableImage.Generate.ImageUltra(
procedure (Params: TStableImageUltra)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
// A blurb of text describing what you do not wish to see in the output image.
// Params.NegativePrompt('...')
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
// Add a TImage on the form
// Add a TMemo on the form
Result.Sender := Image1;
Result.OnStart :=
procedure (Sender: TObject)
begin
Memo1.Lines.Text := Memo1.Text + ' The generation has started. Please wait... ' + sLineBreak;
end ;
Result.OnSuccess :=
procedure (Sender: TObject; Image: TStableImage)
begin
var Stream := Image.GetStream;
try
Image.SaveToFile( ' lighthouse.png ' );
// for VCL
Image1.Picture.LoadFromStream(Stream);
// for FMX
// Image1.Bitmap.LoadFromStream(Stream);
Memo1.Lines.Text := Memo1.Text + ' Generation ended successfully ' + sLineBreak;
finally
Stream.Free;
end ;
end ;
Result.OnError :=
procedure (Sender: TObject; Error: String)
begin
Memo1.Lines.Text := Memo1.Text + Error + sLineBreak;
end ;
end );Configuración detallada sobre la documentación oficial
Para simplificar los códigos de ejemplo proporcionados en este tutorial, he incluido dos unidades en el código fuente: VCL.Stability.Tutorial y FMX.Stability.Tutorial . Dependiendo de la opción que elija probar el código fuente proporcionado, deberá instanciar la clase TVCLStabilitySender o TFMXStabilitySender en el evento OnCreate de la aplicación, de la siguiente manera:
Consejo
// uses VCL.Stability.Tutorial;
StabilityResult := TVCLStabilitySender.Create(Memo1, Image1);o
// uses FMX.Stability.Tutorial;
StabilityResult := TFMXStabilitySender.Create(Memo1, Image1); Asegúrese de agregar un componente TMemo y un componente TImage a su formulario de antemano.
También es posible proporcionar una imagen de referencia para usar como punto de partida para la generación. En este caso, se debe especificar el parámetro strength , ya que determina la influencia de la imagen de entrada en la salida final. Un valor strength de 0 producirá una imagen idéntica a la entrada, mientras que un valor de 1 indica no influencia de la imagen inicial.
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse1.png ' ;
Stability.StableImage.Generate.ImageUltra(
procedure (Params: TStableImageUltra)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' There are many birds in the sky ' );
Params.Image( ' lighthouse.png ' );
Params.Strength( 0.3 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Especificidad:
Stable Image Core es un servicio de generación de texto a imagen diseñado para ofrecer una calidad premium con velocidad. A diferencia de otras herramientas similares, no requiere experiencia en "ingeniería rápida". Los usuarios simplemente describen un estilo, escena o personaje, y la herramienta genera una imagen que se alinea con su descripción.Puntos clave:
Inventario de aplicaciones:
Ejemplo de código asincrónico
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse2.png ' ;
Stability.StableImage.Generate.ImageCore(
procedure (Params: TStableImageCore)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Puede guiar el modelo de imagen hacia un estilo específico seleccionando desde 17 estilos disponibles.
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse3.png ' ;
Stability.StableImage.Generate.ImageCore(
procedure (Params: TStableImageCore)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.StylePreset(TStylePreset.digitalArt);
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Inventario de modelos disponibles
Difusión estable 3.5
Difusión estable 3.0 (fuegos artificiales ai)
Puntos clave:
Turbo generan imágenes más rápido sin sacrificar la calidad. Este modo crea una imagen basada únicamente en una descripción textual. El prompt es la única entrada obligatoria, pero un parámetro opcional aspect_ratio está disponible para ajustar las dimensiones de la imagen resultante.
Ejemplo de código asincrónico
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse4.png ' ;
Stability.StableImage.Generate.Diffusion(
procedure (Params: TStableImageDiffusion)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Este método genera una imagen basada en la entrada de texto mientras se usa una imagen existente como referencia inicial. Los parámetros necesarios incluyen:
prompt : el texto descriptivo que guía la generación de imágenes.image : la imagen inicial que sirve como base para la salida.strength : determina el grado en que la imagen inicial influye en el resultado final.mode : debe estar configurado en "Imagen-to-Image".Ejemplo de código asincrónico
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse5.png ' ;
Stability.StableImage.Generate.Diffusion(
procedure (Params: TStableImageDiffusion)
begin
Params.Prompt( ' There are many birds in the sky ' );
Params.Mode(imageToImage);
Params.Image( ' lighthouse4.png ' );
Params.Strength( 0.6 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Nota
Nota: El tamaño máximo de la solicitud es 10MIB.
Ambos modos permiten el uso de estos parámetros opcionales:
model : Especifica que el modelo utilice, como SD3 grande , SD3 grande turbo o medio SD3 .output_format : determina el formato deseado de la imagen resultante.seed : establece la semilla de aleatoriedad para el proceso de generación.negative_prompt : define palabras clave para excluir de la imagen generada.cfg_scale : ajusta el nivel de adherencia al texto de inmediato durante el proceso de difusión. Uso de SDXL 1.0: Use stable-diffusion-xl-1024-v1-0 como engine_id para su solicitud, y especifique las dimensiones ( height y width ) con una de las siguientes combinaciones:
Uso de SD 1.6 : SD 1.6 es un modelo base de resolución flexible diseñado para generar imágenes con relaciones de aspecto no estándar. El modelo está optimizado para una resolución de 512 x 512 píxeles. Para crear salidas con una resolución de 1 megapíxeles, recomendamos usar SDXL 1.0, que está disponible al mismo precio.
Para usar este modelo, establezca stable-diffusion-v1-6 como engine_id en su solicitud y asegúrese de que la height y width cumplan con los siguientes requisitos:
Ejemplo de código asincrónico
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate,
// StabilityAI.Version1.SDXL1AndSD1_6, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse6.png ' ;
Stability.Version1.SDXLAndSDL.TextToImage( ' stable-diffusion-xl-1024-v1-0 ' ,
procedure (Params: TPayload)
begin
Params.TextPrompts([TPrompt.New( 1 , ' A lighthouse on a cliff ' ) ]);
Params.CfgScale( 7 );
Params.Height( 1216 );
Params.Width( 832 );
Params.Sampler(TSamplerType.K_DPMPP_2S_ANCESTRAL);
Params.Samples( 1 );
Params.Steps( 30 );
end ,
function : TAsynArtifacts
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Ajustar el grado de transformación
init_image_mode=IMAGE_STRENGTH con image_strength=0.35 , o usar init_image_mode=STEP_SCHEDULE con step_schedule_start=0.65 . Ambos métodos producen resultados similares, pero el modo step_schedule ofrece flexibilidad adicional al permitirle especificar un valor step_schedule_end , dando un control más matizado si es necesario. Para obtener más detalles, consulte las descripciones de parámetros específicas a continuación.Ejemplo de código asincrónico
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate,
// StabilityAI.Version1.SDXL1AndSD1_6, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse7.png ' ;
Stability.Version1.SDXLAndSDL.ImageToImageWithPrompt( ' stable-diffusion-v1-6 ' ,
procedure (Params: TPayloadPrompt)
begin
Params.TextPrompts([TPromptMultipart.New( 1 , ' A dog space commander ' ) ]);
Params.InitImage( ' lighthouse6.png ' );
Params.ImageStrength( 0.45 );
Params.CfgScale( 7 );
Params.Sampler(TSamplerType.K_DPMPP_2S_ANCESTRAL);
Params.Samples( 3 );
Params.Steps( 30 );
end ,
function : TAsynArtifacts
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Consejo
En nuestro ejemplo de código, el valor del parámetro de muestras es 3, lo que significa que se generaron tres imágenes. Solo se muestra el primero. Los otros dos se guardaron con nombres de archivos indexados de la siguiente manera: Lighthouse701.png y Lighthouse702.png.
Configuración detallada sobre la documentación oficial
Modifique partes específicas de una imagen con una máscara. La máscara debe coincidir con las dimensiones y la forma de la imagen original. Esta funcionalidad también admite imágenes con canales alfa.
Use el Métode:
ImageToImageWithMask( const Model: string; ParamProc: TProc<TPayloadMask>;
CallBacks: TFunc<TAsynArtifacts>);Herramientas para mejorar el tamaño y la resolución de sus imágenes
Conservador
Creador creativo
Rápido
Acepta imágenes que varían en tamaño desde 64x64 píxeles hasta 1 megapíxeles y mejora su resolución a 4K. En términos más generales, puede excluir las imágenes aproximadamente 20 a 40 veces mientras se mantiene sus detalles originales. La opción de lujo conservadora se centra en preservar la integridad de la imagen con modificaciones mínimas y no está destinada a reinterpretar el contenido de la imagen.
Ejemplo de código asincrónico
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
StabilityResult.FileName := ' Upscalelighthouse1.png ' ;
Stability.StableImage.Upscale.Conservative(
procedure (Params: TUpscaleConservative)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' The light house ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Acepta imágenes que van desde 64x64 píxeles a un máximo de 1 megapíxeles, mejorando su resolución hasta 4K. En términos más generales, puede excluir imágenes aproximadamente 20 a 40 veces mientras mantiene, y a menudo mejora, su calidad. La característica de exclusivo creativo es particularmente efectiva para imágenes muy degradadas, pero no es adecuada para fotos de más de 1 megapíxeles, ya que aplica una reinterpretación significativa (ajustable a través de la escala de creatividad).
Advertencia
Esta función está etiquetada como asíncrona por el editor, pero en realidad, no se comporta como tal para una aplicación de terceros que lo utiliza. Funciona más como un mecanismo de almacenamiento en caché para un procesamiento ligeramente retrasado.
Ejemplo de código asincrónico
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
Stability.StableImage.Upscale.Creative(
procedure (Params: TUpscaleCreative)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' The gray light house ' );
Params.OutputFormat(png);
end ,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Recuperamos la ID de trabajo, y en el siguiente paso, necesitamos cargar la imagen a menos que el estado recuperado esté "en progreso". En ese caso, la operación debe ser reconstruida.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Results,
// e.g. Id ---> ea771536f066b7fd03d62384581982ecd8b54a932a6378d5809d43f6e5aa789a
StabilityResult.FileName := ' Upscalelighthouse2.png ' ;
Stability.StableImage.Results.Fetch(StabilityResult.Id,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
El servicio de servicio rápido de aumento de la resolución de imagen en un 400%. Diseñado para la velocidad y la eficiencia, procesa imágenes en aproximadamente un segundo, por lo que es una excelente herramienta para mejorar la claridad de las imágenes comprimidas, perfecta para las publicaciones en las redes sociales y varios otros usos.
Ejemplo de código asincrónico
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
StabilityResult.FileName := ' Upscalelighthouse3.png ' ;
Stability.StableImage.Upscale.Fast(
procedure (Params: TUpscaleFast)
begin
Params.Image( ' lighthouse.png ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Inventario de características
El servicio ERASE está diseñado para eliminar elementos no deseados de imágenes, como imperfecciones en caras u objetos en superficies, utilizando técnicas de enmascaramiento.
Masks se pueden suministrar en uno de los dos métodos:
mask .Ejemplo de código asincrónico
Nota
mask específica, se generará automáticamente una máscara en función del canal alfa de la imagen. Las áreas transparentes estarán sujetas a la ingeniería, mientras que las regiones opacas permanecerán sin cambios.mask , la mask anulará el canal alfa. // uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' EraseLighthouse.png ' ;
Stability.StableImage.Edit.Erase(
procedure (Params: TErase)
begin
Params.Image( ' Lighthouse.png ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Cuando se proporciona una máscara:
Nota
mask difieren de las del parámetro de imagen, se ajustará automáticamente para que coincida con el tamaño de la imagen. Stability.StableImage.Edit.Erase(
procedure (Params: TErase)
begin
Params.Image( ' Lighthouse.png ' );
Params.Mask( ' MyMask01.png ' );
Params.GrowMask( 6 );
Params.OutputFormat(png);
end ,
...Configuración detallada sobre la documentación oficial
Modifique las imágenes de manera inteligente agregando o reemplazando secciones específicas con nuevo contenido, guiado por una imagen mask .
Esta mask se puede suministrar de dos maneras:
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' InpaintLighthouse.png ' ;
Stability.StableImage.Edit.Inpaint(
procedure (Params: TInpaint)
begin
Params.Image( ' Lighthouse.png ' );
Params.Mask( ' Mask01.png ' );
Params.Prompt( ' The lighthouse is bigger ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end ); El uso de la mask es idéntico al descrito con la API borrado.
Configuración detallada sobre la documentación oficial
El servicio de salida permite la extensión perfecta de una imagen agregando contenido en cualquier dirección para llenar el espacio circundante. A diferencia de otros métodos, ya sea automatizado o manual, este servicio está diseñado para reducir los artefactos visibles y evitar indicaciones notables de edición de imágenes.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' OutpaintLighthouse.png ' ;
Stability.StableImage.Edit.Outpaint(
procedure (Params: TOutpaint)
begin
Params.Image( ' Lighthouse.png ' );
Params.Right( 200 );
Params.Down( 400 );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
El servicio de búsqueda y reemplazo ofrece una forma especializada de ingeniería que elimina la necesidad de una máscara. En su lugar, los usuarios pueden especificar un objeto para reemplazarlo describiéndolo en lenguaje sencillo utilizando un Search_Prompt. Luego, el servicio detectará y segmentará automáticamente el objeto especificado, lo que lo sustituirá sin problemas con el descrito en el aviso.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' SearchReplaceLighthouse.png ' ;
Stability.StableImage.Edit.SearchAndReplace(
procedure (Params: TSearchAndReplace)
begin
Params.Image( ' Lighthouse.png ' );
Params.Prompt( ' Replace the lighthouse ' );
Params.SearchPrompt( ' Lighthouse ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Al utilizar el servicio de búsqueda y recolor, puede cambiar el color de un objeto específico en una imagen a través de un mensaje simple. Esta forma especializada de invención no requiere una máscara. En su lugar, el servicio segmenta automáticamente el objeto y aplica los nuevos colores como se especifica en su mensaje.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' SearchRecolorLighthouse.png ' ;
Stability.StableImage.Edit.SearchAndRecolor(
procedure (Params: TSearchAndRecolor)
begin
Params.Image( ' Lighthouse.png ' );
Params.Prompt( ' The lighthouse is pink ' );
Params.SelectPrompt( ' Lighthouse ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
El Servicio de fondo eliminar identifica y aisliza con precisión el primer plano en una imagen, lo que permite que el fondo se elimine o se reemplace según sea necesario.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' RemoveBackgroundLighthouse.png ' ;
Stability.StableImage.Edit.RemoveBackground(
procedure (Params: TRemoveBackground)
begin
Params.Image( ' Lighthouse.png ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
El servicio de edición de reemplazo y de reinicio de reemplazo permite cambiar sin esfuerzo los fondos utilizando imágenes generadas por IA o sus propias cargas, al tiempo que ajusta sin problemas la iluminación para complementar el sujeto. Esta API ofrece una solución eficiente de edición de imágenes adaptada para diversas industrias, que incluyen comercio electrónico, bienes raíces, fotografía y esfuerzos creativos.
Las características clave incluyen:
Advertencia
Esta función está etiquetada como asíncrona por el editor, pero en realidad, no se comporta como tal para una aplicación de terceros que lo utiliza. Funciona más como un mecanismo de almacenamiento en caché para un procesamiento ligeramente retrasado.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
Stability.StableImage.Edit.ReplaceBackgroundAndRelight(
procedure (Params: TReplaceBackgroundAndRelight)
begin
Params.SubjectImage( ' Lighthouse.png ' );
Params.BackgroundPrompt( ' cinematic lighting ' );
Params.OutputFormat(png);
end ,
function: TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );La API devuelve la identificación de la tarea en curso, al igual que la API creativa exclusiva. Luego debe usar la API de Fetch, como se mencionó anteriormente.
Configuración detallada sobre la documentación oficial
Herramientas para crear variaciones controladas de imágenes y bocetos
Esta herramienta está diseñada para flujos de trabajo de desarrollo que involucran diseño iterativo y lluvia de ideas. Transforma bocetos dibujados a mano en imágenes pulidas con ajustes precisos. Además, permite el control ajustado sobre la aparición final de las imágenes que no son de bocadillo utilizando los contornos y bordes de la imagen.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control01.png ' ;
Stability.StableImage.Control.Sketch(
procedure (Params: TSketch)
begin
Params.Image( ' lighthouse.png ' );
Params.ControlStrength( 0.7 );
Params.Prompt( ' a medieval castle on a hill ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Este servicio está diseñado para generar imágenes al tiempo que preserva la estructura de una imagen de entrada, por lo que es particularmente útil para tareas como replicar escenas o representar caracteres basados en modelos predefinidos.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control02.png ' ;
Stability.StableImage.Control.Structure(
procedure (Params: TStructure)
begin
Params.Image( ' lighthouse.png ' );
Params.ControlStrength( 0.7 );
Params.Prompt( ' a well manicured shrub in an english garden ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Esta herramienta analiza las características estilísticas de una imagen de entrada dada (imagen de control) y las aplica para generar una nueva imagen guiada por un mensaje especificado. La imagen de salida conserva el estilo visual de la imagen de control al incorporar el contenido solicitado.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control03.png ' ;
Stability.StableImage.Control.Style(
procedure (Params: TStyle)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' a majestic portrait of a chicken ' );
Params.Fidelity( 0.7 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Herramientas para obtener los resultados de sus generaciones async.
Para usar, consulte el resultado de la generación de async de Fetch
El 3D rápido estable genera activos 3D de alta calidad a partir de una sola imagen de entrada 2D.
Consulte la especificación del formato de archivo GLB para obtener más detalles.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Stable3D;
StabilityResult.FileName := ' My_Result.gltf ' ;
Stability.VideoAnd3D.Model3D.Fast3D(
procedure (Params: TStable3D)
begin
Params.Image( ' My_ImageTo3D.png ' );
Params.ForegroundRatio( 0.85 );
end ,
function : TAsynModel3D
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Use la difusión de video estable , un modelo de difusión de video latente, para generar un video corto a partir de una imagen inicial.
ID de la respuesta para verificar los resultados en el punto final image-to-video/result/{id} . Asegúrese de no sondear este punto final más de una vez cada 10 segundos para evitar errores o problemas de limitación de tarifas. // uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Video;
Stability.VideoAnd3D.ImageToVideo.Generation(
procedure (Params: TVideo)
begin
Params.Image( ' lighthouse1024x576.png ' );
end ,
function : TAsynJobVideo
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Al final, recuperamos la ID ( por ejemplo, D4FB4AA8301AEE0B368A41B3C0A78018DFC28F1F959A3666BE2E6951408FB8E3 ) de la tarea de creación de video. Entonces, simplemente recuperamos el resultado de esta manera.
Configuración detallada sobre la documentación oficial
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Video;
var Id := ' d4fb4aa8301aee0b368a41b3c0a78018dfc28f1f959a3666be2e6951408fb8e3 ' ;
StabilityResult.FileName := ' lighthouse1024x576.mp4 ' ;
Stability.VideoAnd3D.ImageToVideo.Fetch(Id,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Enumere los motores compatibles con los puntos finales de API REST Version 1 .
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.Engines;
Stability.Version1.Engines.List(
function : TAsynEngines
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Recuperar detalles sobre la cuenta vinculada a la clave API especificada
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.User;
Stability.Version1.User.AccountDetails(
function : TAsynAccountDetails
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configuración detallada sobre la documentación oficial
Recupere el saldo de crédito para la cuenta u organización vinculada a la clave API proporcionada.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.User;
var Balance := Stability.Version1.User.AccountBalance;
try
Memo1.Lines.Text := Memo1.Text + Balance.Credits.ToString + sLineBreak;
finally
Balance.Free;
end ;Configuración detallada sobre la documentación oficial
Stability.ai ha anunciado dos características próximas:
Stable LLM 12B y Stable LLM 1.6B .Audio Stable 2.0 . Puede contactar a Stability.Ai para probar este modelo enviando un mensaje.Las solicitudes de extracción son bienvenidas. Si planea hacer un cambio importante, abra primero un problema para discutir sus cambios propuestos.
Este proyecto tiene licencia bajo la licencia MIT.