Sign inSign up

oktakurniawan/removebg

By oktakurniawan

•Updated over 2 years ago

Background Remover

Image
0

128

oktakurniawan/removebg repository overview

rembg adalah perangkat lunak penghapusan latar belakang berbasis deep learning yang menggunakan jaringan saraf tiruan untuk mendeteksi dan menghapus latar belakang dari gambar. Dikembangkan oleh Holger Caesar, perangkat lunak ini menyediakan solusi efektif untuk memisahkan objek dari latar belakang gambar dengan presisi tinggi.

Cara Kerja:

  1. Pendahuluan (Preprocessing): Proses dimulai dengan pembacaan gambar input dan tahapan preprocessing. Gambar mungkin diubah ukurannya dan diubah menjadi format yang sesuai untuk pemrosesan lebih lanjut.

  2. Pengolahan (Processing): rembg menggunakan model jaringan saraf tiruan yang telah di-latih sebelumnya untuk mengidentifikasi objek dalam gambar. Model ini dilatih dengan dataset besar yang mencakup gambar-gambar dengan latar belakang yang berbeda.

  3. Pendeteksian dan Penghapusan Latar Belakang: Model jaringan saraf memproses gambar dan mencoba untuk memahami konteksnya. Melalui proses ini, model belajar untuk membedakan antara objek dan latar belakang. Setelah proses ini selesai, model dapat menghasilkan gambar yang hanya berisi objek dengan latar belakang yang dihapus.

  4. Output: Hasilnya adalah gambar dengan latar belakang yang dihapus, dan objek tetap utuh. Output ini dapat digunakan untuk berbagai keperluan, seperti integrasi objek ke dalam desain grafis, produksi konten multimedia, atau aplikasi pengeditan gambar.

Algoritma: rembg menggunakan deep neural network (jaringan saraf dalam) berbasis konvolusi untuk tugas penghapusan latar belakang. Rancangan model dan arsitekturnya tidak selalu dipublikasikan secara rinci, tetapi sebagian besar didasarkan pada konsep-konsep umum dalam pengolahan citra dan pengenalan pola.

Penerapan dalam AI:

  1. Editor Grafis dan Pengeditan Gambar: rembg dapat diintegrasikan ke dalam perangkat lunak pengeditan gambar dan grafis untuk memudahkan penggunaan dan menghasilkan hasil yang lebih akurat.

  2. Aplikasi Fotografi dan Videografi: Dalam konteks fotografi dan videografi, penghapusan latar belakang secara otomatis dapat digunakan untuk mempercepat proses pengeditan dan meningkatkan efisiensi produksi konten.

  3. Realitas Virtual (VR) dan Augmented Reality (AR): Penggunaan rembg dapat diterapkan dalam pengembangan konten VR dan AR untuk memisahkan objek dari latar belakang dan menciptakan pengalaman yang lebih imersif.

Meskipun rembg memberikan solusi efektif untuk tugas penghapusan latar belakang, penting untuk diingat bahwa hasilnya dapat bervariasi tergantung pada kompleksitas gambar dan kualitas data pelatihan model. Penerapan rembg memberikan gambaran tentang bagaimana teknologi deep learning dapat digunakan dalam konteks pengolahan citra dan pengeditan gambar.

⁠API Reference

  POST /remove-backgorund
ParameterTypeDescription
filefileRequired. png,jpg

⁠Documentation

Documentation⁠

⁠app.py

from flask import Flask, request, send_file
import rembg
from PIL import Image
from io import BytesIO

app = Flask(__name__)

@app.route('/remove-background', methods=['POST'])
def remove_background():
    try:
        # Dapatkan file dari permintaan POST
        uploaded_file = request.files['file']

        # Baca file dan hapus latar belakang menggunakan rembg
        input_image = Image.open(uploaded_file)
        output_image = rembg.remove(input_image)

        # Simpan hasil penghapusan latar belakang di dalam BytesIO
        output_buffer = BytesIO()
        output_image.save(output_buffer, format="PNG")
        output_buffer.seek(0)

        return send_file(output_buffer, mimetype='image/png', as_attachment=True, download_name='output.png')
    except Exception as e:
        return str(e)

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

⁠dockerfile

# Gunakan image Python yang telah dilengkapi dengan debian Linux sebagai base image
FROM python:3.8

# Set working directory di dalam container
WORKDIR /app

# Copy requirements.txt ke dalam container dan install dependensi
COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

# Copy seluruh konten aplikasi ke dalam container
COPY . .

# Ekspose port 5000 yang digunakan oleh Flask
EXPOSE 5000

# Perintah untuk menjalankan aplikasi Flask
CMD ["python", "app.py"]

⁠requirements.txt

Flask
rembg
Pillow
⁠docker-compose.yml
version: '3'

services:
  remove-background-service:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    container_name: removebg
    hostname: removebg

⁠RemoveBackgroundService.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use GuzzleHttp\Client;

class RemoveBackgroundService {

    protected $client;

    public function __construct()
    {
        $this->client = new Client([
            'base_uri' => 'http://remove-background-service:5000/', // Ganti URL sesuai dengan konfigurasi Docker Anda
        ]);
    }

    public function removeBackground($file)
    {
        try {
            $response = $this->client->request('POST', 'remove-background', [
                'multipart' => [
                    [
                        'name'     => 'file',
                        'contents' => fopen($file, 'r'),
                    ],
                ],
            ]);

            return $response->getBody();
        } catch (\Exception $e) {
            return $e->getMessage();
        }
    }
}

⁠RemoveBackgroundServiceController.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class RemoveBackgroundController extends CI_Controller {

    public function index() {
        $this->load->view('remove_background_form');
    }

    public function process_upload() {
        // Mendapatkan file yang diunggah
        $uploaded_file = $_FILES['userfile']['tmp_name'];

        // Load library RemoveBackgroundService
        $this->load->library('removebackgroundservice');

        // Mengirimkan file ke layanan penghapusan latar belakang
        $result = $this->removebackgroundservice->removeBackground($uploaded_file);

        // Menyimpan hasil penghapusan latar belakang (tersimpan di folder tempat file diunggah)
        $output_file = 'uploads/output.png';
        file_put_contents($output_file, $result);

        // Tampilkan hasil penghapusan latar belakang
        $data['output_file'] = $output_file;
        $this->load->view('remove_background_result', $data);
    }
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Upload and Remove Background</title>
</head>
<body>
    <h2>Upload and Remove Background</h2>
    <?php echo form_open_multipart('removebackgroundcontroller/process_upload'); ?>
    <input type="file" name="userfile" size="20" />
    <br /><br />
    <input type="submit" value="Upload" />
    </form>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Remove Background Result</title>
</head>
<body>
    <h2>Remove Background Result</h2>
    <img src="<?php echo base_url($output_file); ?>" alt="Removed Background" />
</body>
</html>

Tag summary

Content type

Image

Digest

sha256:9e5de8869…

Size

569.4 MB

Last updated

over 2 years ago

docker pull oktakurniawan/removebg:1.0