pull/116/head
Timothy Kautz 1 year ago
parent d0a754c1a1
commit 19dc885259

@ -32,6 +32,12 @@ struct StableDiffusionSample: ParsableCommand {
)
)
var resourcePath: String = "./"
@Option(help: "Path to starting image.")
var image: String = "none"
@Option(help: "Strength for image2image.")
var strength: Float = 0.5
@Option(help: "Number of images to sample / generate")
var imageCount: Int = 1
@ -51,7 +57,7 @@ struct StableDiffusionSample: ParsableCommand {
var outputPath: String = "./"
@Option(help: "Random seed")
var seed: UInt32 = 93
var seed: UInt32 = UInt32.random(in: 0...UInt32.max)
@Option(help: "Controls the influence of the text prompt on sampling process (0=random images)")
var guidanceScale: Float = 7.5
@ -84,6 +90,32 @@ struct StableDiffusionSample: ParsableCommand {
disableSafety: disableSafety,
reduceMemory: reduceMemory)
try pipeline.loadResources()
let startingImage: CGImage?
if image != "none" {
let imageURL = URL(filePath: image)
// if FileManager.default.fileExists(atPath: imageURL.path()) {
// throw RunError.resources("Starting image not found \(imageURL)")
// }
do {
let imageData = try Data(contentsOf: imageURL)
guard
let imgDataProvider = CGDataProvider(data: imageData as CFData),
let loadedImage = CGImage(
pngDataProviderSource: imgDataProvider,
decode: nil, shouldInterpolate: false,
intent: CGColorRenderingIntent.defaultIntent)
else {
throw RunError.resources("Starting Image not available \(resourcePath)")
}
startingImage = loadedImage
} catch let error {
throw RunError.resources("Starting image not found \(imageURL), error: \(error)")
}
} else {
startingImage = nil
}
log("Sampling ...\n")
let sampleTimer = SampleTimer()
@ -92,6 +124,8 @@ struct StableDiffusionSample: ParsableCommand {
let images = try pipeline.generateImages(
prompt: prompt,
negativePrompt: negativePrompt,
startingImage: startingImage,
strength: strength,
imageCount: imageCount,
stepCount: stepCount,
seed: seed,
@ -168,6 +202,10 @@ struct StableDiffusionSample: ParsableCommand {
if imageCount != 1 {
name += ".\(sample)"
}
if image != "none" {
name += ".str\(Int(strength * 100))"
}
name += ".\(seed)"

Loading…
Cancel
Save