Rembg เป็นเครื่องมือในการลบพื้นหลังรูปภาพ
หากโครงการนี้ช่วยคุณได้ โปรดพิจารณาบริจาค
PhotoRoom ลบพื้นหลัง API https://photoroom.com/api API เครื่องมือลบพื้นหลังที่รวดเร็วและแม่นยำ |
python: >3.7, <3.13
หากคุณติดตั้ง onnxruntime
ไว้แล้ว เพียงติดตั้ง rembg
:
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
มิฉะนั้น ให้ติดตั้ง rembg
ด้วยการรองรับ CPU/GPU ที่ชัดเจน
รองรับซีพียู:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
รองรับจีพียู:
ก่อนอื่น คุณต้องตรวจสอบว่าระบบของคุณรองรับ onnxruntime-gpu
หรือไม่
ไปที่ https://onnxruntime.ai และตรวจสอบเมทริกซ์การติดตั้ง
ถ้าใช่ให้รัน:
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
หลังจากขั้นตอนการติดตั้ง คุณสามารถใช้ rembg เพียงพิมพ์ rembg
ในหน้าต่างเทอร์มินัลของคุณ
คำสั่ง rembg
มีคำสั่งย่อย 4 คำสั่ง หนึ่งคำสั่งสำหรับอินพุตแต่ละประเภท:
i
สำหรับไฟล์p
สำหรับโฟลเดอร์s
b
สำหรับสตรีมไบนารี RGB24 พิกเซลคุณสามารถรับความช่วยเหลือเกี่ยวกับคำสั่งหลักได้โดยใช้:
rembg --help
เกี่ยวกับคำสั่งย่อยทั้งหมดที่ใช้:
rembg < COMMAND > --help
i
ใช้เมื่ออินพุตและเอาต์พุตเป็นไฟล์
ลบพื้นหลังออกจากภาพระยะไกล
curl -s http://input.png | rembg i > output.png
ลบพื้นหลังออกจากไฟล์ในเครื่อง
rembg i path/to/input.png path/to/output.png
ลบพื้นหลังที่ระบุโมเดล
rembg i -m u2netp path/to/input.png path/to/output.png
ลบพื้นหลังกลับคืนมาส์กเท่านั้น
rembg i -om path/to/input.png path/to/output.png
ลบพื้นหลังโดยใช้การปูแบบอัลฟ่า
rembg i -a path/to/input.png path/to/output.png
กำลังส่งพารามิเตอร์พิเศษ
SAM example
rembg i -m sam -x ' { "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] } ' examples/plants-1.jpg examples/plants-1.out.png
Custom model example
rembg i -m u2net_custom -x ' {"model_path": "~/.u2net/u2net.onnx"} ' path/to/input.png path/to/output.png
p
ใช้เมื่ออินพุตและเอาต์พุตเป็นโฟลเดอร์
ลบพื้นหลังออกจากรูปภาพทั้งหมดในโฟลเดอร์
rembg p path/to/input path/to/output
เหมือนเมื่อก่อน แต่คอยดูไฟล์ใหม่/ไฟล์ที่เปลี่ยนแปลงเพื่อดำเนินการ
rembg p -w path/to/input path/to/output
s
ใช้เพื่อเริ่มเซิร์ฟเวอร์ http
rembg s --host 0.0.0.0 --port 7000 --log_level info
หากต้องการดูเอกสารประกอบปลายทางฉบับสมบูรณ์ โปรดไปที่: http://localhost:7000/api
ลบพื้นหลังออกจาก URL รูปภาพ
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
ลบพื้นหลังออกจากรูปภาพที่อัปโหลด
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
ประมวลผลลำดับของภาพ RGB24 จาก stdin สิ่งนี้มีจุดประสงค์เพื่อใช้กับโปรแกรมอื่น เช่น FFMPEG ที่ส่งออกข้อมูลพิกเซล RGB24 ไปยัง stdout ซึ่งถูกส่งไปยัง stdin ของโปรแกรมนี้ แม้ว่าจะไม่มีสิ่งใดขัดขวางคุณจากการพิมพ์รูปภาพที่ stdin ด้วยตนเองก็ตาม
rembg b image_width image_height -o output_specifier
ข้อโต้แย้ง:
output-%03u.png
ไฟล์เอาท์พุตจะมีชื่อว่า output-000.png
, output-001.png
, output-002.png
เป็นต้น ไฟล์เอาท์พุตจะเป็น บันทึกในรูปแบบ PNG โดยไม่คำนึงถึงนามสกุลที่ระบุ คุณสามารถละไว้เพื่อเขียนผลลัพธ์ไปที่ stdoutตัวอย่างการใช้งานกับ FFMPEG:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
ค่าความกว้างและความสูงจะต้องตรงกับขนาดของภาพที่ส่งออกจาก FFMPEG หมายเหตุสำหรับ FFMPEG จำเป็นต้องใช้ส่วน " -an -f rawvideo -pix_fmt rgb24 pipe:1
" เพื่อให้ทุกอย่างทำงานได้
อินพุตและเอาต์พุตเป็นไบต์
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input )
o . write ( output )
อินพุตและเอาต์พุตเป็นรูปภาพ PIL
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image . open ( input_path )
output = remove ( input )
output . save ( output_path )
อินพุตและเอาต์พุตเป็นอาร์เรย์จำนวนมาก
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2 . imread ( input_path )
output = remove ( input )
cv2 . imwrite ( output_path , output )
บังคับให้ส่งออกเป็นไบต์
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , force_return_bytes = True )
o . write ( output )
วิธีวนซ้ำไฟล์อย่างมีประสิทธิภาพ
from pathlib import Path
from rembg import remove , new_session
session = new_session ()
for file in Path ( 'path/to/folder' ). glob ( '*.png' ):
input_path = str ( file )
output_path = str ( file . parent / ( file . stem + ".out.png" ))
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , session = session )
o . write ( output )
หากต้องการดูรายการตัวอย่างทั้งหมดเกี่ยวกับวิธีใช้ rembg ให้ไปที่หน้าตัวอย่าง
เพียงแทนที่คำสั่ง rembg
สำหรับ docker run danielgatis/rembg
ลองสิ่งนี้:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
ทุกรุ่นจะถูกดาวน์โหลดและบันทึกลงในโฟลเดอร์โฮมของผู้ใช้ในไดเร็กทอรี .u2net
รุ่นที่มีจำหน่ายคือ:
หากคุณต้องการรุ่นที่ปรับแต่งเพิ่มเติม ลองสิ่งนี้: #193 (ความคิดเห็น)
ไลบรารีนี้ขึ้นอยู่กับไลบรารี onnxruntime โดยตรง ดังนั้นเราจึงสามารถอัปเดตเวอร์ชัน Python ได้เฉพาะเมื่อ onnxruntime ให้การสนับสนุนสำหรับเวอร์ชันนั้นเท่านั้น
ชอบงานของฉันบ้างไหม? ซื้อกาแฟให้ฉัน (หรืออาจจะเป็นเบียร์ก็ได้)
ลิขสิทธิ์ (c) 2020-ปัจจุบัน Daniel Gatis
ได้รับอนุญาตภายใต้ใบอนุญาต MIT