ilhamdev commited on
Commit
d14d576
·
verified ·
1 Parent(s): d8f802e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -6
app.py CHANGED
@@ -1,18 +1,21 @@
1
  import io
2
  import gradio as gr
 
3
  from fastapi import FastAPI, File, UploadFile
4
  from fastapi.middleware.cors import CORSMiddleware
5
  from fastapi.responses import Response
6
  from rembg import remove, new_session
7
  from PIL import Image
8
 
9
- # Model dimuat SEKALI saat startup
10
  session = new_session("u2netp")
11
 
 
 
12
  def remove_bg(img: Image.Image) -> Image.Image:
13
  return remove(img, session=session)
14
 
15
- # ---------- 1) UI GRADIO (sekaligus health-check) ----------
16
  demo = gr.Interface(
17
  fn=remove_bg,
18
  inputs=gr.Image(type="pil", label="Upload Gambar"),
@@ -26,7 +29,7 @@ app = FastAPI()
26
 
27
  app.add_middleware(
28
  CORSMiddleware,
29
- allow_origins=["*"],
30
  allow_methods=["*"],
31
  allow_headers=["*"],
32
  )
@@ -39,12 +42,12 @@ def health():
39
  async def api_remove_bg(file: UploadFile = File(...)):
40
  data = await file.read()
41
  input_img = Image.open(io.BytesIO(data))
42
- output_img = remove_bg(input_img)
43
  buf = io.BytesIO()
44
  output_img.save(buf, format="PNG")
45
  return Response(content=buf.getvalue(), media_type="image/png")
46
 
47
- # Gabungkan: Gradio UI di "/", REST API di /remove-bg
48
  app = gr.mount_gradio_app(app, demo, path="/")
49
 
50
- # JANGAN pakai uvicorn.run() — Hugging Face Spaces akan menjalankan `app` secara otomatis
 
1
  import io
2
  import gradio as gr
3
+ import spaces # WAJIB untuk ZeroGPU
4
  from fastapi import FastAPI, File, UploadFile
5
  from fastapi.middleware.cors import CORSMiddleware
6
  from fastapi.responses import Response
7
  from rembg import remove, new_session
8
  from PIL import Image
9
 
10
+ # Model dimuat SEKALI saat startup (CPU saja, tidak makan VRAM)
11
  session = new_session("u2netp")
12
 
13
+ # Dekorator @spaces.GPU WAJIB untuk ZeroGPU (meski rembg jalan di CPU)
14
+ @spaces.GPU
15
  def remove_bg(img: Image.Image) -> Image.Image:
16
  return remove(img, session=session)
17
 
18
+ # ---------- 1) UI GRADIO ----------
19
  demo = gr.Interface(
20
  fn=remove_bg,
21
  inputs=gr.Image(type="pil", label="Upload Gambar"),
 
29
 
30
  app.add_middleware(
31
  CORSMiddleware,
32
+ allow_origins=["*"], # ganti ke domain Vercel kamu saat production
33
  allow_methods=["*"],
34
  allow_headers=["*"],
35
  )
 
42
  async def api_remove_bg(file: UploadFile = File(...)):
43
  data = await file.read()
44
  input_img = Image.open(io.BytesIO(data))
45
+ output_img = remove_bg(input_img) # Panggil fungsi yang ada @spaces.GPU
46
  buf = io.BytesIO()
47
  output_img.save(buf, format="PNG")
48
  return Response(content=buf.getvalue(), media_type="image/png")
49
 
50
+ # Gabungkan Gradio UI + FastAPI
51
  app = gr.mount_gradio_app(app, demo, path="/")
52
 
53
+ # Jangan pakai uvicorn.run() — HF Spaces jalankan otomatis