PaddlePaddle : AI摳圖及圖片合成
透過預訓練模型進行影像的自動摳圖及整合。
程式碼已經共享在AIStudio上,連結:
模型概述 DeepLabv3+ 是Google DeepLab語義分割系列網路的最新作,其前作有 DeepLabv1,DeepLabv2, DeepLabv3。在最新作中,作者透過encoder-decoder進行多尺度資訊的融合,同時保留了原來的空洞卷積和ASSP層, 其骨幹網路使用了Xception模型,提高了語義分割的健壯性和執行速率,在 PASCAL VOC 2012 dataset取得新的state-of-art performance。該PaddleHub Module使用百度自建資料集進行訓練,可用於人像分割,支援任意大小的圖片輸入。
命令列預測示例 $ hub run deeplabv3p_xception65_humanseg --input_path "/PATH/TO/IMAGE" $ hub run deeplabv3p_xception65_humanseg --input_file test.txt test.txt 存放待分割圖片的存放路徑
API def segmentation(data) 用於人像分割
引數
data:dict型別,key為image,str型別;value為待分割的圖片路徑,list型別。 output_dir:生成圖片的儲存路徑,預設為 humanseg_output
返回
result:list型別,每個元素為對應輸入圖片的預測結果。預測結果為dict型別,有以下欄位:
origin 原輸入圖片路徑 processed 分割圖片的路徑。
In[1]
cd work
/home/aistudio/work
先定義摳圖的函式,透過呼叫影像分割模型摳圖
In[7]
def body_seg_fore(imgname):
module = hub.Module(name="deeplabv3p_xception65_humanseg")
test_img_path = "./"+imgname+".jpg"
# 預測結果展示
img = mpimg.imread(test_img_path)
plt.imshow(img)
plt.axis('off')
plt.show()
# set input dict
input_dict = {"image": [test_img_path]}
# execute predict and print the result
results = module.segmentation(data=input_dict)
for result in results:
print(result)
test_img_path = "./humanseg_output/"+imgname+".png"
img = mpimg.imread(test_img_path)
plt.imshow(img)
plt.axis('off')
plt.show()
return test_img_path
In[8]
body_seg_fore('body2')
[2020-01-10 06:39:53,705] [ INFO] - Installing deeplabv3p_xception65_humanseg module
2020-01-10 06:39:53,705-INFO: Installing deeplabv3p_xception65_humanseg module
[2020-01-10 06:39:53,753] [ INFO] - Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
2020-01-10 06:39:53,753-INFO: Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
[2020-01-10 06:39:54,539] [ INFO] - 0 pretrained paramaters loaded by PaddleHub
2020-01-10 06:39:54,539-INFO: 0 pretrained paramaters loaded by PaddleHub
{'origin': './body2.jpg', 'processed': 'humanseg_output/body2.png'}
'./humanseg_output/body2.png'
定義圖片合成函式。
In[12]
#圖片整合
#foreimage:前景照片,baseimage:景區照片,outputimage:資料結果,rate:前景照片縮放比例
def combine_image(foreimage,baseimage,outputimage,rate):
from PIL import Image
base_img = Image.open(baseimage)
BL, BH = base_img.size
#讀取要貼上的圖片 RGBA模式
#當需要將一張有透明部分的圖片貼上到一張底片上時,如果用Python處理,可能會用到PIL,
#但是PIL中 有說明,在貼上RGBA模式的圖片是,alpha通道不會被帖上,也就是不會有透明的效果,
#當然也給出瞭解決方法,就是貼上的時候,將RGBA的的alpha通道提取出來做為mask傳入。
fore_image = Image.open(foreimage)
L, H = fore_image.size
#縮放
fore_image = fore_image.resize((int(L * rate), int(H * rate)))
L, H = fore_image.size
#分離通道
r,g,b,a = fore_image.split() #貼上
box=(int(BL/2-L/2), BH-H, int(BL/2+L/2) ,BH)
base_img.paste(fore_image,box,mask = a)
base_img.save(outputimage) # 儲存圖片
#輸出程式
def show_image(originimage,baseimage,outputimage,rate):
segname=body_seg_fore(originimage)
combine_image(segname,baseimage,outputimage,rate)
img = mpimg.imread(outputimage)
plt.imshow(img)
plt.axis('off')
plt.show()
return test_img_path
結果展示:
In[14]
show_image('body2','./desert.jpg','body2_desert.jpg',2)
[2020-01-10 06:42:43,724] [ INFO] - Installing deeplabv3p_xception65_humanseg module
2020-01-10 06:42:43,724-INFO: Installing deeplabv3p_xception65_humanseg module
[2020-01-10 06:42:43,746] [ INFO] - Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
2020-01-10 06:42:43,746-INFO: Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
[2020-01-10 06:42:44,629] [ INFO] - 0 pretrained paramaters loaded by PaddleHub
2020-01-10 06:42:44,629-INFO: 0 pretrained paramaters loaded by PaddleHub
{'origin': './body2.jpg', 'processed': 'humanseg_output/body2.png'}
'./humanseg_output/body2.png'
In[18]
show_image('body1','./desert.jpg','body2_desert.jpg',0.3)
[2020-01-10 06:44:26,397] [ INFO] - Installing deeplabv3p_xception65_humanseg module
2020-01-10 06:44:26,397-INFO: Installing deeplabv3p_xception65_humanseg module
[2020-01-10 06:44:26,423] [ INFO] - Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
2020-01-10 06:44:26,423-INFO: Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg
[2020-01-10 06:44:27,592] [ INFO] - 0 pretrained paramaters loaded by PaddleHub
2020-01-10 06:44:27,592-INFO: 0 pretrained paramaters loaded by PaddleHub
{'origin': './body1.jpg', 'processed': 'humanseg_output/body1.png'}
'./humanseg_output/body2.png'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69922494/viewspace-2673934/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mac圖片摳圖軟體InPixio Photo Cutter輕鬆摳圖Mac
- 圖片摳圖線上工具推薦
- 【Python案例】用某度AI介面實現摳圖並改圖片底色PythonAI
- PHP 圖片、文字合成PHP
- golang 合成的圖片Golang
- FFmpeg 圖片合成影片
- 美圖秀秀怎麼摳圖?美圖秀秀對圖片進行圓形摳圖的教程
- 圖片合成工具類(BitmapMergeUtils)
- 視訊提取圖片/圖片合成視訊ffmpeg(二十)
- AI圖片AI
- PHP 圖片合成(2合1)PHP
- PhotosBlender for Mac(圖片合成軟體)Mac
- 電商圖片線上製作,可摳圖可寫文案
- 圖片上傳及圖片處理
- 不用自己摳圖的主圖設計工具,免費幫你摳圖!
- canvas實現二維碼和圖片合成Canvas
- Mac上圖片合成軟體哪個好?Mac
- JavaScript中的圖片處理與合成(四)JavaScript
- JavaScript中的圖片處理與合成(一)JavaScript
- JavaScript中的圖片處理與合成(二)JavaScript
- ImageCombiner - Java服務端圖片合成工具,好用!Java服務端
- 某AI圖片生成網AI
- mac摳圖軟體推薦:Topaz Mask AI mac版MacAI
- 無需下載軟體怎麼將多張圖片組合成一張圖片
- 【326】PIL 截圖及圖片識別
- 利用Python講多張圖片合成PDF檔案Python
- GD 庫 PNG 透明底圖片新增文字及圖片水印
- 5.PS摳圖大法
- 摳圖大師TouchRetouch——MacwMac
- AI已進入谷歌圖片AI谷歌
- 人工智慧AI摳圖Topaz Mask AI 可以幫助我們做到什麼人工智慧AI
- ps摳圖教程之半透明婚紗摳取
- 淺談Flutter web 圖片選擇器及圖片壓縮FlutterWeb
- 在python中將多張圖片合成為視訊Python
- 別再自己摳圖了,Python用5行程式碼實現批量摳圖Python行程
- 前端手勢控制圖片外掛書寫四(圖片上傳及Ios圖片方向問題)前端iOS
- 如何在影片裡任意摳圖?
- PS 摳圖幾種典型方法