Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
transparent-background
Advanced tools
This is a background removing tool powered by InSPyReNet (ACCV 2022). You can easily remove background from the image or video or bunch of other stuffs when you can make the background transparent!
Image | Video | Webcam |
---|---|---|
<img src=https://raw.githubusercontent.com/plemeri/transparent-background/main/figures/demo_aeroplane.gif height=200px> | <img src=https://raw.githubusercontent.com/plemeri/transparent-background/main/figures/demo_b5.gif height=200px> | <img src=https://raw.githubusercontent.com/plemeri/transparent-background/main/figures/demo_webcam.gif height=200px> |
--fast
argument. Sorry for the inconvenience and we'll fix this issue with better algorithm coming out shortly.--fast
argument, please download This Checkpoint. After some user feedback (create issue or contact me), I'll decide to substitute the current checkpoint to the newer one or train again with different approach.--mode base-nightly
argument. --fast
argument is deprecated. Use --mode [MODE]
instead. --mode
argument supports base
, fast
and base-nightly
. Note that base-nightly
can be changed without any notice.pip install transparent-background[webcam]
if you want to use webcam input.transparent-background
total download counts reached 500,000 and ranked 5969 on 🏆top=pypi-package. Thank you all for your huge support!
<img src=https://github.com/user-attachments/assets/5252be1c-338c-4340-a6a5-5c421a1bf550 width=400px>--format
, --resize
and --reverse
options are implemented.package | version (>=) |
---|---|
pytorch | 1.7.1 |
torchvision | 0.8.2 |
opencv-python | 4.6.0.66 |
timm | 0.6.11 |
tqdm | 4.64.1 |
kornia | 0.5.4 |
gdown | 4.5.4 |
pyvirtualcam (optional) | 0.6.0 |
Note: If you have any problem with pyvirtualcam
, please visit their github repository or pypi homepage. Due to the backend workflow for Windows and macOS, we only support Linux for webcam input.
We basically follow the virtual camera settings from pyvirtualcam
. If you do not choose to install virtual camera, it will visualize real-time output with cv2.imshow
.
# Install v4l2loopback for webcam relay
$ git clone https://github.com/umlaeute/v4l2loopback.git && cd v4l2loopback
$ make && sudo make install
$ sudo depmod -a
# Create virtual webcam
$ sudo modprobe v4l2loopback devices=1
v4l2loopback
, please visit their github repository.Install OBS virtual camera from install OBS.
Follow the steps below.
You need to install zenity
to open files and directories on Linux
sudo apt install zenity
transparent-background
extra-index-url
as below if you want to use gpu, particularly on Windows.pypi
pip install --extra-index-url https://download.pytorch.org/whl/cu118 transparent-background # install with official pytorch
pip install transparent-background[webcam] # with webcam dependency
pip install --extra-index-url https://download.pytorch.org/whl/cu118 git+https://github.com/plemeri/transparent-background.git
git clone https://github.com/plemeri/transparent-background.git
cd transparent-backbround
pip install --extra-index-url https://download.pytorch.org/whl/cu118 .
# On Windows
pip install transparent-background
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio
# On Linux
pip install transparent-background
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
transparent-background
now supports external configuration rather than hard coded assets (e.g., checkpoint download url).
~/.transparent-background/config.yaml
by default. The directory location can be customized by setting the desired file path under the environment variable TRANSPARENT_BACKGROUND_FILE_PATH
. (Contributed by kwokster10)url
argument to your Google Drive download link. (Please note that only Google Drive is supported.)md5
argument to your file's md5 checksum. Or, set md5
to NULL
to skip verification.http_proxy
argument to specify the proxy address as you need. If your internet connection is behind a HTTP proxy (e.g. http://192.168.1.80:8080
), you can set this argument. (Contributed by bombless)base:
url: "https://drive.google.com/file/d/13oBl5MTVcWER3YU4fSxW3ATlVfueFQPY/view?usp=share_link" # google drive url
md5: "d692e3dd5fa1b9658949d452bebf1cda" # md5 hash (optional)
ckpt_name: "ckpt_base.pth" # file name
http_proxy: NULL # specify if needed (Contributed by bombless)
base_size: [1024, 1024]
fast:
url: "https://drive.google.com/file/d/1iRX-0MVbUjvAVns5MtVdng6CQlGOIo3m/view?usp=share_link"
md5: NULL # change md5 to NULL if you want to suppress md5 checksum process
ckpt_name: "ckpt_fast.pth"
http_proxy: "http://192.168.1.80:8080"
base_size: [384, 384]
custom
mode by training custom model from InSPyReNet.custom:
url: [your google drive url]
md5: NULL
ckpt_name: "ckpt_custom.pth"
http_proxy: "http://192.168.1.81:8080"
base_size: [768, 768]
$ transparent-background --source test.png --mode custom
You can use gui with following command after installation.
transparent-background-gui
# for apple silicon mps backend, use "PYTORCH_ENABLE_MPS_FALLBACK=1" before the command (requires torch >= 1.13)
$ transparent-background --source [SOURCE]
$ transparent-background --source [SOURCE] --dest [DEST] --threshold [THRESHOLD] --type [TYPE] --ckpt [CKPT] --mode [MODE] --resize [RESIZE] --format [FORMAT] (--reverse) (--jit)
--source [SOURCE]
: Specify your data in this argument.
image.png
path/to/img/folder
video.mp4
path/to/vid/folder
0
(e.g., if your webcam is at /dev/video0
.)--dest [DEST]
(optional): Specify your destination folder. Default location is current directory.--threshold [THRESHOLD]
(optional): Designate threhsold value from 0.0
to 1.0
for hard prediction. Do not use if you want soft prediction.--type [TYPE]
(optional): Choose between rgba
, map
green
, blur
, overlay
, and another image file. Default is rgba
.
rgba
will generate RGBA output regarding saliency score as an alpha map. Note that this will not work for video and webcam input.map
will output saliency map only.green
will change the background with green screen.white
will change the background with white color. -> [2023.05.24] Contributed by carpedm20'[255, 0, 0]'
will change the background with color code [255, 0, 0]. Please use with single quotes. -> [2023.05.24] Contributed by carpedm20blur
will blur the background.overlay
will cover the salient object with translucent green color, and highlight the edges.samples/backgroud.png
) will be used as a background, and the object will be overlapped on it.--ckpt [CKPT]
(optional): Use other checkpoint file. Default is trained with composite dataset and will be automatically downloaded if not available. Please refer to Model Zoo from InSPyReNet for available pre-trained checkpoints.--mode [MODE]
(optional): Choose from base
, base-nightly
and fast
mode. Use base-nightly
for nightly release checkpoint.--resize [RESIZE]
(optional): Choose between static
and dynamic
. Dynamic will produce better results in terms of sharper edges but maybe unstable. Default is static
--format [FORMAT]
(optional): Specify output format. If not specified, the output format will be identical to the input format.--reverse
(optional): Reversing result. In other words, foreground will be removed instead of background. This will make our package's name transparent-foreground
! :laughing:--jit
(optional): Torchscript mode. If specified, it will trace model with pytorch built-in torchscript JIT compiler. May cause delay in initialization, but reduces inference time and gpu memory usage.import cv2
import numpy as np
from PIL import Image
from transparent_background import Remover
# Load model
remover = Remover() # default setting
remover = Remover(mode='fast', jit=True, device='cuda:0', ckpt='~/latest.pth') # custom setting
remover = Remover(mode='base-nightly') # nightly release checkpoint
# Usage for image
img = Image.open('samples/aeroplane.jpg').convert('RGB') # read image
out = remover.process(img) # default setting - transparent background
out = remover.process(img, type='rgba') # same as above
out = remover.process(img, type='map') # object map only
out = remover.process(img, type='green') # image matting - green screen
out = remover.process(img, type='white') # change backround with white color
out = remover.process(img, type=[255, 0, 0]) # change background with color code [255, 0, 0]
out = remover.process(img, type='blur') # blur background
out = remover.process(img, type='overlay') # overlay object map onto the image
out = remover.process(img, type='samples/background.jpg') # use another image as a background
out = remover.process(img, threshold=0.5) # use threhold parameter for hard prediction.
out.save('output.png') # save result
# Usage for video
cap = cv2.VideoCapture('samples/b5.mp4') # video reader for input
fps = cap.get(cv2.CAP_PROP_FPS)
writer = None
while cap.isOpened():
ret, frame = cap.read() # read video
if ret is False:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame).convert('RGB')
if writer is None:
writer = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, img.size) # video writer for output
out = remover.process(img, type='map') # same as image, except for 'rgba' which is not for video.
writer.write(cv2.cvtColor(np.array(out), cv2.COLOR_BGR2RGB))
cap.release()
writer.release()
rsreetech shared a tutorial using colab. [Youtube]
pip uninstall transparent-background
See LICENCE for more details.
This work was supported by Institute of Information & communications Technology Planning & Evaluation (IITP) grant funded by the Korea government (MSIT) (No.2017-0-00897, Development of Object Detection and Recognition for Intelligent Vehicles) and (No.B0101-15-0266, Development of High Performance Visual BigData Discovery Platform for Large-Scale Realtime Data Analysis)
FAQs
Make images with transparent background
We found that transparent-background demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.