主頁 >  其他 > 瞬間摳圖!揭秘 ZEGO 綠幕摳圖演算法背后的技術

瞬間摳圖!揭秘 ZEGO 綠幕摳圖演算法背后的技術

2023-07-06 08:24:47 其他

摳圖是影像處理中最常見的操作之一,指的是將影像中需要的部分從畫面中精確的提取出來,

摳圖的主要功能是為了后期的合成做準備,在 Photoshop 中,摳圖的方法有很多種,最常見的有通道摳圖、蒙版摳圖、鋼筆工具摳圖和快速選擇工具等,針對視頻的摳圖方法主要是基于keylight 插件對純色背景進行摳圖(多用于綠幕),

摳圖主要解決的是影像中前景和背景區域的準確預測問題,對于影像編輯和影視制作有著極其重要的實際意義,因此一個準確有效的摳圖演算法可以極大改善內容生產的作業流程,從而節省大量的人力物力并提高作業效率,

圖片

圖1 trimap 摳圖

常用視頻摳圖方式

業內常用視頻摳圖主要有通用摳圖綠幕摳圖兩種方式,

通用摳圖通常基于 trimap 對前景、背景和 alpha 圖進行估計,然而當影像中的前景和背景顏色相似或有著比較復雜的紋理時,基于 trimap 的傳統演算法很難取得比較好的效果,綠幕摳圖也可以基于 trimap,但是由于 trimap 方法需要額外增加一個三值圖輸入,在視頻綠幕摳圖很難實際應用起來,

綠幕摳圖通常采用色度鍵或亮度鍵演算法,亮度鍵指將一幅彩色影像轉為單通道的黑白影像,這幅黑白影像就代表著該影像的亮部和暗部區域,通過設定最低亮度和最高亮度兩個閾值,將符合該條件的區域保留,不符合的去除,由此就生成了一張 alpha 圖,然而這種方法直接生成的 alpha 圖通常有比較多的瑕疵,還需要進行二次處理,

色度鍵演算法則是在 HSV 彩色空間中進行,其中 H 表示色調、即是什么顏色,S 表示飽和度即該顏色有多濃,V 表示亮度即該顏色有多亮,色度鍵演算法需要提前手動選擇背景顏色,通過計算整幅影像和背景顏色的距離或稱相似度來判斷哪些顏色屬于背景,哪些顏色屬于前景,由此得到最終的 alpha 圖,

圖片

圖2 AE 軟體中的色度鍵摳圖

在綠幕摳圖中,無論是亮度鍵還是色度鍵都需要和用戶進行互動,需要用戶繁瑣的調節各種復雜的引數來達到較好的摳圖效果,同時,由于黃色(255,255,0)和綠色(0,255,0)相近,色度鍵演算法很難對該顏色進行有效處理,如圖 2 所示,在 AE 軟體中使用色度鍵演算法對綠幕視頻進行摳圖,可以看到背景基本能去除干凈,但是黃色的皮卡丘玩具出現了例外,

圖片

圖3 HSV 顏色空間模型

近年來隨著計算機硬體設備和人工智能基礎理論的發展,使得人工智能演算法能夠真正在各行各業落地,CNN 具備強大的高級特征提取能力,彌補了傳統演算法要基于手工特征進行設計的弊端,同時 CNN 還具備強大的擬合能力,與傳統演算法相比,基于 CNN 的人工智能演算法通常具備更強的魯棒性,

ZEGO 綠幕摳圖技術方案

2.1 資料制作

圖片

圖4 綠幕摳像程序

綠幕資料是比較專業的資料,一般只有影視公司才會去拍攝,而由于肖像、著作權等一系列問題,互聯網上幾乎找不到任何可以公開使用的綠幕資料,所以,ZEGO 搭建了專業的綠幕拍攝場地,用于制作專業的綠幕資料集,

綠幕資料的制作包括綠幕背景和前景拍攝,為了兼容市面上大部分綠幕以及增加綠幕背景的多樣性,ZEGO 使用專業的攝影燈用于調節綠幕的明亮和色溫,同時考慮到用戶使用的綠幕不一定像專業的那么平整和柔和,我們也制作了一批效果較差的綠幕背景資料,

圖片

圖5 通過補光燈和色溫燈控制綠幕背景的顏色

綠色溢位是綠幕摳圖的經典問題,由于光線的反射、物體距離綠幕的遠近和物體本身色彩的深淺等原因會造成物體表面被染上綠色,而人眼對綠色非常敏感,因此綠色溢位會使得綠幕摳圖的效果大打折扣,ZEGO 專門制作了一批帶有綠色溢位的資料集,并使用 AE 軟體中的 keylight 插件進行綠幕摳圖和顏色溢位抑制,由此得到帶綠色溢位的前景影像、綠色溢位抑制后的前景影像以及對應的 alpha 圖,

圖片

圖6 帶綠色溢位的前景以及對應的綠色抑制前景和 alpha 圖

圖片

圖7 人體、紙張被綠幕反射上綠色

2.2 模型設計

ZEGO 設計了超輕量級的 CNN 模型用于實時綠幕摳圖,該模型采用編碼器加解碼器結構,其中編碼器由 3X3 的卷積層、relu 激活函式、1x1 的卷積層、batchnoraml 層構成并整體遵循mobilenetV3 的倒殘差結構,

編碼器采用通道可分離卷積用于降低計算量,隨后進行特征圖升維最后再使用 1x1 的卷積對特征圖進行壓縮降維,實驗表明這種結構在輕量級網路中能夠更加有效的提取資料特征,資料每經過一個編碼器,大小減小一半,網路將在不同解析度的資料上提取特征,

經過編碼器提取特征后,最后一層特征會經過 LRASSP(輕量級空洞空間金字塔池化)層,該層是輕量級的空間金字塔池化,該層會將輸入按照寬和高均勻的分成 1 份、4 份、16 份,并分別對其進行全域均值池化,最后再把得到的池化特征拼接起來,該層能獲取特征圖不同空間的尺度資訊,從而增強網路的魯棒性,

圖片

圖8 ASPP 示例

在解碼器階段,會逐一對特征圖進行兩倍上采樣并結合時序資訊來加強視頻摳圖的連續性和穩定性,時序資訊通過 GRU(Gate Recurrent Uint)模塊來提取并嵌入對應的解碼器中,GRU 是回圈神經網路的一種,和 LSTM(Long-Short Term Memory)一樣,也是為了解決長期記憶和方向傳播中的梯度等問題,

GRU 包括兩個門控介面,其公式如下:

圖片

GRU 首先通過上一個傳輸下來的狀態 圖片 和當前節點的輸入 圖片 來獲取兩個門控的狀態,其中圖片制重置的門控,Z為控制更新的門控,圖片為 sigmoid 函式,

得到門控信號之后,首先使用重置門控來得到重置后資料:

圖片

再將圖片與輸入圖片進行拼接,隨后通過 tanh 激活函式來講資料縮放到 -1 到 1 的范圍內,

圖片

這里的 圖片 主要包含了當前輸入的圖片資料,有針對性的對圖片添加到當前的隱藏狀態,相當于記憶了當前時刻的狀態,

GRU 的關鍵步驟是記憶更新階段,在這個階段中,GRU 同時進行了遺忘和記憶兩個步驟,并使用先前得到的更新門控Z進行更新:

圖片

門控信號的范圍為 0 到 1,門控資訊越接近 1,代表記憶下來的資料越多,反之則代表遺忘的越多,

當添加了 GRU 后,整個網路會隨著時間對錯誤的預測進行修正并能有效抑制視頻摳像的閃爍,

圖片

圖 9 GRU 對錯誤預測的修正

綠幕摳圖除了要精細的摳出前景邊界外還需有對綠色溢位進行有效抑制,人眼對綠色非常敏感,如果摳像邊界還殘留綠色或前景被光線反射上綠色會對綠幕摳圖的結果大打折扣,

整個綠幕摳圖的原理可解釋為如下公式:

圖片

其中 圖片 為合成后影像,圖片為摳圖模型得到的透明通道圖,圖片表示前景,圖片表示新的背景,

圖片

圖10 綠幕摳圖模型

2.3 綠色抑制

為了解決綠幕摳圖中的顏色溢位問題,ZEGO 額外在網路后端增加了一個綠色抑制模塊,ZEGO 在該方案中制作了一批帶有綠色溢位的資料,并通過 AE 軟體提取其前景、alpha 圖隨后對前景進行綠色抑制得到抑制后的前景圖,因此,一個資料組包含了四個資料,分別是原始綠幕影像、alpha 圖、帶綠色溢位的前景、綠色抑制后的前景,

圖片

圖11 綠色抑制流程

在網路的訓練程序中,會先預測出不進行綠色抑制的前景影像,隨后進入綠色抑制器并對綠色溢位進行抑制,

最終的前景圖會和資料中的手動綠色抑制前景計算 L1 損失,并將梯度回傳更新網路引數,

其中 圖片 為預測的前景,圖片為真實的綠色抑制后的前景,

圖片

圖13 綠色抑制效果

ZEGO 綠幕分割,極致效果體驗

ZEGO 通過在演算法中嵌入多級綠色值,有效的改善了傳統綠幕在打光不均、綠幕不規范時出現的綠色殘留,同時 ZEGO 利用 GRU 模塊,增加了幀間資訊,有效的提升了 alpha 圖之間的連續性,榷訓了原始噪聲對摳圖的影響,并且 ZEGO 提出了自適應的顏色溢位機制,在解決顏色溢位的同時盡量不對其他顏色產生大的影響,ZEGO 綠幕摳圖在獲得好的摳圖效果同時,性能同樣優秀,實測在 RK3588 上對四路 1080P 視頻進行處理,每幀耗時僅 8 毫秒,

綠幕分割效果對比

除了綠幕分割能力之外,ZEGO 還支持任意背景分割能力,開發者可以利用這兩種能力實作背景虛化、虛擬背景、演講模式、多人實時同臺互動等業務場景,打造更多樣的互動體驗,

更多 ZEGO 綠幕分割資訊可點擊鏈接或下方閱讀原文查看:https://doc-zh.zego.im/article/16333

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556627.html

標籤:其他

上一篇:【后端面經-計算機基礎】HTTP和TCP的區別

下一篇:返回列表

標籤雲
其他(162090) Python(38266) JavaScript(25523) Java(18290) C(15238) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7285) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4611) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) HtmlCss(1987) .NET技术(1985) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1882) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 瞬間摳圖!揭秘 ZEGO 綠幕摳圖演算法背后的技術

    摳圖是影像處理中最常見的操作之一,指的是將影像中需要的部分從畫面中精確的提取出來。 摳圖的主要功能是為了后期的合成做準備。在 Photoshop 中,摳圖的方法有很多種,最常見的有通道摳圖、蒙版摳圖、鋼筆工具摳圖和快速選擇工具等。針對視頻的摳圖方法主要是基于keylight 插件對純色背景進行摳圖( ......

    uj5u.com 2023-07-06 08:24:47 more
  • 【后端面經-計算機基礎】HTTP和TCP的區別

    本文主要介紹了計算機網路中的兩個經典協議:http和tcp,簡單介紹兩者的報文結構,并結合面試題對兩者進行詳細說明。 ......

    uj5u.com 2023-07-06 08:16:51 more
  • 技術選型|K歌App中的實時合唱如何進行選型

    在線K歌軟體的開發有許多技術難點,需考慮到音頻錄制和處理、實時音頻傳輸和同步、音頻壓縮和解壓縮、設備兼容性問題等技術難點外,此外,開發者還應關注音樂著作權問題,確保開發的應用合規合法。 ......

    uj5u.com 2023-07-06 08:15:01 more
  • 自動化測驗到底是啥?

    什么是自動化測驗?顧名思義就是以程式測驗程式,自動執行指定動作,實作測驗目的。以代碼實作測驗思維,以腳本替代手工執行。從簡單的獨立功能腳本到依托自動化框架運行的腳本集合都屬于自動化測驗范疇。本文旨在通過討論以下幾個方面,總結自動化測驗價值最大化的經驗。 ......

    uj5u.com 2023-07-05 08:25:31 more
  • k8s 操作命令(合集List)

    ### k8s 操作命令 合集List ### 一、K8S最常用命令如下: 1、獲取pod資訊:kubectl get pod 2、查看指定pod的日志資訊:kubectl logs -f --tail(最后多少行) 500 podName(pod名) 3、查看pod的描述資訊:kubectl de ......

    uj5u.com 2023-07-05 08:25:11 more
  • Nftables堆疊溢位漏洞(CVE-2022-1015)復現

    Nftables 是一個基于內核的包過濾框架,用于 Linux作業系統中的網路安全和防火墻功能。nftables的設計目標是提供一種更簡單、更靈活和更高效的方式來管理網路資料包的流量。 ......

    uj5u.com 2023-07-05 08:24:43 more
  • 分布式事務的幾種實作方式

    ## 基礎理論 ### CAP理論 一致性(Consistency) :在分布式系統中所有的資料備份,在同一時刻都保持一致狀態,如無法保證狀態一致,直接回傳錯誤; 可用性(Availability):在集群中一部分節點故障,也能保證客戶端訪問系統并得到正確回應,允許一定時間內資料狀態不一致; 磁區容 ......

    uj5u.com 2023-07-05 08:23:59 more
  • 把langchain跑起來的3個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來的方法,如有錯誤歡迎糾正。 ......

    uj5u.com 2023-07-05 08:23:55 more
  • python介面自動化封裝匯出excel方法和讀寫excel資料

    一、首先需要思考,我們在頁面匯出excel,用python匯出如何寫入檔案的 封裝前需要確認python匯出excel介面回傳的是一個什么樣的資料型別 如下:我們先看下不對回傳結果做處理,直接接收資料型別是一個物件,無法獲取回傳值 ![image.png](https://p3-juejin.byt ......

    uj5u.com 2023-07-05 08:23:50 more
  • 我做了10年的測驗,由衷的建議年輕人別入這行了...

    兩天前,有個做功能測驗7年的同事被裁員了。這位老哥已經做到了團隊中的骨干了,人又踏實,結果沒想到剛剛踏入互聯網“老齡化”大關,就被公司給無情優化了。 現在他想找同型別的作業,薪資也一直被壓,考慮轉行轉型的話,上升空間又窄。昨天還在指點江山,今天已經過的緊緊巴巴,實在令人唏噓。 關鍵的是,這不是第一個 ......

    uj5u.com 2023-07-05 08:23:42 more