# Inpaint-Anything
通过SAM编辑修复任意物体。
## 论文
`Inpaint Anything: Segment Anything Meets Image Inpainting`
- https://arxiv.org/abs/2304.06790
## 模型结构
Inpaint-Anything主要是基于Segment Anything Model(SAM)进行图像的编辑修复,SAM是一种Vision Transformer(ViT)结构的模型。
SAM
ViT
## 算法原理
Inpaint-Anything核心思想是结合不同模型的优势,以构建一个非常强大且用户友好的管道来解决图像修复相关问题。通过SAM处理任意物体生成mask掩码,再通过LaMa、SD等模型对mask部分进行编辑,可以实现任意物体的消除、目标替换以及背景替换等功能。
Inpaint-Anything
## 环境配置
```
mv inpaint-anything_pytorch inpaint-anything # 去框架名后缀
# docker的-v 路径、docker_name和imageID根据实际情况修改
```
### Docker(方法一)
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.2-py3.10 # 本镜像imageID为:2f1f619d0182
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=16G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --network=host --name docker_name imageID bash
cd /your_code_path/inpaint-anything
pip install -e segment_anything
pip install transformers accelerate scipy safetensors
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 如果pip安装下载慢建议多尝试更换镜像源(下同)
```
### Dockerfile(方法二)
```
cd /your_code_path/inpaint-anything/docker
docker build --no-cache -t codestral:latest .
docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=16G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
cd /your_code_path/inpaint-anything
pip install -e segment_anything
pip install transformers accelerate scipy safetensors
pip install -r requirements.txt
```
### Anaconda(方法三)
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
```
DTK驱动: dtk24.04.2
python: python3.10
pytorch: 2.1.0
```
`Tips:以上DTK驱动、python、pytorch等DCU相关工具版本需要严格一一对应`
其它非深度学习库参照requirement.txt安装:
```
pip install -e segment_anything
pip install transformers accelerate scipy safetensors
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
## 数据集
无
## 训练
无
## 推理
需要下载模型权重 [SAM(sam_vit_h_4b8939.pth)](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth) 和 [LaMa](https://disk.yandex.ru/d/ouP6l8VJ0HpMZg),或者从 https://drive.google.com/drive/folders/1ST0aRbDRZGli0r7OVVOQvXwtadMCuWXg?usp=sharing 一并下载 ,并放在 ./pretrained_models 下。
注意:如果huggingface访问不通,请设置镜像网站:
```
export HF_ENDPOINT=https://hf-mirror.com
```
```
# 目标消除
python remove_anything.py \
--input_img ./example/remove-anything/dog.jpg \
--coords_type key_in \
--point_coords 200 450 \
--point_labels 1 \
--dilate_kernel_size 15 \
--output_dir ./results \
--sam_model_type "vit_h" \
--sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth \
--lama_config ./lama/configs/prediction/default.yaml \
--lama_ckpt ./pretrained_models/big-lama
# 注意模型文件路径
```
```
# 目标替换
python fill_anything.py \
--input_img ./example/fill-anything/sample1.png \
--coords_type key_in \
--point_coords 750 500 \
--point_labels 1 \
--text_prompt "a teddy bear on a bench" \
--dilate_kernel_size 50 \
--output_dir ./results \
--sam_model_type "vit_h" \
--sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth
```
```
# 背景替换
python replace_anything.py \
--input_img ./example/replace-anything/dog.png \
--coords_type key_in \
--point_coords 750 500 \
--point_labels 1 \
--text_prompt "sit on the swing" \
--output_dir ./results \
--sam_model_type "vit_h" \
--sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth
```
## result
推理结果
目标消除
目标替换
背景替换
### 精度
无
## 应用场景
### 算法类别
`AIGC`
### 热点应用行业
`推理,零售,制造,电商,医疗,教育`
## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/inpaint-anything_pytorch
## 参考资料
- https://github.com/geekyutao/Inpaint-Anything
- https://github.com/facebookresearch/segment-anything
- https://github.com/advimman/lama
- https://github.com/CompVis/stable-diffusion