Stable Diffusion in Java (SD4J) 实现通过深度学习生成图像

Oracle开源推出Stable Diffusion Java版(SD4J)

Oracle开源项目推出了Stable Diffusion的Java实现版本(SD4J),这是基于Stable Diffusion C#实现的修改版,支持负向文本输入。Stable Diffusion是一种基于扩散的深度学习文本到图像生成模型。SD4J可以通过GUI或在Java应用程序中以编程方式生成图像。SD4J运行在ONNX Runtime之上,这是一个跨平台的推理和训练机器学习加速器,能够提升用户体验并减少模型训练时间。

安装与配置

1. 安装Git Large File Storage (Git LFS)

在Linux系统上,可以使用以下命令安装Git LFS:

$ sudo apt-get install git-lfs

2. 克隆SD4J项目

使用以下命令将SD4J项目克隆到本地:

$ git clone https://github.com/oracle-samples/sd4j

3. 下载ONNX模型

SD4J使用Hugging Face提供的预构建ONNX模型,可以通过以下命令下载:

$ git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 -b onnx

4. 编译ONNXRuntime-Extensions

克隆ONNXRuntime-Extensions项目后,执行以下命令编译:

$ ./build_lib.sh --config Release --update --build --parallel

如果CMake未安装,需要安装至少3.25版本的CMake:

$ sudo apt-get install cmake

编译成功后,生成的库文件应复制到SD4J项目的根目录。

启动SD4J GUI

sd4j目录下执行以下Maven命令启动GUI:

$ mvn package exec:exec -DmodelPath=../stable-diffusion-v1-5/

图像生成示例

1. 生成跑车图像

使用以下文本提示生成跑车图像:

Professional photograph sports car on the road, high resolution, high quality

生成的图像为一辆红色跑车。

2. 使用负向文本生成图像

通过指定负向文本red,可以生成非红色的跑车图像。

3. 使用不同指导尺度生成图像

指导尺度(guidance scale)控制图像与文本提示的紧密程度。较高的指导尺度(如10)生成更符合提示的图像,较低的指导尺度(如1)则允许更多创意。

4. 使用不同推理步骤生成图像

推理步骤(inference steps)控制去噪过程,较少的步骤(如10)生成较模糊的图像,较多的步骤(如50或200)生成更清晰的图像。

编程访问SD4J

SD4J项目提供了Java类SD4J,可以通过编程方式访问SD4J功能。

加速图像生成

通过启用NVIDIA GPU的CUDA集成,可以加速图像生成。在pom.xml中,将<argument>CPU</argument>改为<argument>CUDA</argument>即可。

更多信息

更多详细信息可以参考SD4J的READMEHugging Face文档

阅读 46
0 条评论