零成本打造专属AI图像处理平台:IOPaint本地部署与远程访问指南
文章目录
- 前言
- 1.什么是IOPaint?
- 2.本地部署IOPaint
- 3.IOPaint简单实用
- 4.公网远程访问本地IOPaint
- 5.内网穿透工具安装
- 6.配置公网地址
- 7.使用固定公网地址远程访问
- 总结
前言
移动摄影的普及使得记录生活变得轻而易举,然而获得一张高质量的照片往往需要付出不少努力。照片中不必要的杂物、路人,以及构图的局限性,常常成为困扰摄影爱好者的难题。
为了帮助用户轻松提升照片质量,本文将介绍一款强大的免费开源AI图像处理工具——IOPaint。IOPaint 具备智能移除杂物、修复瑕疵以及扩展图像内容等功能,能够显著提升照片的视觉效果。
为了方便用户使用,我们将提供详细的部署指南,指导用户在本地Windows系统上快速部署IOPaint。此外,我们将介绍如何利用Cpolar内网穿透技术,实现随时随地访问和管理您的图像库。无论您是摄影新手还是经验丰富的摄影师,IOPaint 都能成为您提升摄影作品质量的得力工具。通过本地部署和远程访问,您可以充分发挥 IOPaint 的强大功能,打造属于您的专属图像处理平台。
【视频教程】
1分钟安装轻松去水印神器IOPaint与远程使用
1.什么是IOPaint?
IOPaint 是一个基于深度学习的图像处理工具,它的全称是 “Inpainting with Object Removal”(带有对象移除功能的修复)。IOPaint 的核心功能包括:
- 对象移除:你可以轻松地擦除照片中的任何不需要的对象或元素。无论是广告牌、路人还是其他干扰物,只需几笔就能消失无踪。
- 图像修补:如果你的照片上有划痕、污渍或其他损坏,IOPaint 能够智能地填补这些区域,恢复原始的视觉效果。
- 内容扩展:有时候你可能觉得照片中的某个部分不够大或者不够完整,IOPaint 可以帮你扩展这部分的内容,让画面更加丰富和自然。
2.本地部署IOPaint
我这里演示的是在windows系统安装和运行,运行的环境需要有node.js和Anaconda
node.js下载地址:Node.js — 在任何地方运行 JavaScript
Anaconda下载地址:Anaconda | The Operating System for AI
首先打开左下角Anaconda的终端,创建一个python环境
conda create -n iopaint python=3.12
输入Y确定
接着激活环境
conda activate iopaint
先从github上克隆仓库
git clone https://github.com/Sanster/IOPaint.git
进入到项目中
cd IOPaint/web_app
安装前端项目依赖
npm install
再编译前端项目
npm run build
复制编译好的前端项目文件到iopaint/web_app目录
xcopy /E /I dist\ ..\iopaint\web_app\
创建一个配置文件,填写后端IP和端口
echo VITE_BACKEND=http://127.0.0.1:8080 > .env.local
接下来进入到上一级目录里,安装后端项目依赖
cd ..
pip install -r requirements.txt
输入这行命令启动后端服务
python main.py start --model lama --port 8080
重新开启一个终端,进入到项目中
cd IOPaint/web_app
启动前端开发环境
npm run dev
现在,IOPaint已经启动成功了!打开浏览器,输入localhost:5173,就可以看到IOpaint的界面了
3.IOPaint简单实用
打开一张需要处理的照片,直接涂抹需要删除的对象或区域。
IOPaint会自动识别并处理,几秒钟后,你就能看到焕然一新的照片!
4.公网远程访问本地IOPaint
目前我们在本地成功部署了IOPaint,但是如果我们想实现不在局域网下,在公网能够远程访问IOPaint的话,我们就可以使用Cpolar内网穿透来实现公网随时随地访问了!免去了复杂得本地部署过程,只需要一个公网地址直接就可以访问。
5.内网穿透工具安装
下面是安装cpolar步骤:
Cpolar官网地址: https://www.cpolar.com
点击进入cpolar官网,点击免费使用
注册一个账号,并下载最新版本的Cpolar。
登录成功后,点击下载Cpolar到本地并安装(一路默认安装即可)本教程选择下载Windows版本。
Cpolar安装成功后,在浏览器上访问http://localhost:9200,使用cpolar账号登录,登录后即可看到Cpolar web 配置界面,结下来在web 管理界面配置即可。
接下来配置一下IOPaint的公网地址~
6.配置公网地址
登录后,点击左侧仪表盘的隧道管理——创建隧道,
创建一个IOPaint的公网http地址隧道
- 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
- 协议:选择http
- 本地地址:5173(本地访问的地址)
- 域名类型:免费选择随机域名
- 地区:选择China VIP
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http和https。
使用上面的Cpolar生成的任意一个公网地址,在手机或任意设备的浏览器进行登录访问,即可成功看到IOPaint界面。使用了Cpolar的公网域名,无需自己购买云服务器,即可到公网访问IOPaint随便编辑图片啦!
小结
为了方便演示,我们在上边的操作过程中使用了cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。如果有长期远程访问本地IOPaint服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的二级子域名方式来远程访问。
7.使用固定公网地址远程访问
登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China top,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是iopaint,大家也可以自定义喜欢的名称。
保留成功后复制保留成功的二级子域名的名称:iopaint,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道iopaint,点击右侧的编辑:
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名:iopaint
- 地区:选择China top
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:
最后,我们使用固定的公网https地址在任何浏览器打开访问,可以看到访问IOPaint成功了这样一个固定且永久不变的公网地址就设置好了。
总结
通过本文的介绍,相信你已经掌握了在本地Windows系统上部署IOPaint的方法,并见识了Cpolar内网穿透工具的强大功能。从此以后,无论是身处世界的哪个角落,你都可以随时查看和管理你的作品库,再也不用为公网IP或云服务器发愁了。有了IOPaint和Cpolar的加持,你就是朋友圈中最会修图的那个大神!快来试试吧,让你的照片瞬间变得与众不同,让朋友们都羡慕得不要不要的!
相关文章:

零成本打造专属AI图像处理平台:IOPaint本地部署与远程访问指南
文章目录 前言1.什么是IOPaint?2.本地部署IOPaint3.IOPaint简单实用4.公网远程访问本地IOPaint5.内网穿透工具安装6.配置公网地址7.使用固定公网地址远程访问总结 前言 移动摄影的普及使得记录生活变得轻而易举,然而获得一张高质量的照片往往需要付出不…...

操作系统-物理结构
操作系统使用read系统调用,将逻辑地址转(对于用户来说逻辑地址容易计算,因为各个逻辑块都相邻)成了逻辑块号和块内偏移量,并根据分配存储方式,将逻辑块号转成物理块号和块内偏移量 对于用户来说的文件的一…...
CGO中引入 <cstddef> <vector> fatal error: cstddef: No such file or directory 失败的原因
原因 可以在CPP里面引入C的头文件,但不能在h文件引入 错误 fatal error: cstddef: No such file or directory 测试case,下面的可以,如果把他放到头文件就会报错 // main.go package main// #cgo CXXFLAGS: -stdc11 // #cgo LDFLAGS: -l…...
亚马逊电商广告革命:当AI推荐沦为红海陷阱,中国卖家如何破局?
一、算法同质化:跨境电商的广告效率危机 亚马逊广告系统正陷入一场自我迭代的悖论。其力推的AI推荐广告模板(2023年覆盖率达78%),本意为降低运营门槛,却意外催生出"广告红海效应"——据Jungle Scout监测数据…...

《AI大模型应知应会100篇》第64篇:构建你的第一个大模型 Chatbot
第64篇:构建你的第一个大模型 Chatbot 手把手教你从零开始搭建一个基于大模型的聊天机器人 摘要 你是否想过,自己也能构建一个像 ChatGPT 一样能对话、能思考的聊天机器人(Chatbot)?别担心,这并不需要你是…...

