ΠΠΎΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ Stable Diffusion, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½ΡΠΆΠ½Ρ ΡΠ΄ΡΠ° Cuda (Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠ° Nvidea).
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
pip install -r requirements.txt
# python3 -m pip install -r requirements.txt
ΠΠ΅Π½ΡΠ΅ΠΌ ΠΏΠ»Π°ΡΡΠ΅ Π½Π° Π·Π΅Π»Π΅Π½ΠΎΠ΅
python3 modifier.py --prompt "green dress" --image "misc/original_photo.jpg" --mask "misc/dress_mask.png" --outdir "misc/generated/"
ΠΠΠ ΠΌΡ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅
python3 modifier.py --help
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ Π² 10 ΡΠ°Π· Π½Π° Kotlin ΡΠ΅ΠΌ Π½Π° Python:
import java.awt.image.BufferedImage
import java.io.File
import java.lang.RuntimeException
import javax.imageio.ImageIO
private fun read(file: String): BufferedImage = try {
ImageIO.read(File(file))
} catch (ex: Exception) {
throw RuntimeException("Cannot read $file", ex)
}
val mask = read("mask.jpg")
val original = read("original.jpg")
val source = read("source.jpg")
fun main() {
for (x in 0 until original.width)
for (y in 0 until original.height)
// recolor only white pixels of mask
if (mask.getRGB(x, y) > -(2 shl (mask.colorModel.pixelSize - 2)))
original.setRGB(x, y, source.getRGB(x, y))
ImageIO.write(original, "jpg", System.out)
}
build.gradle.kts
plugins {
kotlin("jvm") version "1.8.21"
}
group = "me.func"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
tasks.withType<Jar> {
manifest {
attributes["Main-Class"] = "ApplicationKt"
}
configurations["compileClasspath"].forEach { file: File ->
from(zipTree(file.absoluteFile))
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
}