背景除去アプリの作り方 — PyQt6+ONNX(BiRefNet)でローカル完結の透過ツールを作る

アプリの作り方

背景除去アプリの作り方 — PyQt6+ONNX(BiRefNet)でローカル完結の透過ツールを作る

商品写真やアイコンの背景を抜きたいだけなのに、オンラインの背景除去サービスは枚数制限や画質劣化、何より「画像をどこかへアップロードする」のが気になる。全部ローカルで、しかも綺麗に抜けるツールを自分で持ちたかった。作ったアプリを、このページを入口に全7回で1から組み立てていく。

目次
  1. このガイドで作るもの
  2. このアプリを1から作る連載(全7回)
  3. 設計の起点:1つの抜き方では全部は抜けない
  4. 例えば、どのモードをいつ使うか
  5. 各モードの中身は、連載で1つずつ開く
  6. 正直なまとめ

このガイドで作るもの

PyQt6 + OpenCV + ONNX による、完全オフラインの背景除去 GUI「Background Removal Studio Pro」。AI自動(BiRefNet)・白/単色背景・クロマキー・マジックワンド・指定カラー透過の5モードを持ち、ドラッグ&ドロップで一括処理できる。ネットに何も送らず、手元で透過PNGを量産する。

このアプリを1から作る連載(全7回)

このページは連載の入口だ。上のアプリを、実際のコードで・順を追って・自分で再現できる形で1から作っていく。各回は下の日程で順に公開する。

  1. ① 土台と全体設計 … PyQt6と3枚の純関数レイヤで壊れない骨格を作る(7/24 公開予定)
  2. ② 古典CVエンジン … FloodFill・クロマキー・Color-to-Alpha をAIなしで書く(7/27 公開予定)
  3. ③ 2つの難所 … 囲まれた背景ポケットとアイコンの穴を実測で解く(7/30 公開予定)
  4. ④ AIをローカルで動かす … BiRefNetをONNXで推論しDirectMLで速くする(8/2 公開予定)
  5. ⑤ 仕上げ … 5スライダー後処理・消去/復元ブラシ・20段Undo(8/5 公開予定)
  6. ⑥ UI/UX … ズーム・スポイト・非同期推論・ドラッグ&ドロップ一括処理(8/8 公開予定)
  7. ⑦ 完結 … 目視を数値化して品質を担保し、配布する(8/11 公開予定)

下の「使い分け」までがこのページの中身で、各モードの中身と実装は各回で開いていく。まず完成品の使い方だけ知りたい人は、このページだけで足りる。

設計の起点:1つの抜き方では全部は抜けない

背景除去に「万能の一手」はない。複雑な被写体は AI(BiRefNet)が強いが、白背景の商品写真は四隅からの FloodFill の方が速くて正確、グリーンバックはクロマキーが最適だ。だから抜き方をモードで切り替えられる設計にした。被写体に合わせて手段を選べることが、仕上がりを決める。

Background Removal Studio のメイン画面
Background Removal Studio のメイン画面。除去モード(AI自動 / 白背景 / クロマキー / マジックワンド / 指定カラー)とAIモデル(BiRefNet 等)を選び、しきい値やエッジを微調整して抜く。左右は元画像と結果のビュー。

例えば、どのモードをいつ使うか

5モードの使い分けを、よくある被写体で具体化しておく。

  • 白背景の商品写真(メルカリ・EC向け) … 白/単色背景モード。四隅からの FloodFill が最速で、輪郭も安定する。AIモードより速くて正確なことが多い。
  • 人物・ペット・複雑な形の被写体 … AI自動(BiRefNet)。髪の毛や毛並みのような境界は、古典手法では追い切れない。
  • グリーンバックの動画素材・配信画像 … クロマキー。背景色が決まっているなら、これが一番きれいに抜ける。
  • ロゴ・アイコン・イラスト … マジックワンドか指定カラー透過。ベタ塗りの背景は、色を指定して抜く方が輪郭がシャープに残る。

迷ったらAI自動で試し、境界が汚れたら被写体に合うモードへ切り替える。この「まず試す→ダメなら持ち替える」の順番が、結局一番速い。

AI自動モードでポメラニアンの背景を透過した実際の画面
実際にアプリで抜いたところ。AI自動(BiRefNet)モードで、青背景のポメラニアンを読み込んで背景を除去した。左が元画像、右が結果で、チェッカー柄が透明部分。毛先の1本1本を残したまま、背景だけが消えている。人物やペットのような複雑な輪郭で、AIモードが効くのがこれ。

各モードの中身は、連載で1つずつ開く

ここからは実装の話になる。要点だけ先に置いて、コードと判断の中身は各回で詳しく開いていく。

  • 白/単色背景(FloodFill+カラーゲート) … 四隅をシードに背景を塗りつぶし、被写体色に近い領域はカラーゲートで守る。→ 第2回で実装。
  • クロマキー・マジックワンド・指定カラー透過 … HSVの色相で緑を飛ばす、クリックで背景色を指定する、色距離でソフトに抜く。→ 第2回で実装。
  • 囲まれた背景とアイコンの穴 … 弓の内側は消したいが、エンブレム内部の黒は残したい。相反する2ケースを2つのオプションで持つ。→ 第3回で実測して解く。
  • AI自動(BiRefNet/ONNX) … PyTorchを同梱せずONNXで軽く動かし、DirectMLでGPU、無ければCPUに自動フォールバック。実測 MAE 0.0271 / IoU 0.906。→ 第4回。
  • 後処理・ブラシ・Undo … 自動で9割抜けた後の残り1割を、5つのスライダーと消去/復元ブラシで詰める。→ 第5回。
  • 一括処理とUI/UX … 十数秒のAI推論でUIを固まらせない非同期化、ドラッグ&ドロップの一括保存。→ 第6回。
  • プリセットは勘で決めない … パラメータを掃引して MAE/IoU で実測し、根拠を持って固定する。→ 第7回。
クロマキーモードでグリーンバックの人物を透過した実際の画面
クロマキーモードでグリーンバックの人物を抜いた例。左が元画像、右が透過結果。色相中心を緑(60)に合わせると、均一なグリーンだけを飛ばして、髪の細い束まで残せる。配信やスタジオ撮影のように背景色が決まっている素材は、これが一番速くて綺麗に抜ける。
白・単色背景モードでスニーカーの白背景を透過した実際の画面
白/単色背景モード(四隅からのFloodFill)で、白バックの商品写真を抜いた例。左が元画像、右が透過結果。輪郭をくっきり残したまま、白い背景だけがチェッカー柄(透明)に変わっている。メルカリやECの商品写真は、AIより古典手法のこのモードの方が速くて安定する。

正直なまとめ

綺麗に抜く鍵は単一の最強アルゴリズムではなく、「被写体でモードを切り替え、囲まれた背景の扱いを2択で持ち、最後は人の手で詰める」という設計判断にある。完全オフラインなので画像を外に出さずに済む。GPU が無くても CPU フォールバックで動く。この判断を1つずつコードに落としていく過程が、この連載だ。第1回から順に読めば、同じものが手元で組み上がる。


👉 連載は7/24から順次公開。関連: 開発実例ギャラリーほかのアプリの作り方

AIアセットでゲームマップを作る — 生成スケッチの透過切り出しからレベルセレクトまでAIアセットでゲームマップを作る — 生成スケッチの透過切り出しからレベルセレクトまで前のページ

高精度OCRデスクトップアプリの作り方 — PaddleOCR-VLとPyInstaller凍結の実践次のページ高精度OCRデスクトップアプリの作り方 — PaddleOCR-VLとPyInstaller凍結の実践

ピックアップ記事

  1. New Eden Intelligence Hub の作り方 — EVE Onl…

  2. 競艇予想AIの作り方 — LightGBMで「当たる順位」を学習させる実装ガイド…

  3. Claude Mission Control の作り方 — Tauri+Pyth…

  4. 高精度OCRデスクトップアプリの作り方 — PaddleOCR-VLとPyIns…

関連記事

  1. 都市開発シミュを作る③|需要・成長・経済の決定論シミュレーション(MVP完成)【Aurum City制作】

    アプリの作り方

    都市開発シミュを作る③|需要・成長・経済の決定論シミュレーション(MVP完成)【Aurum City…

    需要・成長・経済で街を動かす決定論シミュレーションの作り方。種から回す…

  2. Claude Mission Control の作り方 — Tauri+Python+MCPで複数AIエージェントを1画面に統合する

    アプリの作り方

    Claude Mission Control の作り方 — Tauri+Python+MCPで複数A…

    複数AIエージェントの会話・生成・成果物を1画面に統合するデスクトップ…

  3. アプリの作り方

    Claude Codeのトークンを削るOSS 11本 — ライセンス本文まで確かめた一覧

    GitHubで「Claude Codeのトークンを削る」と名の付くリポ…

  4. New Eden Intelligence Hub の作り方 — EVE Online の SSO×ESI API で市場・資産・戦闘を一画面に集約する自分専用ダッシュボード

    アプリの作り方

    New Eden Intelligence Hub の作り方 — EVE Online の SSO×…

    自作の EVE Online 統合ダッシュボード「New Eden I…

  5. 背景除去アプリを作る⑤|5スライダー後処理+消去/復元ブラシ+20段Undoで「自動9割・手で1割」を仕上げる【背景除去Studio制作】

    アプリの作り方

    背景除去アプリを作る⑤|5スライダー後処理+消去/復元ブラシ+20段Undoで「自動9割・手で1割」…

    完全自動を狙うより、自動+微修正の方が実用品質に早く届く。しきい値・ソ…

  6. 競艇予想AIの作り方 — LightGBMで「当たる順位」を学習させる実装ガイド

    アプリの作り方

    競艇予想AIの作り方 — LightGBMで「当たる順位」を学習させる実装ガイド

    過去21万レースを学習し3連単上位10点を出す競艇予想AIの作り方。な…

注目

AIで、ここまで作れる

AIで作った2D RPGを、ブラウザでそのまま遊べます。その「作り方=最後まで完成させる進め方」も実例つきで公開中。

▶ ゲームを遊ぶやり方を読む

PR

ロリポップ!レンタルサーバー(PR)

レンタルサーバ:ロリポップ!(本サイトの稼働環境・PR)

  1. OpenAI GPT-5.6 発表 — ultra mode と max reasoning effort。Claude Sonnet 5 と価格を並べて読む

    AI・テック動向

    OpenAI GPT-5.6 発表 — ultra mode と max rea…
  2. Claude Code v2.1.214 で allow ルールの dir/** が「効かなくなる」— 棚卸しスクリプトと書き換えの判断基準

    AI・テック動向

    Claude Code v2.1.214 で allow ルールの dir/**…
  3. 都市開発シミュを作る⑥|静的ビルドをWordPressへ公開+連載総括【Aurum City制作・完結】

    アプリの作り方

    都市開発シミュを作る⑥|静的ビルドをWordPressへ公開+連載総括【Auru…
  4. Whisper文字起こしアプリの作り方 — 録音から Word 出力までローカルで完結させる

    アプリの作り方

    Whisper文字起こしアプリの作り方 — 録音から Word 出力までローカル…
  5. 背景除去アプリを作る②|AIなしでここまで抜ける — FloodFill・クロマキー・Color-to-Alphaの古典CVエンジン【背景除去Studio制作】

    アプリの作り方

    背景除去アプリを作る②|AIなしでここまで抜ける — FloodFill・クロマ…
PAGE TOP

TAG CLOUD

ドラッグで回転・クリックでそのタグの記事一覧へ