STM32 片上资源之串口
STM32 片上资源之串口 1 串口介绍1.1 初步介绍1.2 主要特性1.2.1 USART特性1.2.2 UART特性 1.3 主要寄存器1.4 波特率计算1.5 常用工作模式1.5.1 轮询模式:1.5.2 中断模式:1.5.3 DMA模式: 1.6 常见应用1.7 注意事项 2 软件层面协议2.1 基本概…...

职坐标IT培训:互联网行业核心技能精讲
在互联网行业高速迭代的今天,掌握全链路核心技能已成为职业发展的关键突破口。职坐标IT培训聚焦行业需求,系统拆解从需求分析到系统部署的完整能力模型,助力从业者构建多维竞争力。无论是产品岗的用户调研与原型设计,还是技术岗的…...

FlashInfer - 介绍 LLM服务加速库 地基的一块石头
FlashInfer - 介绍 LLM服务加速库 地基的一块石头 flyfish 大型语言模型服务中的注意力机制 大型语言模型服务(LLM Serving)迅速成为重要的工作负载。Transformer中的算子效率——尤其是矩阵乘法(GEMM)、自注意力(S…...

MySQL 学习(七)undo log、redo log、bin log 的作用以及持久化机制
目录 一、前言二、三大日志的概念、作用、存储位置2.1 bin log 二进制执行日志2.2 undo log 事务回滚日志2.3 redo log 快速恢复日志 三、补充说明3.1 补充:为什么使用 buffer pool 而不直接修改磁盘中的数据?3.2 补充:同为操作数据变更的日志…...
vue中,created和mounted两个钩子之间调用时差值受什么影响
在 Vue 中,created 和 mounted 是两个生命周期钩子,它们之间的调用时差主要受以下几个因素影响: 🟢 1. 模板复杂度与渲染耗时(最主要因素) mounted 的触发时间是在组件的 DOM 被挂载之后(也就是…...
16S18S_OTU分析(3)
OTU的定义 OTU:操作分类单元是在系统发生学研究或群体遗传学研究中,为了便于进行分析,人为给某一个分类单元(如品系、种、属、分组等)设置的同一标志。目的:OTU用于将相似的序列归为一类,以便于…...
电机的导程和脉冲之间的关系
文章目录 导程计算关系相互影响关系 在电机相关领域中,导程通常是针对直线电机或带有丝杠等传动机构的电机系统而言的。 导程 导程是指丝杠或类似传动部件旋转一周时,与其相连的运动部件在轴向方向上移动的距离。例如,在一个由电机驱动丝杠来…...

时间序列预测建模的完整流程以及数据分析【学习记录】
文章目录 1.时间序列建模的完整流程2. 模型选取的和数据集2.1.ARIMA模型2.2.数据集介绍 3.时间序列建模3.1.数据获取3.2.处理数据中的异常值3.2.1.Nan值3.2.2.异常值的检测和处理(Z-Score方法) 3.3.离散度3.4.Z-Score3.4.1.概述3.4.2.公式3.4.3.Z-Score与…...
Flink和Spark的选型
在Flink和Spark的选型中,需要综合考虑多个技术维度和业务需求,以下是在项目中会重点评估的因素及实际案例说明: 一、核心选型因素 处理模式与延迟要求 Flink:基于事件驱动的流处理优先架构,支持毫秒级低延迟、高吞吐的…...

FFmpeg3.4 libavcodec协议框架增加新的decode协议
查看ffmepg下面的configure文件发现,config.h文件;解码协议的配置是通过libavcodec/allcodecs.c文件,通过查找DEC关键字生成的。 1、在libavcodec/allcodecs.c 新增REGISTER_ENCODER(MYCODE, mycode); REGISTER_ENCODER(VP8_VAAPI, vp8_vaapi); …...

无人机数据处理与特征提取技术分析!
一、运行逻辑 1. 数据采集与预处理 多传感器融合:集成摄像头、LiDAR、IMU、GPS等传感器,通过硬件时间戳或PPS信号实现数据同步,确保时空一致性。 边缘预处理:在无人机端进行数据压缩(如JPEG、H.265)…...

前端面试宝典---js垃圾回收机制
什么是垃圾回收 垃圾回收是指一种自动内存管理机制,当声明一个变量时,会在内存中开辟一块内存空间用于存放这个变量。当这个变量被使用过后,可能再也不需要它了,此时垃圾回收器会自动检测并回收这些不再使用的内存空间。垃圾回收…...

IDEA 新建 SpringBoot 项目时,没有高版本 SpringBoot 可选
环境描述 IDEA 2025.1.1JDK17Maven 3.9.9 问题描述 IDEA 新建 SpringBoot 项目时,没有高版本 SpringBoot 可选,可以看到此时的最高版本为 3.0.2: 问题分析 返回上一步,可以发现 Spring Initializr 的服务地址为阿里云&#…...

2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2)
2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2) 序号过程过程组9.1规划资源管理规划9.2估算活动资源规划9.3获取资源执行9.4建设团队执行9.5管理团队执行9.6控制资源监控 文章目录 2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2…...

