基于昇騰CANN的卡通圖像生成可在線體驗啦!十分鐘帶你了解CANN應用開發全流程

      網友投稿 712 2022-05-30

      2021年7月8日,第四屆世界人工智能大會在上海召開。華為輪值董事長胡厚崑在開幕式發表演講,其中提到:華為推出了異構計算架構CANN(Compute Architecture for Neural Networks),CANN作為昇騰AI處理器的發動機,支持業界多種主流的AI框架,包括MindSpore、TensorFlow、Pytorch、Caffe等,并提供1200多個基礎算子。同時,CANN具有開放易用的ACL(Ascend Computing Language)編程接口,并提供了網絡模型的圖級和算子級的編譯優化、自動調優等功能。CANN對上支持多種AI框架,對下服務AI處理器與編程,是提升昇騰AI處理器計算效率的關鍵平臺。

      如何理解CANN,如何使用CANN,特別是如何基于CANN開放易用的ACL編程接口實現神經網絡的快速部署呢?

      相信我們大部分開發者對于訓練一個模型并不陌生,但對于將該模型部署到邊緣側,做成一個應用落地,去產生價值(或者叫幫你賺錢?),可能就不是特別清楚了。但,一旦談到可以幫你去幫你賺錢,我相信你一定會感興趣的,對嗎?

      什么?賺錢!說到這個事兒,我就知道你不困了哈!

      我們發現在昇騰社區上已經提供了不少可在線體驗的案例,這些案例不但可以在線體驗效果,還可以進行在線實驗,同時開放了源代碼,可以通過開源社區提供的資源進行學習并給基于這些案例進行二次開發,真真正正的體驗、學習、開發三步走啊!

      那么我們選擇一些有意思的案例帶大家學習下基于CANN的昇騰AI應用開發過程,今天要給大家介紹的就是這個能夠吸引到你的卡通圖像生成應用,無論是漂亮的小姐姐還是可愛的小萌寵都能幫你秒級生成,如下圖,選擇預置圖片或者是上傳自己的私照,點擊“立即生成”即可體驗。

      首先介紹下如何找到該應用:

      進昇騰社區https://www.hiascend.com/

      開發者->應用案例,Ok,你已經可以看到那個狗狗了,案例標題是“卡通圖像生成”,點擊進去你就看到了。

      體驗就不說了,左邊選擇需要處理的圖片,也可以上傳自己的圖片,然后點擊生成就可以了,圖片會上傳到華為云昇騰AI計算資源上,推理后再回傳到前端展示,相隔千里卻仍能提供秒級體驗,這里要給個大贊!

      那么接下來言歸正傳,帶你了解基于CANN的應用開發流程。完整開發流程如下:

      0) 工程準備

      硬件:服務器及推理卡準備就緒, 安裝操作系統,配置網絡。

      訓練后的模型:Caffe、MindSpore、TensorFlow模型;

      1)模型轉換

      離線模型:Ascend310算子列表, ATC轉換工具。

      2) 算子開發及調試

      自定義算子開發:TBE DSL,TBE TIK等算子開發工具。

      3) 業務開發及調試

      ACL接口:資源初始化,數據傳輸,數據預處理,模型推理,數據后處理等。

      4)性能調優

      性能優化:瓶頸分析,內存優化,模型優化等。

      看起來還挺復雜的,對吧??但是我們呢,是來解決主要矛盾的(先完成應用開發),其他的優化過程(精度、性能等)留著以后慢慢消化,來日方長,不是么?

      廢話不多說了,假定模型我們已經有了,也符合我們的需求,模型呢也是昇騰AI處理器已經支持的模型(無需做算子開發),我們現在要做的就是理解模型,分析其前處理過程(給模型準備數據),后處理過程(結果展示),進行模型轉換得到離線模型,然后就是代碼開發了(其實就是調用CANN ACL的各種API完成模型加載、推理的過程而已), 這里選用python,CANN的pyACL用起來。

      總結一下,在本例中我們只需要搞定如下過程:

      理解模型 2. 模型轉換 3. 基于CANN ACL接口進行代碼開發

      1、理解模型

      Yang Chen、Yong-Jin LIU等人提出的算法?CartoonGAN: Generative Adversarial Networks for Photo Cartoonization基于GAN網絡,迭代訓練生成器和判別器,由判別器提供的對抗性損失約束,最終將自然圖片轉換為具有卡通風格的圖片,效果驚艷。

      下圖為卡通圖像生成的整體框架:

      以Generative Adversarial Networks(GAN)為基礎,其架構包括一個生成器(Generator)和一個判別器(Discriminator),通過迭代訓練兩個網絡,由判別器提供的對抗性損失約束,最終使得網絡能夠將自然圖片轉換為具有卡通風格的圖片結果,并且保持原圖片的內容信息。

      圖1 卡通圖像生成整體架構

      生成器結構

      生成器采用自編碼器,為全卷積結構,包括編碼器如圖3,解碼器如圖4。

      圖3 編碼器結構

      圖4 解碼器結構

      編碼器輸入為真實圖片,其架構由7×7的卷積核,步長為1的卷積層開始,隨后緊跟兩個步長為2的降采樣塊,進行特征提取,對風格圖片生成有用的信息將在這個過程中被提取。然后緊接4個殘差塊(Residual Block),用來重建內容特征。

      解碼器架構由5個殘差塊開始,通過兩個上采樣塊(步長為2)來實現對不同風格特征的重建,最后在添加一層使用7×7卷積核、步長為1的卷積層,得到最終輸出生成的卡通圖片結果。

      由于當前我們的目標是將訓練好的模型做成一個AI應用,所以這里只需要了解生成器就夠了,從上面的結構中可以看出,該模型的輸入是圖像,輸出也是圖像,那么預處理和后處理過程呢?

      原始模型預處理和后處理

      在Github能夠找到其測試腳本:https://github.com/taki0112/CartoonGAN-Tensorflow/tree/890decc647fbfd90a5314290b2771c496562ada8

      結合前面的理解,并通過對測試腳本的研讀,能夠理解其圖像預處理和后處理的方法

      昇騰CANN軟件棧提供了兩套專門用于數據預處理的工具,其中一套叫做AIPP(AI Preprocessing) ;另一套叫做DVPP(Digital Vision Preprocessing)。

      DVPP是CANN軟件棧中的數字視覺預處理模塊,昇騰310 AI處理器支持摳圖縮放、jpeg編解碼、視頻編解碼、png解碼等功能。詳細請參考昇騰社區文檔:

      https://support.huaweicloud.com/devg-cannApplicationDev330/atlasapi_07_0131.html

      AIPP用于在AI Core上完成圖像預處理,包括色域轉換(轉換圖像格式)、圖像歸一化(減均值/乘系數)和摳圖(指定摳圖起始點,摳出神經網絡需要大小的圖片)等,靜態AIPP可以在ATC模型轉換時通過設置參數完成,比較方便。詳細請參考昇騰社區文檔:https://support.huaweicloud.com/tg-cannApplicationDev330/atlasatc_16_0015.html

      在這里,我們假設你已經了解了DVPP和AIPP,那么基于對原始模型的理解,在圖像預處理時DVPP和AIPP如下分工(分工的原則:DVPP+AIPP的處理要等價于原始模型的預處理過程):

      DVPP:

      1.解碼:JPEG圖片先解碼為YUV420SP,輸出寬128,高16對齊,例如:若輸入原始圖像大小為(500, 375) 經過解碼后圖像大小變為(512, 384)

      2.圖像縮放:使用DVPP的VPC接口將圖像縮放為模型要求的大小(256,256),要求寬16,高2對齊,將(512,384)圖像中的有效數據(500,375)縮放到(256,256)

      注:這里也可以考慮等比例縮放,但由于等比例縮放要涉及到用AIPP裁剪,后期再講。

      AIPP:

      1.色域轉換:YUV->RGB

      2.圖像標準化,AIPP配置mean_chn=[127.5,127.5,127.5] min_chn=[0.5,0.5,0.5] var_reci_chn=[0.007874,0.007874,0.007874]

      2)后處理

      根據原始模型圖像后處理流程,將圖像像素轉換到[0,255],然后進行保存。該過程直接使用scipy庫實現。

      2、模型轉換

      原始網絡模型是TensorFlow框架模型,而昇騰CANN軟件棧需要的模型是.om離線模型,因此,需要通過ATC模型轉換工具將.pb文件轉換為Ascend 310處理器支持的Davinci模型文件。

      ATC模型轉換指令:

      atc --output_type=FP32 --input_shape="train_real_A:1,256,256,3" --input_format=NHWC --output="./cartoonization" --soc_version=Ascend310 --insert_op_conf=./insert_op.cfg --framework=3 --model="./cartoonization.pb" --precision_mode=allow_fp32_to_fp16

      重要參數說明:

      --model:原始模型文件路徑與文件名。

      --output:轉換后的離線模型的路徑以及文件名。

      --precision_mode=allow_fp32_to_fp16:設置網絡模型的精度模式,優先保持原圖精度,如果網絡模型中算子支持float32,則保留原始精度float32;如果網絡模型中算子不支持float32,則直接降低精度到float16。

      --insert_op_conf:插入算子的配置文件路徑與文件名,例如AIPP預處理算子。

      AIPP配置文件,根據原始模型需處理進行AIPP文件配置,本模型的配置文件見下圖:

      更多參數介紹可閱讀:https://support.huaweicloud.com/atctool-cann502alpha5infer/atlasatc_16_0037.html

      3、應用開發

      應用采用了下圖所示的模塊化設計,通過各模塊之間的協調配合完成一張圖片的推理輸出。

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

      1.運行資源申請;

      2.加載模型文件,申請模型輸入輸出內存;

      3.數據獲取,獲取要進行推理的原始圖像;

      4.數據預處理,模型的輸入圖像進行預處理;

      5.模型推理,將預處理后的數據輸入到模型進行推理;

      6.推理結果解析,將推理結果進行后處理。

      源碼就不在這里show了,昇騰社區提供了更好的學習路徑,可以直接通過在線實驗學習開發過程,直接點擊右上側的在線實驗,即可免費體驗。

      體驗完畢后,大家還可以移步開源倉庫去獲取源碼,如果有任何問題,鼓勵大家去提issue與開發人員直接交流。

      https://gitee.com/ascend/samples/tree/master/python/contrib/cartoonGAN_picture

      相關鏈接

      模型論文參考鏈接如下:

      基于昇騰CANN的卡通圖像生成可在線體驗啦!十分鐘帶你了解CANN應用開發全流程

      https://openaccess.thecvf.com/content_cvpr_2018/papers/Chen_CartoonGAN_Generative_Adversarial_CVPR_2018_paper.pdf

      原始模型部署鏈接如下:

      https://gitee.com/syz825211943/cartoonization

      相關源碼可以在開源倉庫如下地址中獲取:

      https://gitee.com/ascend/sample

      MindSpore TensorFlow 昇騰

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:android注解使用詳解(圖文)
      下一篇:打開order by的大門,一探究竟《死磕MySQL系列 十二》
      相關文章
      国产亚洲精品看片在线观看| 国产自偷亚洲精品页65页| 亚洲精品制服丝袜四区| 亚洲国产精品无码久久九九| 国产精品亚洲а∨天堂2021| 国产91成人精品亚洲精品| 国产精品亚洲精品久久精品| 爱情岛亚洲论坛在线观看| 国产亚洲精品免费| 久久亚洲精品无码av| 一级毛片直播亚洲| 亚洲国产精品一区二区第一页免| 深夜国产福利99亚洲视频| 亚洲国产精品成人网址天堂| 亚洲JIZZJIZZ中国少妇中文| 亚洲人成无码网站久久99热国产| 亚洲人成国产精品无码| 久久久亚洲精品蜜桃臀| 亚洲乱码国产乱码精品精| 久久久久亚洲精品影视| 久久亚洲私人国产精品vA| 亚洲成年人电影在线观看| 色老板亚洲视频免在线观| 亚洲精品天堂成人片AV在线播放 | 亚洲av无码专区在线电影天堂 | 亚洲精品永久在线观看| 在线播放亚洲精品| 亚洲国产成人影院播放| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲a∨无码精品色午夜| 亚洲国产综合久久天堂| 亚洲精品国产成人片| 91亚洲国产成人精品下载| 亚洲一级毛片免费看| 亚洲日本VA午夜在线电影| 国产亚洲情侣久久精品| 亚洲乱色熟女一区二区三区丝袜 | 亚洲成a人片在线观看无码专区| 亚洲成av人片在线观看无码不卡| 久久精品国产亚洲AV香蕉| 亚洲天堂免费在线|