Stability.ai -это хорошо известная организация в области искусственного интеллекта, известная своими моделями, которые генерируют изображения и текст из описаний. Ниже приводится сводка ключевых моделей, которые они разработали, представленные в хронологическом порядке высвобождения:
Модели генерации изображений:
Stable Diffusion (август 2022 г.) Первая скрытая диффузионная модель, способная генерировать изображения на основе текстовых описаний.
Stable Diffusion 2.0 (ноябрь 2022 г.) Обновленная версия с улучшенным качеством изображения, поддержкой более высоких разрешений и дополнительными функциями.
Stable Diffusion XL (SDXL) (апрель 2023 г.), сосредоточенная на фотореализме, эта версия внесла улучшения в составе изображения и генерации лица.
Stable Diffusion 3.0 (февраль 2024 г.) с новой архитектурой, которая сочетает в себе диффузионные трансформаторы и сопоставление потоков, эта версия повышает производительность для многофузиционных запросов и общего качества изображения.
Stable Cascade (февраль 2024 г.), построенный на архитектуре Würstchen, эта модель повышает точность и эффективность в генерации текста до изображения.
Stable Diffusion 3.5 (октябрь 2024 г.) включает в себя такие варианты, как стабильная диффузия 3,5 больших и 3,5 среды, предлагая больше вариантов для различных задач генерации с оптимизированной эффективностью.
Важный
Это неофициальная библиотека. Stabibalit.ai не предоставляет никакой официальной библиотеки для Delphi . Этот репозиторий содержит реализацию Delphi по сравнению с стабильностью.ai Public API.
Вы можете получить доступ к консоли stability.ai, чтобы изучить доступные возможности.
Чтобы получить ключ API, вам необходимо создать учетную запись. Вам будет предоставлен кредит 25, и начальный ключ будет автоматически сгенерирован. Вы можете найти этот ключ здесь.
После того, как у вас есть токен, вы можете инициализировать интерфейс IStabilityAI , который является точкой входа в API.
Примечание
uses StabilityAI;
var Stability := TStabilityAIFactory.CreateInstance(API_KEY);Предупреждение
Чтобы использовать примеры, представленные в этом учебнике, особенно для работы с асинхронными методами, я рекомендую определить интерфейс стабильности с максимально широкой областью охвата.
Итак, установите Stability := TStabilityAIFactory.CreateInstance(API_KEY); в OnCreate вашего приложения.
Где Stability: IStabilityAI;
В контексте асинхронных методов для метода, который не включает потоковую передачу, обратные вызовы используют следующую общую запись: TAsynCallBack<T> = record определенная в StabilityAI.Async.Support.pas . Эта запись раскрывает следующие свойства:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnError: TProc<TObject, string>; Название каждого свойства является самоочевидным; При необходимости обратитесь к внутренней документации для получения более подробной информации.
Примечание
В остальной части учебника мы будем в основном использовать анонимные методы, если не указано иное, поскольку работа с API требует этого из -за времени обработки, которые иногда могут быть довольно длинными.
Стабильное изображение Ultra Используйте модель диффузии 3.5. Этот метод отличается:
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Чтобы упростить примеры кодов, представленных в этом уроке, я включил два единицы в исходное код: VCL.Stability.Tutorial и FMX.Stability.Tutorial . В зависимости от опции, который вы выберете для проверки предоставленного исходного кода, вам необходимо будет создавать экземпляр или класс TVCLStabilitySender или TFMXStabilitySender в событии OnCreate , следующим образом:
Кончик
// uses VCL.Stability.Tutorial;
StabilityResult := TVCLStabilitySender.Create(Memo1, Image1);или
// uses FMX.Stability.Tutorial;
StabilityResult := TFMXStabilitySender.Create(Memo1, Image1); Обязательно добавьте в свою форму TMemo и компонент TImage .
Также возможно предоставить эталонное изображение для использования в качестве отправной точки для генерации. В этом случае должен быть указан параметр strength , поскольку он определяет влияние входного изображения на конечный выход. Значение strength 0 будет создавать изображение, идентичное входу, в то время как значение 1 указывает на отсутствие влияния от начального изображения.
// 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 );Специфичность:
Stable Image Core -это сервис генерации текста до изображения, предназначенный для обеспечения премиального качества со скоростью. В отличие от других подобных инструментов, это не требует опыта в «оперативной технике». Пользователи просто описывают стиль, сцену или символ, а инструмент генерирует изображение, которое соответствует их описанию.Ключевые моменты:
Инвентаризация приложений:
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Вы можете направить модель изображения к конкретному стилю, выбрав из 17 доступных стилей.
// 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 );Инвентарь доступных моделей
Стабильная диффузия 3.5
Стабильная диффузия 3.0 (Fireworks AI)
Ключевые моменты:
Turbo -версии генерируют изображения быстрее, не жертвуя качеством. Этот режим создает изображение, основанное исключительно на текстовом описании. prompt является единственным обязательным вводом, но дополнительный параметр aspect_ratio доступен для настройки размеров полученного изображения.
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Этот метод генерирует изображение на основе ввода текста при использовании существующего изображения в качестве начального эталона. Необходимые параметры включают:
prompt : описательный текст, который направляет генерацию изображений.image : начальное изображение, которое служит основой для вывода.strength : определяет степень, в которой начальное изображение влияет на конечный результат.mode : должен быть установлен на «Изображение к изображению».Пример асинхронного кода
// 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 );Примечание
Примечание: максимальный размер запроса составляет 10 мин.
Оба режима позволяют использовать эти дополнительные параметры:
model : указывает модель для использования, такую как SD3, большой , SD3 большой турбо или SD3 .output_format : определяет желаемый формат полученного изображения.seed : устанавливает семена случайности для процесса генерации.negative_prompt : Определяет ключевые слова, чтобы исключить из сгенерированного изображения.cfg_scale : Регулирует уровень приверженности к тексту приглашения во время процесса диффузии. Используя SDXL 1.0: используйте stable-diffusion-xl-1024-v1-0 в качестве engine_id для вашего запроса, и укажите размеры ( height и width ) с одной из следующих комбинаций:
Использование SD 1.6 : SD 1.6-базовая модель гибкого разрешения, предназначенная для генерации изображений с нестандартными соотношениями сторон. Модель оптимизирована для разрешения 512 x 512 пикселей. Чтобы создать выходы с разрешением 1 мегапиксель, мы рекомендуем использовать SDXL 1.0, который доступен по той же цене.
Чтобы использовать эту модель, установите stable-diffusion-v1-6 в качестве engine_id в вашем запросе и убедитесь, что height и width соответствуют следующим требованиям:
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Регулировка степени преобразования
init_image_mode=IMAGE_STRENGTH с помощью image_strength=0.35 или использовать init_image_mode=STEP_SCHEDULE с step_schedule_start=0.65 . Оба метода дают аналогичные результаты, но режим step_schedule обеспечивает дополнительную гибкость, позволяя вам указать значение step_schedule_end , предоставляя больше нюансированного управления, если это необходимо. Для получения дополнительной информации см. В конкретных описаниях параметров ниже.Пример асинхронного кода
// 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 );Кончик
В нашем примере кода значение параметра образцов составляет 3, что означает, что было сгенерировано три изображения. Только первый отображается. Два других были сохранены с помощью индексированных имен файлов следующим образом: Lighthouse701.png и Lighthouse702.png.
Подробные настройки официальной документации
Измените определенные части изображения, используя маску. Маска должна соответствовать размерам и форме исходного изображения. Эта функциональность также поддерживает изображения с альфа -каналами.
Используйте Métode:
ImageToImageWithMask( const Model: string; ParamProc: TProc<TPayloadMask>;
CallBacks: TFunc<TAsynArtifacts>);Инструменты для улучшения размера и разрешения ваших изображений
Консервативный аппарат
Творческий аппарат
Быстрый oppaler
Принимает изображения в размере от 64x64 пикселей до 1 мегапикселя и увеличивает их разрешение до 4K. В более широком смысле, он может высококлажать изображения примерно в 20-40 раз, сохраняя при этом их исходные детали. Консервативный высококлассный вариант фокусируется на сохранении целостности изображения с минимальными модификациями и не предназначен для переосмысления содержания изображения.
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Принимает изображения в диапазоне от 64x64 пикселей до максимум 1 мегапикселя, увеличивая их разрешение до 4K. В более широком смысле, он может увеличить изображения примерно в 20-40 раз, сохраняя и часто улучшая их качество. Творческая высококлассная функция особенно эффективна для сильно ухудшенных изображений, но она не подходит для фотографий, превышающих 1 мегапиксель, так как применяется значительная реинтерпретация (регулируемая через масштаб творчества).
Предупреждение
Эта функция помечена как асинхронная редактором, но на самом деле она не ведет себя как таковая для стороннего приложения, использующего его. Он работает больше как механизм кэширования для слегка задержки обработки.
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Мы получаем идентификатор задания, и на следующем шаге нам нужно загрузить изображение, если только статус не будет «в процессе». В этом случае операция должна быть повторной.
// 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 );Подробные настройки официальной документации
Быстрое повышение Service Service Increcee Разрешение изображения на 400%. Разработанный для скорости и эффективности, он обрабатывает изображения примерно через секунду, что делает его отличным инструментом для улучшения ясности сжатых визуальных эффектов, идеально подходящих для постов в социальных сетях и различных других видов использования.
Пример асинхронного кода
// 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 );Подробные настройки официальной документации
Инвентарь функции
Служба стирания предназначена для устранения нежелательных элементов из изображений, таких как недостатки на лицах или объектах на поверхностях, с использованием методов маскировки.
Masks могут быть поставлены в одном из двух методов:
mask .Пример асинхронного кода
Примечание
mask , маска будет автоматически генерироваться на основе альфа -канала изображения. Прозрачные участки будут подвергаться внедрению, в то время как непрозрачные области останутся неизменными.mask , mask будет переоценить альфа -канал. // 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 );Когда предоставлена маска:
Примечание
mask отличаются от размеров параметра изображения, она будет автоматически настроена в соответствии с размером изображения. Stability.StableImage.Edit.Erase(
procedure (Params: TErase)
begin
Params.Image( ' Lighthouse.png ' );
Params.Mask( ' MyMask01.png ' );
Params.GrowMask( 6 );
Params.OutputFormat(png);
end ,
...Подробные настройки официальной документации
Измените изображения разумно, добавив или заменив конкретные разделы новым контентом, руководствуясь изображением mask .
Эта mask может быть поставлена двумя способами:
// 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 ); Использование mask идентично описанному с помощью API стирания.
Подробные настройки официальной документации
Служба Outpaint позволяет легко расширить изображение, добавляя контент в любом направлении, чтобы заполнить окружающее пространство. В отличие от других методов, будь то автоматизированные или ручные, эта услуга предназначена для уменьшения видимых артефактов и избежать заметных признаков редактирования изображений.
// 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 );Подробные настройки официальной документации
Сервис Search and Replys предлагает специализированную форму внедрения, которая устраняет необходимость в маске. Вместо этого пользователи могут указать объект для замены, описывая его на простом языке, используя search_prompt. Затем служба автоматически обнаружит и сегментирует указанный объект, беспрепятственно заменив его тем, что описано в приглашении.
// 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 );Подробные настройки официальной документации
Используя сервис поиска и Recolor, вы можете изменить цвет определенного объекта в изображении с помощью простой подсказки. Эта специализированная форма внедрения не требует маски. Вместо этого сервис автоматически разделил объект и применяет новые цвета, как указано в вашей подсказке.
// 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 );Подробные настройки официальной документации
Удаление фоновой службы точно идентифицирует и изолирует передний план на изображении, позволяя либо удалить фон, либо заменен по мере необходимости.
// 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 );Подробные настройки официальной документации
Служба редактирования фона и восстановления замены позволяет легко изменять фон с использованием изображений, сгенерированных AI, или их собственных загрузок, в то же время плавно настраивая освещение в дополнение к предмету. Этот API предлагает эффективное решение для редактирования изображений, адаптированное для различных отраслей промышленности, включая электронную коммерцию, недвижимость, фотографию и творческие усилия.
Ключевые функции включают:
Предупреждение
Эта функция помечена как асинхронная редактором, но на самом деле она не ведет себя как таковая для стороннего приложения, использующего его. Он работает больше как механизм кэширования для слегка задержки обработки.
// 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 );API возвращает идентификатор продолжающейся задачи, как и высококлассный творческий API. Затем вам нужно использовать API Fetch, как упоминалось ранее.
Подробные настройки официальной документации
Инструменты для создания контролируемых вариаций изображений и эскизов
Этот инструмент предназначен для рабочих процессов разработки, включающих итеративный дизайн и мозговой штурм. Он преобразует нарисованные вручную наброски в полированные визуальные эффекты с точными изменениями. Кроме того, это обеспечивает тонкий настройку контроля над окончательным появлением не-счетов, используя контуры и края изображения.
// 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 );Подробные настройки официальной документации
Эта служба предназначена для создания изображений при сохранении структуры входного изображения, что делает его особенно полезным для таких задач, как репликация сцен или символы, на основе предопределенных моделей.
// 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 );Подробные настройки официальной документации
Этот инструмент анализирует стилистические особенности данного входного изображения (управляющее изображение) и применяет их для создания нового изображения, руководствоваемого указанной подсказкой. Выходное изображение сохраняет визуальный стиль управляющего изображения при включении запрошенного контента.
// 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 );Подробные настройки официальной документации
Инструменты для получения результатов ваших асинхронных поколений.
Для использования см. Результаты генерации Async Fetch Async
Стабильный быстрый 3D генерирует высококачественные 3D-активы из одного 2D входного изображения.
Смотрите спецификацию формата файла GLB для получения более подробной информации.
// 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 );Подробные настройки официальной документации
Используйте стабильную диффузию видео , скрытую модель диффузии видео, чтобы сгенерировать короткое видео из начального изображения.
ID из ответа, чтобы проверить результаты на конечной точке image-to-video/result/{id} . Будьте уверены, чтобы не опросить эту конечную точку чаще, чем раз каждые 10 секунд, чтобы избежать ошибок или проблем с ограничением скорости. // 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 );В конце мы получаем ID ( например, D4FB4AA8301AEE0B368A41B3C0A78018DFC28F1F959A3666BE2E6951408FB8E3 ) задачи создания видео. Затем мы просто получаем результат таким образом.
Подробные настройки официальной документации
// 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 );Подробные настройки официальной документации
Перечислите двигатели, совместимые с конечными точками API 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 );Подробные настройки официальной документации
Получить подробную информацию о учетной записи, связанной с указанным ключом API
// 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 );Подробные настройки официальной документации
Получить кредитный баланс для учетной записи или организации, связанной с предоставленным ключом API.
// 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 ;Подробные настройки официальной документации
Stability.ai объявила о двух предстоящих функциях:
Stable LLM 12B и Stable LLM 1.6B .Audio Stable 2.0 . Вы можете связаться с stability.ai, чтобы проверить эту модель, отправив сообщение.Приглашаются запросы. Если вы планируете внести серьезные изменения, пожалуйста, сначала откройте проблему, чтобы обсудить предлагаемые вами изменения.
Этот проект лицензирован по лицензии MIT.