0 成本搭建 AI 抠图网站:失业程序员的 38 元实战

2 阅读4分钟

0 成本搭建 AI 抠图网站:失业程序员的 38 元实战

这是一个真实的实战故事,也是一份能照抄的完整技术教程。 用一杯奶茶的钱,搭建一个生产级的 AI 抠图服务。


1. 为什么做这个?

失业后第 4 个月,我想试试"从 0 到 1 做产品",而不是天天刷招聘软件。

调研市面上的抠图工具:

工具收费
remove.bg0.2~2 美元/张
国内会员制30~100 元/月
百度图像分割 API免费 1 万次/月

结论很清晰:用百度免费 API + Flask + 免费服务器,能做一个"免费 AI 抠图"工具,成本几乎为 0。

本文就是把这套东西完整讲一遍,代码可直接复制运行。


2. 整体架构

code复制

用户浏览器
   │  上传图片 (HTTP POST)
   ▼
你的服务器 (Flask + Python)
   │  调用
   ▼
百度智能云 图像分割 API
   │  返回前景图(base64)
   ▼
服务器合成透明背景 PNG
   │
   ▼
浏览器下载结果

核心思路:前端只负责上传/下载,真正的"AI 抠图"由百度 API 完成,我们做中间的 Web 服务和结果处理。


3. 准备工作(全部免费)

3.1 服务器

  • 阿里云 ECS 新人试用(2vCPU/2GiB,免费试用 1 个月)
  • 系统:Alibaba Cloud Linux 3(CentOS 系均可)

3.2 申请百度 API

  1. 打开 console.bce.baidu.com/

  2. 进入「产品服务 → 人工智能 → 图像技术」

  3. 开通「人像分割」(body_seg),有免费额度

  4. 在「应用列表」创建应用,拿到:

    • API_KEY
    • SECRET_KEY

提示:body_seg 接口会直接返回"前景图"(已抠好、透明背景的 base64),我们不用自己算 mask,省去大量图像处理代码。


4. 服务器环境搭建

bash复制

# 1. SSH 登录
ssh root@你的服务器IP

# 2. 安装 Python 与依赖
dnf install -y python3 python3-pip
pip3 install flask requests

# 3. 建项目目录
mkdir -p /www/wwwroot/my_remove_bg_ai
cd /www/wwwroot/my_remove_bg_ai

安全加固建议:装 fail2ban,只放通 22/80/443 端口,禁用密码登录改用密钥。


5. 后端代码(Flask)

新建 app.py

python复制

import base64
import requests
from flask import Flask, request, send_file, render_template_string
from io import BytesIO

app = Flask(__name__)

API_KEY = "你的API_KEY"
SECRET_KEY = "你的SECRET_KEY"

def get_access_token():
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {
        "grant_type": "client_credentials",
        "client_id": API_KEY,
        "client_secret": SECRET_KEY,
    }
    return requests.get(url, params=params, timeout=10).json()["access_token"]

def remove_bg(image_bytes):
    token = get_access_token()
    # 人像分割接口,type=foreground 直接返回抠好的前景图
    url = f"https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg?access_token={token}"
    data = {
        "image": base64.b64encode(image_bytes).decode(),
        "type": "foreground",   # 返回透明背景前景图
    }
    r = requests.post(url, data=data, timeout=30).json()
    if "foreground" not in r:
        raise RuntimeError(r.get("error_msg", "API 调用失败"))
    return base64.b64decode(r["foreground"])

@app.route("/")
def index():
    return render_template_string(INDEX_HTML)

@app.route("/api/remove", methods=["POST"])
def api_remove():
    f = request.files["file"]
    img = f.read()
    png = remove_bg(img)
    return send_file(BytesIO(png), mimetype="image/png")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

把 INDEX_HTML 变量(下一节的前端)放在 app.py 顶部即可。


6. 前端代码(HTML + JS)

把下面内容作为 INDEX_HTML 字符串放进 app.py(或直接写 index.html 由 Flask 托管):

html复制

<!doctype html>
<html lang="zh">
<head>
  <meta charset="utf-8">
  <title>AI 免费抠图</title>
  <style>
    body{font-family:sans-serif;text-align:center;background:#f5f6fa;margin:0;padding:40px}
    .box{border:2px dashed #888;border-radius:10px;padding:30px;background:#fff;max-width:480px;margin:20px auto}
    button{background:#2d8cf0;color:#fff;border:0;padding:10px 20px;border-radius:6px;cursor:pointer}
    img{max-width:100%;margin-top:20px}
  </style>
</head>
<body>
  <h1>AI 免费抠图</h1>
  <div class="box">
    <input type="file" id="file" accept="image/*"><br><br>
    <button onclick="upload()">一键抠图</button>
  </div>
  <div id="result"></div>

  <script>
  async function upload(){
    const file = document.getElementById('file').files[0];
    if(!file) return alert('请先选择图片');
    const fd = new FormData();
    fd.append('file', file);
    const res = await fetch('/api/remove', {method:'POST', body: fd});
    const blob = await res.blob();
    const url = URL.createObjectURL(blob);
    document.getElementById('result').innerHTML =
      `<img src="${url}"><br><a download="result.png" href="${url}">下载结果</a>`;
  }
  </script>
</body>
</html>

7. 部署上线(nginx + 域名)

7.1 用 gunicorn 跑后端(更稳)

bash复制

pip3 install gunicorn
gunicorn -w 2 -b 127.0.0.1:5000 app:app --daemon

7.2 域名解析

  • 在阿里云解析控制台,把 @ 和 www 的 A 记录指向服务器 IP
  • 域名一年约 ¥38(如 instantbg.cn)

7.3 nginx 反代

nginx复制

server {
    listen 80;
    server_name instantbg.cn www.instantbg.cn;
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
    }
}

8. HTTPS 证书(免费 Let’s Encrypt)

bash复制

dnf install -y certbot python3-certbot-nginx
certbot --nginx -d instantbg.cn -d www.instantbg.cn

注意:国内服务器对外提供 Web 服务必须完成 ICP 备案,否则 80/443 会被拦截。备案免费,约 1~2 周。


9. 真实成本 & 上线流程

项目费用
域名¥38/年
服务器¥0(试用)
百度 API¥0(免费额度)
SSL 证书¥0(Let’s Encrypt)
总计¥38

上线节奏:  先跑通本地 → 部署到服务器 → 接 nginx → 备案 → 上 HTTPS。每一步验证通过再做下一步,避免一次性踩一堆坑。


10. 总结 & 商业化思路

这个项目让我从"只会写业务代码"变成"能独立交付一个产品":

  • 技术闭环:前端、后端、API 集成、部署、HTTPS 全套打通
  • 成本意识:先用免费额度验证,再决定要不要投入
  • 内容资产:把过程写成文章/文档,本身就是可复利的资产

变现方向(合规、低成本):

  • 网站接入 Google AdSense(备案后)
  • 把踩坑经验做成付费文档/课程
  • 技术教程引流到个人专栏

38 块钱买的不是域名,是"我也能做出产品"的信心。


相关链接:

有想法欢迎交流,一起加油!