Stability.ai เป็นองค์กรที่ได้รับการยอมรับอย่างดีในด้านปัญญาประดิษฐ์ซึ่งเป็นที่รู้จักกันดีในเรื่องของโมเดลที่สร้างภาพและข้อความจากคำอธิบาย ด้านล่างนี้เป็นบทสรุปของแบบจำลองสำคัญที่พวกเขาพัฒนาขึ้นนำเสนอตามลำดับเวลาของการเปิดตัว:
รุ่นการสร้างภาพ:
Stable Diffusion (สิงหาคม 2565) รูปแบบการแพร่กระจายแฝงครั้งแรกสามารถสร้างภาพตามคำอธิบายที่เป็นข้อความ
Stable Diffusion 2.0 (พฤศจิกายน 2565) เวอร์ชันที่ได้รับการปรับปรุงพร้อมคุณภาพของภาพที่ได้รับการปรับปรุงการสนับสนุนสำหรับความละเอียดที่สูงขึ้นและคุณสมบัติเพิ่มเติม
Stable Diffusion XL (SDXL) (เมษายน 2023) มุ่งเน้นไปที่การถ่ายภาพด้วยแสงรุ่นนี้แนะนำการปรับปรุงองค์ประกอบของภาพและการสร้างใบหน้า
Stable Diffusion 3.0 (กุมภาพันธ์ 2567) มีสถาปัตยกรรมใหม่ที่รวมหม้อแปลงการแพร่กระจายและการจับคู่การไหลเวอร์ชันนี้ช่วยเพิ่มประสิทธิภาพสำหรับการสืบค้นหลายเรื่องและคุณภาพของภาพโดยรวม
Stable Cascade (กุมภาพันธ์ 2024) สร้างขึ้นบนสถาปัตยกรรมWürstchenโมเดลนี้ปรับปรุงความแม่นยำและประสิทธิภาพในการสร้างข้อความเป็นภาพ
Stable Diffusion 3.5 (ตุลาคม 2567) รวมถึงตัวแปรเช่นการแพร่กระจายที่เสถียร 3.5 ขนาดใหญ่และ 3.5 สื่อนำเสนอตัวเลือกเพิ่มเติมสำหรับงานรุ่นที่หลากหลายพร้อมประสิทธิภาพที่ดีที่สุด
สำคัญ
นี่คือห้องสมุดที่ไม่เป็นทางการ ความเสถียร ไม่ได้ให้ห้องสมุดอย่างเป็นทางการสำหรับ Delphi ที่เก็บนี้มีการใช้งาน Delphi ผ่านความเสถียร API สาธารณะ
คุณสามารถเข้าถึงเสถียรภาพคอนโซลเพื่อสำรวจความเป็นไปได้ที่มีอยู่
ในการรับคีย์ 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 นั้นต้องการมันเนื่องจากเวลาในการประมวลผลที่บางครั้งอาจยาวนาน
ภาพที่เสถียรเป็นพิเศษ ใช้โมเดลการแพร่กระจาย 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 (ดอกไม้ไฟ 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 : ควรตั้งค่าเป็น "image-to-Image"ตัวอย่างรหัสแบบอะซิงโครนัส
// 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 );บันทึก
หมายเหตุ: ขนาดคำขอสูงสุดคือ 10MIB
ทั้งสองโหมดอนุญาตให้ใช้พารามิเตอร์เสริมเหล่านี้:
model : ระบุแบบจำลองที่จะใช้เช่น SD3 ขนาดใหญ่ , SD3 Turbo ขนาดใหญ่ หรือ SD3 Mediumoutput_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>);เครื่องมือในการปรับปรุงขนาดและความละเอียดของภาพของคุณ
หัวรุนแรงอนุรักษ์นิยม
Upscaler สร้างสรรค์
Upscaler เร็ว
ยอมรับภาพที่มีขนาดตั้งแต่ 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 );การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
ความละเอียดของภาพ Upscaler ที่รวดเร็วขึ้น 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 Erase
การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
บริการที่เหนือกว่าช่วยให้สามารถขยายภาพได้อย่างไร้รอยต่อโดยการเพิ่มเนื้อหาในทิศทางใด ๆ เพื่อเติมเต็มพื้นที่โดยรอบ ซึ่งแตกต่างจากวิธีอื่น ๆ ไม่ว่าจะเป็นแบบอัตโนมัติหรือด้วยตนเองบริการนี้ได้รับการออกแบบมาเพื่อลดสิ่งประดิษฐ์ที่มองเห็นได้และหลีกเลี่ยงข้อบ่งชี้ที่เห็นได้ชัดเจนของการแก้ไขภาพ
// 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_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 );การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
ด้วยการใช้บริการค้นหาและการเปลี่ยนสีคุณสามารถเปลี่ยนสีของวัตถุที่เฉพาะเจาะจงในภาพผ่านพรอมต์ง่าย ๆ รูปแบบเฉพาะของการทาสีไม่จำเป็นต้องมีหน้ากาก แต่บริการจะแบ่งส่วนวัตถุโดยอัตโนมัติและใช้สีใหม่ตามที่ระบุไว้ในพรอมต์ของคุณ
// 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 );การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
บริการการเปลี่ยนพื้นหลังและการแก้ไข Relight ช่วยให้สามารถเปลี่ยนพื้นหลังได้อย่างง่ายดายโดยใช้อิมเมจ Ai-Generated หรือการอัปโหลดของตัวเองในขณะที่ปรับแสงอย่างราบรื่นเพื่อเติมเต็มวัตถุ 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 ส่งคืน ID ของงานต่อเนื่องเช่นเดียวกับ API Creative API สุดหรู จากนั้นคุณจะต้องใช้ Fetch API ตามที่กล่าวไว้ก่อนหน้านี้
การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
เครื่องมือสำหรับการสร้างรูปแบบการควบคุมภาพและภาพร่าง
เครื่องมือนี้ออกแบบมาสำหรับเวิร์กโฟลว์การพัฒนาที่เกี่ยวข้องกับการออกแบบซ้ำและการระดมสมอง มันเปลี่ยนภาพร่างที่วาดด้วยมือเป็นภาพขัดเงาด้วยการปรับที่แม่นยำ นอกจากนี้ยังช่วยให้สามารถควบคุมการปรากฏตัวครั้งสุดท้ายของภาพที่ไม่ได้ใช้ภาพโดยใช้รูปทรงและขอบของภาพ
// 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 ของคุณ
สำหรับการใช้ให้ดูผลลัพธ์การสร้าง 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 );การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
แสดงรายการเครื่องยนต์ที่เข้ากันได้กับจุดสิ้นสุดของ REST 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 ;การตั้งค่าโดยละเอียดเกี่ยวกับเอกสารอย่างเป็นทางการ
STAIGUTION.AI ได้ประกาศสองคุณสมบัติที่กำลังจะมาถึง:
Stable LLM 12B และ Stable LLM 1.6BAudio Stable 2.0 คุณสามารถติดต่อ Stability.AI เพื่อทดสอบโมเดลนี้โดยส่งข้อความยินดีต้อนรับคำขอดึง หากคุณวางแผนที่จะทำการเปลี่ยนแปลงครั้งใหญ่โปรดเปิดปัญหาก่อนเพื่อหารือเกี่ยวกับการเปลี่ยนแปลงที่คุณเสนอ
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT