利用文本描述替换万物(Inpaint-Anything-Description)

news/2024/11/22 18:53:07/

文章目录

  • 引言
  • 安装
  • Demo

github: https://github.com/Atlas-wuu/Inpaint-Anything-Description

引言

前段时间看了万物分割SAM、文生图Stable Diffusion、开集检测Grounding DINO,它们之间可以互相补充,AIGC变得更加可控。Inpaint Anything将SAM与Stabel Diffusion结合,通过人工选择目标point的方式进行目标替换。
通过人工选择point交互,生成效率比较低,因此假期开发了Inpaint-Anything-Description,通过输入原始图片、图中需要替换的目标文本描述及替换后目标的文本描述即可。

安装

  1. 通过conda创建python>=3.8的虚拟环境
    conda create -n inpaint python=3.8
    conda activate inpaint
  2. 从GitHub clone代码
    git clone https://github.com/Atlas-wuu/Inpaint-Anything-Description.git
  3. 安装相关库
    安装 torch
    cd Inpaint-Anything-Description
    pip install torch torchvision torchaudio
    安装SAM
    pip install -e segment_anything
    安装Stable Diffusion
    pip install diffusers transformers accelerate scipy safetensors
    安装GroundingDINO
    cd GroundingDINO
    pip install -q -e .

Demo

src_prompt表示待替换目标描述;
dst_prompt表示替换后目标描述;

python fill_anything_str.py \--input_img ./example/fill-anything/sample1.png \--src_prompt "white dog"  \--dst_prompt "bear" \--dilate_kernel_size 50 \--output_dir ./results \--grounddino_model_type "swin_t" \--grounddino_ckpt ./pretrained_models/groundingdino_swint_ogc.pth \--sam_model_type "vit_h" \--sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth

下图为原图中白色狗替换为熊,
–src_prompt “white dog”
–dst_prompt “bear”

图1 原图
图2 白色狗
图3 熊

下图为原图中公交车替换为骑车的人,
–src_prompt “bus”
–dst_prompt “a man riding bike”

图1 原图
图2 公交车
图3 骑车的人

👉👉👉如果觉得不错,感谢关注与🌟!


http://www.ppmy.cn/news/59479.html

相关文章

一文打通java中内存泄露

目录 前置知识 内存泄漏(memory leak) 内存溢出(out of memory) Java中内存泄露的8种情况 静态集合类 单例模式 内部类持有外部类 各种连接,如数据库连接、网络连接和IO连接等 变量不合理的作用域 改变哈希值 …

C++“拷贝构造函数”与“等号=赋值运算符重载函数”的使用注意事项

文章目录 本文主要搞清楚以下两种写法区别:(看不懂的话可以把 *p_m1换成 m1) 拷贝构造函数 MyClass m2(*p_m1); // 或:MyClass m2 *p_m1;等号赋值运算符重载函数 MyClass m2; m2 *p_m1;先看一段代码: #include &l…

Python--一言不合就try一下?

这里需要注意的是错误是Error,异常是Exception。 异常是可以被捕捉的,被处理的,但是错误是不能被捕获的。异常官方文档 ❝ 我们一般情况下,习惯性的叫pycharm控制台给出的红色字体叫报错。其实不然,是异常。 ❞ 异常产…

利用Python如何实现数据驱动的接口自动化测试

目录 前言 1、需求 2、方案 3、实现 总结 前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取。下面话不多说了,来一起看看详细的介绍吧。 1、需求 某API,GET方法&#xff…

Vulkan实战之Instance

文章目录 创建实例(**Creating an instance**)检查扩展支持(**Checking for extension support**)销毁清除(**Cleaning up**)最终代码 创建实例(Creating an instance) 您需要做的第一件事是通过创建一个实例来初始化Vulkan库。实例是应用程序和Vulkan库之间的连接&#xff0c…

Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…

总结一下vue的关键字和用处

Vue.js 是一个轻量级的 JavaScript 框架,用于构建用户界面和单页面应用程序。下面是一些 Vue.js 中的关键字和它们的用途: v-bind:用于动态绑定属性和事件监听器。例如,可以用 v-bind 绑定一个元素的属性(如&#xff…

node.js的核心模块

node的核心模块由一些精简而高效的库组成 文章目录 全局对象全局对象和全局变量processcosole utilutils.inheritsutils.inspect 事件机制事件发射器error 事件继承EventEmitter 文件系统访问fs.readFile(filename,[encoding],[callback(err,data)])fs.readFileSync(filename,…