File size: 8,167 Bytes
b33cd6e 926bbda b33cd6e cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac 8439a3a cf30fac | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | ---
title: Rembg
emoji: π
colorFrom: red
colorTo: pink
sdk: gradio
sdk_version: 6.27.0
python_version: '3.12'
app_file: app.py
pinned: true
---
# RemBG: Pemotong Latar Belakang Foto Berbasis AI
Aplikasi web modern untuk menghapus latar belakang foto secara otomatis dengan hasil PNG transparan 32-bit RGBA. Menggabungkan frontend **Next.js 14** bertema **Neubrutalism** dengan backend **Hugging Face ZeroGPU** bertenaga pustaka Python `rembg` (BiRefNet & ISNet).
---
## Pratinjau Tampilan Antarmuka
### 1. Halaman Utama (Neubrutalism Light Mode)

### 2. Pratinjau Interaktif Sebelum & Sesudah (Before/After Slider)
Bandingkan foto asli referensi dengan hasil pemisahan latar belakang riil dari model `BiRefNet Portrait`:

### 3. Editor Kerja Utama (Workspace Pemrosesan)
Area unggah drag-and-drop, seleksi model segmentasi, opsi alpha matting, dan inspeksi hasil:

---
## Fitur Utama
- **Katalog 6 Model Segmentasi AI:**
- `BiRefNet Portrait`: Khusus potret manusia, mendeteksi helai rambut halus dan lekuk pakaian.
- `BiRefNet General`: Optimal untuk fotografi produk, katalog e-commerce, dan objek benda padat.
- `ISNet General`: Pemrosesan cepat dengan batas tepi tegas untuk subjek umum.
- `ISNet Anime`: Segmentasi spesifik ilustrasi 2D, karakter anime, dan grafik vektor.
- `U2Net Standard`: Model segmentasi serbaguna dengan stabilitas tinggi.
- `U2Net Human`: Segmentasi figur manusia ringan untuk kebutuhan cepat.
- **Alpha Matting Tepi Halus:** Opsi erosi piksel tepi dan ambang batas foreground/background untuk helai rambut tipis.
- **Slider Perbandingan Interaktif:** Tuas perbandingan Before/After responsif dengan kendali mouse, sentuhan layar (touch-friendly), dan aksesibilitas keyboard (`input[type="range"]`).
- **Ketahanan Kuota & Arsitektur Dual-Engine:**
- **ZeroGPU + CPU Fallback:** Inferensi primer dipercepat oleh ZeroGPU (`remove_bg`). Jika kuota GPU limit atau antre, sistem otomatis melakukan failover ke worker CPU (`remove_bg_cpu`) tanpa interupsi.
- **Multi-Token Rotation (`HF_TOKENS`):** Mendukung load-balancing kuota antar beberapa token akun Hugging Face secara acak.
- **Rotasi & Forwarding IP Publik:** Melindungi server dari limit IP anonim terpusat dengan meneruskan IP pengunjung asli serta menyediakan generator IP publik acak untuk lingkungan internal.
- **Keamanan & Anti-Spam:**
- Dilindungi Cloudflare Turnstile tanpa captcha yang mengganggu kenyamanan pengguna.
- Dilengkapi *in-memory sliding window IP rate limiter* (15 req/menit) untuk mencegah bot flood.
- **Privasi Data Penuh:** Berkas gambar hanya diproses sementara di memori GPU/CPU terisolasi dan langsung dibuang setelah kanal alpha diekstrak. Tidak ada penyimpanan permanen di server.
- **Halaman Error 404 Kustom:** Tampilan 404 berdesain Neubrutalism yang aman tanpa kebocoran informasi internal server.
- **Telemetri Tanpa Pelacak Pribadi:** Modul telemetri aman yang siap dihubungkan dengan Google Analytics (`gtag`) atau Plausible tanpa merekam berkas gambar atau identitas pengguna.
---
## Arsitektur Sistem
```mermaid
flowchart TD
A[Pengguna / Browser] -->|Unggah Gambar + Turnstile| B[Frontend Next.js 14]
B -->|Validasi Ukuran & Rate Limit| C[API Route /api/remove-bg]
C -->|Rotasi Token & IP Forwarding| D[Client hf-inference.js]
subgraph Hugging Face Space [ilhamdev-rembg.hf.space]
E[Endpoint ZeroGPU /remove_bg]
F[Endpoint CPU Fallback /remove_bg_cpu]
G[Pustaka Python rembg BiRefNet / ISNet]
end
D -->|Coba Primer: Akselerasi GPU| E
E -->|Injeksi Tensor GPU| G
E -.->|Jika ZeroGPU Quota Limit| F
F -->|Eksekusi Worker CPU| G
G -->|Ekstrak Alpha RGBA 32-bit| D
D -->|Stream Data URL PNG| C
C -->|Response JSON| B
B -->|Pratinjau Checkerboard & Unduh| A
```
---
## Struktur Direktori Proyek
```text
rembg/
βββ app.py # Entry point backend Gradio, API ZeroGPU & CPU Fallback
βββ requirements.txt # Dependensi Python (rembg, gradio, spaces, pillow)
βββ README.md # Dokumentasi proyek & konfigurasi HF Space
βββ DESIGN.md # Panduan desain Neubrutalism (warna, border, tipografi)
βββ docs/
β βββ screenshots/ # Tangkapan layar dokumentasi (hero, slider, workspace)
βββ frontend/ # Aplikasi web Next.js 14
βββ package.json
βββ next.config.js
βββ vercel.json # Konfigurasi deployment Vercel
βββ .env.example # Contoh variabel lingkungan
βββ public/
β βββ samples/ # Sampel foto sebelum dan sesudah AI
βββ src/
βββ app/
β βββ globals.css # Sistem desain Neubrutalism lengkap
β βββ layout.js # Metadata, Schema.org JSON-LD, OpenGraph
β βββ page.js # UI utama, dropzone, slider before/after
β βββ not-found.js # Halaman 404 kustom
β βββ robots.js # Generator robots.txt dinamis
β βββ sitemap.js # Generator sitemap.xml dinamis
β βββ icon.svg # Favicon Neubrutalist
β βββ api/
β βββ remove-bg/ # Handler pemrosesan utama + Turnstile
β βββ demo-remove-bg/ # Handler live demo sampel
βββ lib/
βββ analytics.js # Dispatcher telemetri aman privasi
βββ demo-data.js # Data URI gambar referensi 512x512 ter-embed
βββ hf-inference.js # Klien Hugging Face, token rotation, IP forwarding, failover CPU
βββ hf-inference.test.js# Pengujian unit modul inferensi
βββ rate-limit.js # Sliding-window rate limiter
βββ turnstile.js # Verifikator server-side Cloudflare Turnstile
```
---
## Panduan Menjalankan Secara Lokal
### 1. Menjalankan Backend Python (Gradio)
Pastikan Python 3.10+ terpasang:
```bash
# Pasang dependensi Python
pip install -r requirements.txt
# Jalankan server Gradio
python app.py
```
Aplikasi backend akan aktif di `http://localhost:7860`.
### 2. Menjalankan Frontend Next.js
Masuk ke folder `frontend`:
```bash
cd frontend
# Pasang dependensi Node.js
npm install
# Buat berkas environment lokal dari template
cp .env.example .env.local
# Jalankan server pengembang
npm run dev
```
Buka browser di `http://localhost:3000`.
### 3. Menjalankan Pengujian Unit
```bash
cd frontend
npm test
```
---
## Konfigurasi Variabel Lingkungan (`frontend/.env.local`)
| Variabel | Keterangan | Nilai Contoh |
|---|---|---|
| `NEXT_PUBLIC_SITE_URL` | Domain kanonikal untuk sitemap dan SEO | `https://rembg.vercel.app` |
| `NEXT_PUBLIC_HF_SPACE_URL` | Alamat backend Hugging Face ZeroGPU | `https://ilhamdev-rembg.hf.space` |
| `HF_TOKEN` | Token akun Hugging Face untuk alokasi kuota ZeroGPU resmi | `hf_xxxxxxxxxxxxxxxxxxxxxxxx` |
| `HF_TOKENS` | Multi-token dipisah koma untuk round-robin/random quota distribution | `hf_token1,hf_token2` |
| `NEXT_PUBLIC_TURNSTILE_SITE_KEY` | Site Key Cloudflare Turnstile | Disediakan Cloudflare |
| `TURNSTILE_SECRET_KEY` | Secret Key Cloudflare Turnstile | Disediakan Cloudflare |
| `NEXT_PUBLIC_GSC_VERIFICATION` | Token verifikasi Google Search Console (opsional) | `google-site-verification-...` |
| `NEXT_PUBLIC_GA_ID` | Google Analytics Measurement ID (opsional) | `G-XXXXXXXXXX` |
> **Catatan Pengujian Lokal:** Jika variabel Turnstile dikosongkan saat pengujian lokal, sistem otomatis menggunakan Dummy Test Key resmi dari Cloudflare (`1x00000000000000000000AA`).
---
## Lisensi & Atribusi
- Pustaka Segmentasi: [danielgatis/rembg](https://github.com/danielgatis/rembg)
- Model BiRefNet: [ZhengPeng7/BiRefNet](https://github.com/ZhengPeng7/BiRefNet)
- Hosting Inferensi: [Hugging Face Spaces (ZeroGPU)](https://huggingface.co/spaces/ilhamdev/rembg) |