Python で画像から前景を取り出して背景を削除することが簡単にできるようになりました.2022年に公開されたU-2-Net と呼ばれる畳み込みディープニューラルネットワークのモデルが秀逸です.これはU字型の11のステージからなる畳み込みニューラルネットワークで,興味のある物体を切り抜き,背景を削除します.学習済みモデルも入手可能で,僅か数行のコードだけで実行できます.
Python では rembg パッケージをインストールすると U-2-Net を使った背景削除が可能です.これは pip
を使ってインストールできますが,その他のパッケージのバージョンが異なると rembg のインストールに失敗することがあります.そのような場合は次の手順で仮想環境を作成すれば良いでしょう.
まず,仮想環境の一覧を確認します.すると base 環境だけがインストールされていることが分かります.
(base) C:\Users\UserName\Documents>conda env list ⏎
# conda environments:
#
base * C:\ProgramData\anaconda3
(base) C:\Users\UserName\Documents>
環境名を py312rembg
として,Python のバージョン 3.12 の環境を作成します.
(base) C:\Users\UserName\Documents>conda create -n py312rembg python=3.12 ⏎ Channels: - defaults Platform: win-64 Collecting package metadata (repodata.json): done Solving environment: done ## Package Plan ## environment location: C:\ProgramData\anaconda3\envs\py312rembg added / updated specs: - python=3.12 The following packages will be downloaded: package | build ---------------------------|----------------- expat-2.7.1 | h8ddb27b_0 259 KB pip-25.1 | pyhc872135_2 1.3 MB python-3.12.11 | h716150d_0 16.5 MB setuptools-78.1.1 | py312haa95532_0 2.2 MB tk-8.6.14 | h5e9d12e_1 3.5 MB tzdata-2025b | h04d1e81_0 116 KB vc-14.42 | haa95532_5 11 KB vs2015_runtime-14.42.34433 | hbfb602d_5 1.2 MB wheel-0.45.1 | py312haa95532_0 177 KB xz-5.6.4 | h4754444_1 280 KB ------------------------------------------------------------ Total: 25.5 MB The following NEW packages will be INSTALLED: bzip2 pkgs/main/win-64::bzip2-1.0.8-h2bbff1b_6 ca-certificates pkgs/main/win-64::ca-certificates-2025.2.25-haa95532_0 expat pkgs/main/win-64::expat-2.7.1-h8ddb27b_0 libffi pkgs/main/win-64::libffi-3.4.4-hd77b12b_1 openssl pkgs/main/win-64::openssl-3.0.16-h3f729d1_0 pip pkgs/main/noarch::pip-25.1-pyhc872135_2 python pkgs/main/win-64::python-3.12.11-h716150d_0 setuptools pkgs/main/win-64::setuptools-78.1.1-py312haa95532_0 sqlite pkgs/main/win-64::sqlite-3.45.3-h2bbff1b_0 tk pkgs/main/win-64::tk-8.6.14-h5e9d12e_1 tzdata pkgs/main/noarch::tzdata-2025b-h04d1e81_0 vc pkgs/main/win-64::vc-14.42-haa95532_5 vs2015_runtime pkgs/main/win-64::vs2015_runtime-14.42.34433-hbfb602d_5 wheel pkgs/main/win-64::wheel-0.45.1-py312haa95532_0 xz pkgs/main/win-64::xz-5.6.4-h4754444_1 zlib pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1 Proceed ([y]/n)? y ⏎ done # # To activate this environment, use # # $ conda activate py312rembg # # To deactivate an active environment, use # # $ conda deactivate (base) C:\Users\UserName\Documents>
もう一度,仮想環境の一覧を確認し,py312rembg
という環境がインストールされていることを確認します.
(base) C:\Users\UserName\Documents>conda env list ⏎
# conda environments:
#
base * C:\ProgramData\anaconda3
py312rembg C:\ProgramData\anaconda3\envs\py312rembg
(base) C:\Users\UserName\Documents>
py312rembg
環境を有効化します.
(base) C:\Users\UserName\Documents>conda activate py312rembg ⏎
(py312rembg) C:\Users\UserName\Documents>
環境が切り替わっていることを確認します.
(py312rembg) C:\Users\UserName\Documents>conda env list ⏎
# conda environments:
#
base C:\ProgramData\anaconda3
py312rembg * C:\ProgramData\anaconda3\envs\py312rembg
(py312rembg) C:\Users\UserName\Documents>
インストールされているパッケージを確認します.まだほぼ何もインストールされていないことが分かります.
(py312rembg) C:\Users\UserName\Documents>pip list ⏎
Package Version
---------- -------
pip 25.1
setuptools 78.1.1
wheel 0.45.1
(py312rembg) C:\Users\UserName\Documents>
rembg
パッケージをインストールします.
(py312rembg) C:\Users\UserName\Documents>pip install rembg ⏎
Collecting rembg
Downloading rembg-2.0.67-py3-none-any.whl.metadata (21 kB)
Collecting jsonschema (from rembg)
Downloading jsonschema-4.24.0-py3-none-any.whl.metadata (7.8 kB)
Collecting numpy (from rembg)
Downloading numpy-2.3.1-cp312-cp312-win_amd64.whl.metadata (60 kB)
Collecting opencv-python-headless (from rembg)
Downloading opencv_python_headless-4.12.0.88-cp37-abi3-win_amd64.whl.metadata (20 kB)
Collecting pillow (from rembg)
Downloading pillow-11.3.0-cp312-cp312-win_amd64.whl.metadata (9.2 kB)
Collecting pooch (from rembg)
Downloading pooch-1.8.2-py3-none-any.whl.metadata (10 kB)
Collecting pymatting (from rembg)
Downloading pymatting-1.1.14-py3-none-any.whl.metadata (7.7 kB)
Collecting scikit-image (from rembg)
Downloading scikit_image-0.25.2-cp312-cp312-win_amd64.whl.metadata (14 kB)
Collecting scipy (from rembg)
Downloading scipy-1.16.0-cp312-cp312-win_amd64.whl.metadata (60 kB)
Collecting tqdm (from rembg)
Downloading tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)
Collecting attrs>=22.2.0 (from jsonschema->rembg)
Downloading attrs-25.3.0-py3-none-any.whl.metadata (10 kB)
Collecting jsonschema-specifications>=2023.03.6 (from jsonschema->rembg)
Downloading jsonschema_specifications-2025.4.1-py3-none-any.whl.metadata (2.9 kB)
Collecting referencing>=0.28.4 (from jsonschema->rembg)
Downloading referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
Collecting rpds-py>=0.7.1 (from jsonschema->rembg)
Downloading rpds_py-0.26.0-cp312-cp312-win_amd64.whl.metadata (4.3 kB)
Collecting typing-extensions>=4.4.0 (from referencing>=0.28.4->jsonschema->rembg)
Downloading typing_extensions-4.14.1-py3-none-any.whl.metadata (3.0 kB)
Collecting numpy (from rembg)
Downloading numpy-2.2.6-cp312-cp312-win_amd64.whl.metadata (60 kB)
Collecting platformdirs>=2.5.0 (from pooch->rembg)
Downloading platformdirs-4.3.8-py3-none-any.whl.metadata (12 kB)
Collecting packaging>=20.0 (from pooch->rembg)
Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Collecting requests>=2.19.0 (from pooch->rembg)
Downloading requests-2.32.4-py3-none-any.whl.metadata (4.9 kB)
Collecting charset_normalizer<4,>=2 (from requests>=2.19.0->pooch->rembg)
Downloading charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl.metadata (36 kB)
Collecting idna<4,>=2.5 (from requests>=2.19.0->pooch->rembg)
Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests>=2.19.0->pooch->rembg)
Downloading urllib3-2.5.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests>=2.19.0->pooch->rembg)
Downloading certifi-2025.7.9-py3-none-any.whl.metadata (2.4 kB)
Collecting numba!=0.49.0 (from pymatting->rembg)
Downloading numba-0.61.2-cp312-cp312-win_amd64.whl.metadata (2.9 kB)
Collecting llvmlite<0.45,>=0.44.0dev0 (from numba!=0.49.0->pymatting->rembg)
Downloading llvmlite-0.44.0-cp312-cp312-win_amd64.whl.metadata (5.0 kB)
Collecting networkx>=3.0 (from scikit-image->rembg)
Downloading networkx-3.5-py3-none-any.whl.metadata (6.3 kB)
Collecting imageio!=2.35.0,>=2.33 (from scikit-image->rembg)
Downloading imageio-2.37.0-py3-none-any.whl.metadata (5.2 kB)
Collecting tifffile>=2022.8.12 (from scikit-image->rembg)
Downloading tifffile-2025.6.11-py3-none-any.whl.metadata (32 kB)
Collecting lazy-loader>=0.4 (from scikit-image->rembg)
Downloading lazy_loader-0.4-py3-none-any.whl.metadata (7.6 kB)
Collecting colorama (from tqdm->rembg)
Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Downloading rembg-2.0.67-py3-none-any.whl (44 kB)
Downloading jsonschema-4.24.0-py3-none-any.whl (88 kB)
Downloading attrs-25.3.0-py3-none-any.whl (63 kB)
Downloading jsonschema_specifications-2025.4.1-py3-none-any.whl (18 kB)
Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
Downloading rpds_py-0.26.0-cp312-cp312-win_amd64.whl (234 kB)
Downloading typing_extensions-4.14.1-py3-none-any.whl (43 kB)
Downloading opencv_python_headless-4.12.0.88-cp37-abi3-win_amd64.whl (38.9 MB)
---------------------------------------- 38.9/38.9 MB 91.6 MB/s eta 0:00:00
Downloading numpy-2.2.6-cp312-cp312-win_amd64.whl (12.6 MB)
---------------------------------------- 12.6/12.6 MB 79.2 MB/s eta 0:00:00
Downloading pillow-11.3.0-cp312-cp312-win_amd64.whl (7.0 MB)
---------------------------------------- 7.0/7.0 MB 71.5 MB/s eta 0:00:00
Downloading pooch-1.8.2-py3-none-any.whl (64 kB)
Downloading packaging-25.0-py3-none-any.whl (66 kB)
Downloading platformdirs-4.3.8-py3-none-any.whl (18 kB)
Downloading requests-2.32.4-py3-none-any.whl (64 kB)
Downloading charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl (105 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
Downloading urllib3-2.5.0-py3-none-any.whl (129 kB)
Downloading certifi-2025.7.9-py3-none-any.whl (159 kB)
Downloading pymatting-1.1.14-py3-none-any.whl (54 kB)
Downloading numba-0.61.2-cp312-cp312-win_amd64.whl (2.8 MB)
---------------------------------------- 2.8/2.8 MB 40.8 MB/s eta 0:00:00
Downloading llvmlite-0.44.0-cp312-cp312-win_amd64.whl (30.3 MB)
---------------------------------------- 30.3/30.3 MB 91.7 MB/s eta 0:00:00
Downloading scipy-1.16.0-cp312-cp312-win_amd64.whl (38.4 MB)
---------------------------------------- 38.4/38.4 MB 94.0 MB/s eta 0:00:00
Downloading scikit_image-0.25.2-cp312-cp312-win_amd64.whl (12.9 MB)
---------------------------------------- 12.9/12.9 MB 81.0 MB/s eta 0:00:00
Downloading imageio-2.37.0-py3-none-any.whl (315 kB)
Downloading lazy_loader-0.4-py3-none-any.whl (12 kB)
Downloading networkx-3.5-py3-none-any.whl (2.0 MB)
---------------------------------------- 2.0/2.0 MB 37.7 MB/s eta 0:00:00
Downloading tifffile-2025.6.11-py3-none-any.whl (230 kB)
Downloading tqdm-4.67.1-py3-none-any.whl (78 kB)
Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Installing collected packages: urllib3, typing-extensions, rpds-py, platformdirs, pillow, packaging, numpy, networkx, llvmlite, idna, colorama, charset_normalizer, certifi, attrs, tqdm, tifffile, scipy, requests, referencing, opencv-python-headless, numba, lazy-loader, imageio, scikit-image, pymatting, pooch, jsonschema-specifications, jsonschema, rembg
Successfully installed attrs-25.3.0 certifi-2025.7.9 charset_normalizer-3.4.2 colorama-0.4.6 idna-3.10 imageio-2.37.0 jsonschema-4.24.0 jsonschema-specifications-2025.4.1 lazy-loader-0.4 llvmlite-0.44.0 networkx-3.5 numba-0.61.2 numpy-2.2.6 opencv-python-headless-4.12.0.88 packaging-25.0 pillow-11.3.0 platformdirs-4.3.8 pooch-1.8.2 pymatting-1.1.14 referencing-0.36.2 rembg-2.0.67 requests-2.32.4 rpds-py-0.26.0 scikit-image-0.25.2 scipy-1.16.0 tifffile-2025.6.11 tqdm-4.67.1 typing-extensions-4.14.1 urllib3-2.5.0
(py312rembg) C:\Users\UserName\Documents>
onnxruntime
を別途インストールしなければ rembg
が動作しないことがあるので,その場合は onnxruntime
をインストールします.また,Jupyter Lab を利用するのでこれもインストールしておきます.
(py312rembg) C:\Users\UserName\Documents>pip install onnxruntime ⏎ (py312rembg) C:\Users\UserName\Documents>pip install jupyterlab ⏎ (py312rembg) C:\Users\UserName\Documents>
(py312rembg) C:\Users\UserName\Documents>pip list ⏎ Package Version ------------------------- -------------- anyio 4.9.0 argon2-cffi 25.1.0 argon2-cffi-bindings 21.2.0 arrow 1.3.0 asttokens 3.0.0 async-lru 2.0.5 attrs 25.3.0 babel 2.17.0 beautifulsoup4 4.13.4 bleach 6.2.0 certifi 2025.7.9 cffi 1.17.1 charset-normalizer 3.4.2 colorama 0.4.6 coloredlogs 15.0.1 comm 0.2.2 debugpy 1.8.14 decorator 5.2.1 defusedxml 0.7.1 executing 2.2.0 fastjsonschema 2.21.1 flatbuffers 25.2.10 fqdn 1.5.1 h11 0.16.0 httpcore 1.0.9 httpx 0.28.1 humanfriendly 10.0 idna 3.10 imageio 2.37.0 ipykernel 6.29.5 ipython 9.4.0 ipython_pygments_lexers 1.1.1 isoduration 20.11.0 jedi 0.19.2 Jinja2 3.1.6 json5 0.12.0 jsonpointer 3.0.0 jsonschema 4.24.0 jsonschema-specifications 2025.4.1 jupyter_client 8.6.3 jupyter_core 5.8.1 jupyter-events 0.12.0 jupyter-lsp 2.2.5 jupyter_server 2.16.0 jupyter_server_terminals 0.5.3 jupyterlab 4.4.4 jupyterlab_pygments 0.3.0 jupyterlab_server 2.27.3 lazy_loader 0.4 llvmlite 0.44.0 MarkupSafe 3.0.2 matplotlib-inline 0.1.7 mistune 3.1.3 mpmath 1.3.0 nbclient 0.10.2 nbconvert 7.16.6 nbformat 5.10.4 nest-asyncio 1.6.0 networkx 3.5 notebook_shim 0.2.4 numba 0.61.2 numpy 2.2.6 onnxruntime 1.22.0 opencv-python-headless 4.12.0.88 overrides 7.7.0 packaging 25.0 pandocfilters 1.5.1 parso 0.8.4 pillow 11.3.0 pip 25.1 platformdirs 4.3.8 pooch 1.8.2 prometheus_client 0.22.1 prompt_toolkit 3.0.51 protobuf 6.31.1 psutil 7.0.0 pure_eval 0.2.3 pycparser 2.22 Pygments 2.19.2 PyMatting 1.1.14 pyreadline3 3.5.4 python-dateutil 2.9.0.post0 python-json-logger 3.3.0 pywin32 310 pywinpty 2.0.15 PyYAML 6.0.2 pyzmq 27.0.0 referencing 0.36.2 rembg 2.0.67 requests 2.32.4 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.26.0 scikit-image 0.25.2 scipy 1.16.0 Send2Trash 1.8.3 setuptools 78.1.1 six 1.17.0 sniffio 1.3.1 soupsieve 2.7 stack-data 0.6.3 sympy 1.14.0 terminado 0.18.1 tifffile 2025.6.11 tinycss2 1.4.0 tornado 6.5.1 tqdm 4.67.1 traitlets 5.14.3 types-python-dateutil 2.9.0.20250708 typing_extensions 4.14.1 uri-template 1.3.0 urllib3 2.5.0 wcwidth 0.2.13 webcolors 24.11.1 webencodings 0.5.1 websocket-client 1.8.0 wheel 0.45.1 (py312rembg) C:\Users\UserName\Documents>
Jupyter Lab を起動します.
(py312rembg) C:\Users\UserName\Documents>jupyter lab ⏎
プログラムのソースコードが保存されたフォルダの中に,data
フォルダがあり,その中に背景を削除したい画像データ (ink.png と golf.png) を設置します.また,背景が削除された前景画像は results
フォルダに書き出されるものとします.各フォルダを作成しておいてください.
必要なパッケージをインポートします.
import os
from rembg import remove
from PIL import Image
インクの画像から背景を削除します.わずかなコードで実行できることが確認できます.なお,Windows でも Mac でも動作するようにフォルダとファイルの指定には os モジュールを使用しています.
input_path = os.path.sep.join(['data', 'ink.png'])
output_path = os.path.sep.join(['results', 'rembg_ink.png'])
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
ink.pngrembg_ink.png
![]()
ゴルフスイングの画像からも背景を削除します.(前景とも言えなくもない)ティーマーカーが残っているのと,白色の手袋を着用した左手が消えているようにも見えますが,ほぼ完璧に前景と背景の切り分けに成功しています.
input_path = os.path.sep.join(['data', 'golf.png'])
output_path = os.path.sep.join(['results', 'rembg_golf.png'])
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
golf.pngrembg_golf.png
![]()