动态规划问题 -- 多状态模型(删除并获得点数)
目录 动态规划分析问题五步曲题目概述预处理阶段 代码编写 动态规划分析问题五步曲 不清楚动态规划分析问题是哪关键的五步的少年们可以移步到 链接: 动态规划算法基础 这篇文章非常详细的介绍了动态规划算法是如何分析和解决问题的 题目概述 链接: 删除并获得点数 预处理阶段…...

Jenkins里构建一个简单流水线
前情提要:传送门,我在虚拟机里装了一个Ubuntu,然后在docker里装了一个Jenkins及GitLab! 点击这里下载或fork一个简单的Java项目用于学习Jenkins! 目标:修改代码后,上传到git,在在Jenkins流水线里…...

Java Queue 接口实现
Date: 2025.05.14 20:46:38 author: lijianzhan Java中的Queue接口是位于java.util包中,它是一个用于表示队列的接口。队列是一种先进先出(First-In-First-Out, 简称为FIFO)的数据结构,其中元素被添加到队列的尾部,并从…...
华为0507机试
题目二 建设基站 有一棵二叉树,每个节点上都住了一户居民。现在要给这棵树上的居民建设基站,每个基站只能覆盖她所在与相邻的节点,请问信号覆盖这棵树最少需要建设多少个基站 #include <bits/stdc.h> using namespace std;const int …...

OpenEvidence AI临床决策支持工具平台研究报告
平台概述 OpenEvidence是一个专为医疗专业人士设计的临床决策支持工具,旨在通过整合各类临床计算器和先进的人工智能技术,提高医生的诊疗决策效率和准确性。作为一款综合性医疗平台,OpenEvidence将复杂的医学计算流程简化,同时提供个性化的临床建议,使医生能够更快、更准…...
`RotationTransition` 是 Flutter 中的一个动画组件,用于实现旋转动画效果
RotationTransition 是 Flutter 中的一个动画组件,用于实现旋转动画效果。它允许你对子组件进行动态的旋转变换,从而实现平滑的动画效果。RotationTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果…...
Android多媒体——媒体start流程分析(十三)
当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。 一、媒体播放流程 对于媒体播放流程的 Java 层和 JNI 层与前面的示例基本相同,这里不再重复展示了,我们直接从 mediap…...

如何远程执行脚本不留痕迹
通常我们在做远程维护的时候,会有这么一个需求,就是我想在远程主机执行一个脚本,但是这个脚本我又不想保留在远程主机上,那么有人就说了,那就复制过去再登录远程执行不就行了吗?嗯嗯,但是这还不…...
jQuery知识框架
一、jQuery 基础 核心概念 $ 或 jQuery:全局函数,用于选择元素或创建DOM对象。 链式调用:多数方法返回jQuery对象,支持连续操作。 文档就绪事件: $(document).ready(function() { /* 代码 */ }); // 简写 $(function…...
java加强 -File
File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。 File对象既可以代表文件,也可以代表文件夹。 创建File对象,获取某个文件的信息 语法: File 对象名 new File("需要访问文件的绝对路径&…...
c# 倒序方法
在C#中,有几种方法可以对List进行倒序排列: 1. 使用List的Reverse()方法(原地反转) List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果:5, 4, 3, 2, 1 …...