"library/src/utility/conv_util.cpp" did not exist on "f03a1738d93c8ffccc570e8121e0a261e9950fa6"
Commit 83236c52 authored by dengjb's avatar dengjb
Browse files

change readme

parent f1e0d6ba
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="pycocotools" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/imagegenerate_paddle.iml" filepath="$PROJECT_DIR$/.idea/imagegenerate_paddle.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="01d3e030-fd3e-4982-8660-10d478b2149f" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectId" id="2VHIjrdE8hMnatRuBCcXo98aok5" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="01d3e030-fd3e-4982-8660-10d478b2149f" name="Default Changelist" comment="" />
<created>1694486720086</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1694486720086</updated>
</task>
<servers />
</component>
</project>
\ No newline at end of file
# ImageGenerate by paddle
## 一、模型介绍
基于stable diffusion的网络模型实现-文生图、图生图等进行图像的生成
主要分享如何定制自己的文图生成模型,只需要几张图片,即可定制开发自己想要的文图生成模型。
文图生成任务要求模型根据所提供的描述性文本生成一张与之相对应的图片。这极大地释放了AI的想象力,也激发了人类的创意,给视觉内容创作者、文字内容创作者和大众用户带来了方便。用户可以生成多样化创意图片,并从中汲取创意灵感,打破创意瓶颈,从而可以进行创作出更优质的作品。
## 论文
`High-Resolution Image Synthesis with Latent Diffusion Models`<br>
[论文地址](https://arxiv.org/abs/2112.10752) <br>
`Fast, Accurate and Lightweight Super-Resolution with Neural Architecture Search`<br>
[论文地址](https://arxiv.org/abs/1901.07261) <br>
`An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion`<br>
[论文地址](https://arxiv.org/abs/2208.01618) <br>
## 二、模型结构
文生图、图生图使用模型[MoososCap/NOVEL-MODEL]:
默认使用该模型进行文生图、图生图等功能实现,也可切换其他模型
- MoososCap/NOVEL-MODEL pipline组成:
- feature_extractor/preprocessor_config.json
- model_index.json
- scheduler/scheduler_config.json
- text_encoder/[model_config.json,model_state.pdparams]
- tokenizer/[added_tokens.json,merges.txt,special_tokens_map.json,tokenizer_config.json,vocab.json]
- unet/[config.json,model_state.pdparams]
- vae/[config.json, model_state.pdparams]
- stable diffusion网络结构
![模型图](./resources/pic_readme/model.png)
超分模型:
falsr_a,falsr_b,falsr_c,falsr 三个超分模型
[论文地址](https://arxiv.org/abs/1901.07261)
![模型图](./resources/pic_readme/falsr_network.png)
## 模型结构
文生图、图生图使用风格化生成模型[MoososCap/NOVEL-MODEL],核心网络为Unet,前处理网络包含text_encoder,tokenizer等。
## 三、推理和训练
### 3.1 环境配置
提供[光源](https://www.sourcefind.cn/#/service-details)拉取的训练以及推理的docker镜像:
* 3.1.1 下载推理和训练镜像:
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle:2.4.2-centos7.6-dtk-23.04-py39-latest
```
* 3.1.2 python依赖安装:
```bash
pip install -r requirement.txt
```
### 3.2 测试
3.2.1 测试命令:
- 测试环境、功能是否够能够正常
```python
python varify.py
```
| stabele-Diffusion网络结构 | 超分模型网络结构 |
| :----: | :-----: |
![模型图](./resources/pic_readme/ldms.png) | ![模型图](./resources/pic_readme/falsr_network.png)
### 3.3 推理\训练代码
3.3.1 【使用jupyter进行推理】
命令-jupyter:
- 运行main.ipynb
- 根据提示步骤运行推理、训练代码
## 算法原理
stable diffusion 对文本进行处理并进行编码生成文本向量,对初始化噪声图片添加噪声并迭代T次通过VAE_decoder网络生成最终图片
![img](./resources/pic_readme/text2img.png)
### 3.4 使用预训练模型定制化训练图像生成模型
#### 3.4.1 预训练模型采用[MoososCap/NOVEL-MODEL]
命令-jupyter:
- 运行main.ipynb
- 根据提示步骤运行推理、训练代码
#### 3.4.2 使用starble diffusion-text_inversion方法进行训练
- 论文arxiv:[论文](https://arxiv.org/abs/2208.01618)
- 训练过程图解:
![训练过程](./resources/pic_readme/text_inversion.jpg)
## 环境配置
### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle:2.4.2-centos7.6-dtk-23.04-py39-latest
docker run --shm-size 16g --network=host --name=image_generate_paddle --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/imagegenerate_paddle:/home/imagegenerate_paddle -it <Your Image ID> bash
```
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
cd ./docker
docker build --no-cache -t imagegenerate_paddle:latest .
docker run --shm-size 16g --network=host --name=image_generate_paddle --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/imagegenerate_paddle:/home/imagegenerate_paddle -it imagegenerate_paddle:latest bash
```
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:
## 四、生成效果
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
DTK驱动:dtk23.04
python:python3.8
paddle:2.4.2
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
其它非深度学习库参照requirements.txt安装:
```
pip install -r requirements.txt
```
## 数据集
`未公开训练数据集`
- 基于小数据集的定制化训练数据集
- 地址:./resources/Alices/*
```
./resources/Alices
|
1666360027.7809527_SEED_3534839969.png
1666360416.8263636_SEED_4285104386.png
.....
```
## 训练
该模型提供少数据基于预训练的模型的训练方法。
- 使用notebook运行main.ipynb
- 根据提示步骤运行文生图定制化训练代码
## 推理
- 使用notebook运行main.ipynb
- 根据提示步骤运行推理代码
## 测试
- 测试环境、功能是否够能够正常
```python
python varify.py
```
## result
此处填算法效果测试图
| 文生图 | 图生图 | 定制化训练 |
| :----: | :-----: | :------: |
![文生图](./resources/pic_readme/txt2img.jpg) | ![图生图](./resources/pic_readme/img2img.jpg) | ![定制化训练](./resources/pic_readme/train.jpg)
![文生图](./resources/pic_readme/txt2img.png) | ![图生图](./resources/pic_readme/img2img.png) | ![定制化训练](./resources/pic_readme/train.png)
## 五、源码仓库及问题反馈
* https://developer.hpccube.com/codes/modelzoo/imagegenerate_paddle
## 六、参考
* https://aistudio.baidu.com/aistudio/projectdetail/4905623
## 应用场景
### 算法类别
`NLP`
### 热点应用行业
`广媒,设计,其他`
## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/imagegenerate_paddle
## 参考资料
- https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers
- https://aistudio.baidu.com/aistudio/projectdetail/4905623
\ No newline at end of file
FROM image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle:2.4.2-centos7.6-dtk-23.04-py39-latest
RUN source /opt/dtk/env.sh
COPY ../requirments.txt requirments.txt
RUN pip3 install -r requirements.txt
# 模型唯一标识
modelCode = 304
# 模型名称
modelName=ImageGenerate_paddle
modelName=image_generate_paddle
# 模型描述
modelDescription=文生图、图生图模型是一种基于深度学习的图像生成算法,可应用于艺术创作提供创作思路
# 应用场景
appScenario=推理,训练,CV,文生图,图生图
appScenario=推理,训练,NLP,设计,广媒
# 框架类型
frameType=paddle
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment