寶藏昇騰AI應用推薦!CANN帶你體驗黑白圖像自動上色的快樂~


摘要:屬於“你”那邊的麥田 天空 河水 駿馬 樹木……會是什么顏色呢?

黑白與色彩

似乎把時代分割了兩半~

我在這頭看見了錯亂繁華,琳琅滿目,看見快速消長的色彩繽紛。

翻開一張黑白照片

我能看到世代流傳的印記,一種歷久彌新的美

我能看到但我卻又看不到“你”能看到的景色

這看似不經意的一眼卻在我心里猶如驚鴻一瞥

令人望而生畏

卻又不住的悄然幻想

屬於“你”那邊的麥田 天空 河水 駿馬 樹木……

會是什么顏色呢?

就在此刻的定格

我願把萬千色彩賦予給“你”,

帶你共同體驗這萬千繁華盛景~

黑白圖像上色模型原理

本應用基於昇騰AI異構計算架構CANN,使用黑白圖像上色模型搭建,適用於Atlas 200 DK及Atlas 300I等相關推理產品。

對物件(包括背景色)(L通道代表的灰度圖)使用卷積運算提取特征,然后同樣用卷積進行分類,從而嘗試給出對灰度圖片每個像素點的色彩預期(ab通道)。然后,將ab通道的值resize到原始圖片寬高並與L通道疊加后,轉為RGB圖片即可得到彩色圖像。其中模型的輸入為L通道的數據(224,224,1),輸出為ab通道的數據(56,56,2)。

我們也可以通過開源模型的測試腳本來理解原始模型的輸入和輸出,以及輸入前的計算過程(也叫前處理)和輸出后的處理過程(也叫后處理)。

預處理過程:RGB格式讀入轉Lab,resize到224224,提取L通道,減均值(-50)
后處理過程:推理的結果ab通道,resize到224224,與輸入L合並為Lab,轉RGB,保存為jpeg圖片

模型原始鏈接:https://github.com/richzhang/colorization

准備模型

昇騰張量編譯器ATC(Ascend Tensor Compiler)可以將開源框架的網絡模型(如Caffe、TensorFlow等)以及Ascend IR定義的單算子描述文件換成昇騰AI處理器支持的離線模型,模型轉換過程中可以實現算子調度的優化、權重數據重排、內存使用優化等,可以脫離設備完成模型的預處理。

使用ATC將黑白圖像上色模型轉換為昇騰AI處理器支持的離線模型命令如下:

atc --input_shape="data_l:1,1,224,224" --weight="./colorization.caffemodel" --input_format=NCHW --output="./colorization" --soc_version=Ascend310 --framework=0 --model="./colorization.prototxt"

應用開發

本應用采用了下圖所示的模塊化設計,通過各模塊之間的協調配合完成一張圖片的推理輸出;對視頻的推理也是一樣的,可以直接參考開源倉中的源碼實現。在這里就不再贅述了。

其中各個模塊的主要功能點如下所示:

  • 運行管理資源申請

用於初始化系統內部資源,固定的調用流程。

  • 加載模型文件並構建輸出內存

從文件加載離線模型數據,需要由用戶自行管理模型運行的內存,根據內存中加載的模型獲取模型的基本信息包含模型輸入、輸出數據的數據buffer大小;由模型的基本信息構建模型輸出內存,為接下來的模型推理做好准備。

  • 數據預處理

接收外界傳遞的圖像數據,對讀入的圖像數據進行預處理,然后構建模型的輸入數據。

  • 模型推理

根據構建好的模型輸入數據進行模型推理。

  • 解析推理結果

根據模型輸出,解析模型的推理結果。使用opencv將轉換后的彩色圖像數據保存成圖片文件。

預處理圖像

圖像預處理部分,使用opencv的imread接口讀取圖片,讀取出來的是BGR格式。

模型輸入為224×224,因此需要把讀取到的圖像resize到224×224。Resize后對數據做歸一化處理。

如算法設計部分所言,該模型采用Lab色彩空間,因此需要把BGR格式轉為Lab格式數據。該模型用L通道數據預測出可能的ab空間數據,所以要從Lab數據中分離出L通道數據。再對所得的數據減均值,即可得到模型需要的輸入數據。

模型推理

模型推理部分,關鍵流程說明如下:

1. 調用aclmdlCreateDesc接口創建描述模型基本信息的數據類型;

modelDesc_ = aclmdlCreateDesc();

2. 調用aclmdlGetDesc接口根據模型加載中返回的模型ID獲取模型基本信息。aclError ret = aclmdlGetDesc(modelDesc_, modelId_);

3. 准備模型推理的輸入、輸出數據;

4. 執行模型推理,調用aclmdlExecute接口;aclError ret = aclmdlExecute(modelId_, input_, output_);

5. 獲取模型推理的結果,用於后續處理。

6. 釋放內存。調用aclrtFree接口釋放Device上的內存。釋放相關數據類型的數據。在模型推理結束后,需及時調用aclDestroyDataBuffer接口和aclmdlDestroyDataset接口釋放描述模型輸入的數據,且先調用aclDestroyDataBuffer接口,再調用aclmdlDestroyDataset接口。如果存在多個輸入、輸出,需調用多次aclDestroyDataBuffer接口。

后處理部分

圖像后處理部分,使用opencv。對於模型推理得到預測出的ab空間數據。

首先把得到的數據resize回原圖像大小,然后和原圖像L通道數據合並,即得到完整Lab圖像。

把Lab圖像轉回BGR格式即可保存為jpeg圖片,得到上色后的圖像。

黑白圖像上色是一種藝術,也是一門技術~

昇騰AI“黑白圖像上色” 應用已經上線,只需一點,即可上色!

本案例地址:https://www.hiascend.com/zh/developer/mindx-sdk/cartoon/990674866img?fromPage=1

在這個時代,一種新的顏色,就可以代表一種新的情緒,一個新的視角。

單調的黑白色似乎已經不足以滿足我們的需求~

讓AI科技帶你詮釋不一樣的美~

同時,點擊在線實驗,還可以體驗該應用是如何用CANN開發出來的;

該應用的源碼在gitee和github都有開源,點擊上面的github、gitee直達源碼倉,大家可以基於源碼進行二次開發。

更多應用案例和源碼:

應用案例地址https://www.hiascend.com/developer/case-studies

源碼地址:https://gitee.com/ascend/samples/

黑白圖像上色示例圖

打開網站不僅可以體驗一秒上色的快樂~~

還可以直接獲取到公開的源碼,邊體驗邊學習,還能在自己的Ascend的設備上直接玩轉!

對科技的堅持正在改變世界,而我們不能改變這個世界也要好好體驗所有的美好~

這款網頁應用既簡單又有趣,非常適合給老照片、黑白照以及各種單色調照片上色!

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM