【虎虎生威迎虎年】对穿肠之PaddleBoBo
【虎虎生威迎虎年】對穿腸之PaddleBoBo
一、引入
主要思路如下:
- 使用PaddleHub的ernie_gen_couplet模型生成虎年相關的對聯
- 使用PaddleBoBo把虛擬主播圖片和對聯生成視頻
1.春聯
春聯是過年時所貼的紅色喜慶元素“年紅”中一個種類,它以對仗工整、簡潔精巧的文字描繪美好形象,抒發美好愿望,是中國特有的文學形式,是華人們過年的重要習俗。當人們在自己的家門口貼年紅(春聯、福字、窗花等)的時候,意味著過春節正式拉開序幕。
一說春聯來源于桃符。據《后漢書·禮儀志》說,桃符長六寸,寬三寸,桃木板上書“神荼”、“郁壘”二神。“正月一日,造桃符著戶,名仙木,百鬼所畏。”五代時,西蜀的宮廷里,有人在桃符上題寫聯語。清代《燕京時歲記》上說:“春聯者,即桃符也。”
春聯的另一來源是春貼,古人在立春日多貼“宜春”二字,后漸漸發展為春聯,表達了中國勞動人民一種辟邪除災、迎祥納福的美好愿望。
在東漢以后,形成與門神配套的文化儀規,強化門神驅邪辟鬼,衛家宅,保平安,助功利,降吉祥等功能。古代對于貼年畫和貼春聯,有個專用名詞叫“封印”,不論是掛桃符、貼年畫和春聯,皆有操作的規矩。“封印”,是指封閉已經掃除干凈,清理整潔的內在場態,讓邪氣妖氛不能再進入家中。 “封”,是封閉、阻隔之義; “印”,則是標示于顯隱兩境,我已經封起來了。
據說這一習俗起于宋代,在明代開始盛行,到了清代,春聯的思想性和藝術性都有了很大的提高。現在貼春聯已成風俗,紅色的對聯貼在大門上,房子頓時生輝。正如詩云:“喜氣臨門紅色妍,家家戶戶貼春聯;舊年辭別迎新歲,時序車輪總向前。”
2.虎年來歷
虎在十二生肖中位居第三,在十二地支配屬“寅”,故一天十二時辰中之“寅時”清晨三點至五點又稱“虎時”。
在遠古時候,屬相中有獅子,沒有老虎。由于獅子太兇殘,名聲不好,主管封屬相的玉皇大帝想把獅子除名,但是又必須補進一位鎮管山林的動物。這時,玉帝想到殿前的虎衛士。
天宮的虎衛士從前也只是地上的一種不出名的動物。它從貓師傅那里學得抓、撲、咬、剪、沖、躍、折等十八般武藝后,成為山林中的勇士。凡是和它較量的,不死即傷。從此,老虎雄霸山林。后來,玉帝聽說老虎勇猛無比,便下旨傳老虎上天。老虎上天之后,同玉帝的衛士較量,贏得勝利。從此,老虎便成了天宮的殿前衛士。
誰知不久之后,地上的飛禽走獸見無人鎮管,開始胡作非為起來。給人間造成了災難,這事驚動了土地神,土地神連忙上報天庭,請玉帝派統天神鎮住百獸。玉帝便派老虎下凡,老虎要求每勝一次,便給它記一功。玉帝只求人間安寧,當然滿口答應老虎的要求。
來了凡間,老虎了解到獅子、熊、馬是當時最厲害的三種動物。它就專門向這三種動物挑戰。憑著老虎的勇猛和高超的武藝連接擊敗了獅子、熊、馬。其他惡獸聞風而逃,藏進了無人居住的森林荒野。人間歡聲動地,感謝老虎為人世間立了功。
回到天上,玉帝因老虎連勝三獸,便在它的前額刻下了三條橫線。后來,人間又受到東海龜怪的騷擾,大地一片汪洋。蝦兵蟹將作惡人間,老虎又來到凡間,咬死了龜怪。玉帝一高興,又給老虎記一大功,在額頭的三橫之中又添了一豎。一個醒目的“王”字在老虎前額。從此,老虎便為百獸之王,總管百獸。時至今天,虎額上也還可見到威風的“王”字。
在獅子的惡名傳來天宮后,玉帝便決定除去獅子的屬相頭銜,補進了獸王虎。從此,虎成為了屬相,獅子則被貶到遙遠的南方去了。當然,老虎也從玉帝的殿前衛士下凡間,永保下界安寧。今天也還有虎符、虎環、虎雕等除災免禍的鎮邪物。在農村,不少人家也喜歡給孩子戴虎頭帽、穿虎頭鞋,這是圖個趨吉避邪,吉祥平安。
凌晨3-5時(即“寅時”)。據古書載。這時候,老虎是最活躍、最兇猛、傷人最多,因此寅時同虎搭配。
3.一鍵對聯生成的示例
引用: [PaddleHub一鍵對聯生成(例:上海自來水來自海上,山東落葉松葉落東山)](https://aistudio.baidu.com/aistudio/projectdetail/690991]
對聯輸入:
'上海自來水來自海上' '人增福壽年增歲', '風吹云亂天垂淚', '眉目傳情無眉目', '一城花雨山河壯', '龍鳳呈祥火樹銀花引來五洲比翼鳥' '世事少從容將滿腹怨尤向她傾訴', '早點起來吃早點', '舉杯接月色', '躍馬揚鞭一路春風追國夢', '夜總空空月圓是我月缺還是我', '昆明黑龍潭兩樹梅花一潭水'對聯輸出:
['山東落花生花落東山', '山東飛機場機飛東山', '中山藏經樓經藏山中', '山東落葉松葉落東山', '長春鮮花開花鮮春長'] ['春滿乾坤喜滿門', '竹報平安梅報春', '春滿乾坤福滿門', '春滿乾坤酒滿樽', '春滿乾坤喜滿家'] ['雨打花殘地痛心', '雨打花殘地皺眉', '雨打花殘地動容', '雨打霜欺地動容', '雨打花殘地灑愁'] ['舌頭費力有舌頭', '口頭許愿有口頭', '口頭打架有口頭', '口頭打架止口頭', '手足失措有手足'] ['萬里春風氣象新', '萬里春風歲月新', '滿苑春風草木榮', '滿苑春風歲月新', '滿苑春風天地新'] ['山川毓秀歡聲笑語迎進四海連理枝', '山川毓秀歡聲笑語招得四海連理枝', '山川毓秀歡聲笑語迎接四海同心人', '山川毓秀歡聲笑語招入萬國來賓商', '山川毓秀歡聲笑語迎進四海連心橋'] ['人生多坎坷有一腔熱血待我耕耘', '人生多坎坷有一腔熱血對我敞開', '人生多坎坷卻一腔心血對我敞開', '人生多坎坷有一腔熱血對我敞懷', '人生多坎坷有一腔心事對我說明'] ['先生坐下拜先生', '元宵宵里吃元宵', '夜宵坐下想夜宵', '元宵宵里樂元宵', '元宵宵里品元宵'] ['把酒問青天', '提筆賦秋風', '提筆賦梅花', '提筆賦秋香', '提筆賦春光'] ['聞雞起舞九州豪杰繪宏圖', '聞雞起舞九天曙色耀人寰', '聞雞起舞九州豪杰繪鴻圖', '聞雞起舞九天曙色耀中華', '聞雞起舞九天曙色煥人文'] ['情猶切切云卷隨風云舒又隨風', '情猶切切云卷隨風云舒亦隨風', '情猶切切云卷如風云舒復如風', '情難了了人去隨風人來又隨風', '情猶切切云卷隨風云舒復隨風'] ['杭州西子湖四時風月半湖蓮', '杭州西子湖四時煙雨半湖云', '杭州西子湖四時風光半湖蓮', '杭州西子湖四圍山色半湖光', '杭州西子湖四時風景半湖蓮']4.PaddleBoBo主播
參考: PaddleHub元宇宙直通車:手把手教你造個虛擬數字人! - 飛槳AI Studio - 人工智能學習實訓社區
元宇宙時代已經來臨,當你看到網絡新聞上形形色色的虛擬人的時候,是不是有些心動?
你是否跟以前的我一樣會想創造虛擬人需要很大的成本和技術投入,普通開發者單槍匹馬根本無法辦得到?
現在這些都不再是問題,PaddleHub助你快速實現!
二、前要
1.寫對聯的要求
對聯文字長短不一,短的僅一、兩個字;長的可達幾百字。對聯形式多樣,有正對、反對、流水對、聯球對、集句對等。但不管何類對聯,使用何種形式,都必須具備以下特點:
此外,張掛的對聯,傳統作法還必須直寫豎貼,自右而左,由上而下,不能顛倒。與對聯緊密相關的橫批,可以說是對聯的題目,也是對聯的中心。好的橫批在對聯中可以起到畫龍點睛、相互補充的作用。
2.公開對聯數據集介紹
模型所用的公開對聯數據集是couplet-clean-dataset。此數據集基于couplet-dataset的70w條數據集,在此基礎上利用敏感詞詞庫對數據進行了過濾,刪除了低俗或敏感的內容,刪除后剩余約74w條對聯數據。原有的70多萬條數據集中包含了較多的低俗或敏感內容,不太適合商用場景。如有對數據集有更具體的了解訴求,可以前往該數據集repo地址詳細了解如何下載數據、數據過濾規則等信息。
3.對聯生成模型介紹
更多詳情可以參考論文:ERNIE-GEN:An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation
4.PaddleBoBo介紹
PaddleBoBo是基于飛槳PaddlePaddle深度學習框架和PaddleSpeech、PaddleGAN等開發套件的虛擬主播快速生成項目。PaddleBoBo致力于簡單高效、可復用性強,只需要一張帶人像的圖片和一段文字,就能快速生成一個虛擬主播的視頻;并能通過簡單的二次開發更改文字輸入,實現視頻實時生成和實時直播功能。
-
PaddleBoBo虛擬主播實時直播演示 - Bilibili
-
PaddleBoBo虛擬主播豎版生成演示 - Bilibili
-
PaddleBoBo虛擬主播橫版生成演示 - Bilibili
三、生成對聯
注:我們的模型可以在CPU和GPU下執行,但由于AI Studio高級版(GPU)十分難以搶到,因此在這里為大家演示在cpu版下實操;如果要用GPU運行,需要切換到AI Studio GPU高級版,并且設置use_cuda=True
1.環境依賴
在完成對聯生成前,需要先完成PaddlePaddle的安裝和PaddleHub的安裝,并且要求paddlepaddle >= 1.8.0,paddlehub >= 1.7.0;AI Studio已經為各位開發者提供好了PaddlePaddle框架以及PaddleHub預訓練模型管理工具,因為我們只需要滿足版本,就可以使用對聯生成模型,完成一鍵對聯生成。PaddleHub為各位開發者準備了兩種方式實現對聯生成,詳情請見3-2(命令行一鍵生成)和3-3(API調用生成)內容。
注:需要更新paddlehub以達到對聯生成模型的環境依賴要求;下圖是AI Studio默認的初始版本,其中paddlehub的版本并未達到我們的環境需求,因此需要更新
!pip install paddlehub --upgrade -i https://mirror.baidu.com/pypi/simple #(升級paddlehub)2.命令行方式一鍵生成對聯
PaddleHub在設計時,為模型的管理和使用提供了命令行工具,也提供了通過命令行調用PaddleHub模型完成預測的方式。下面是基于命令行的hub run命令完成的對聯生成,更多paddlehub命令行操作說明
# 命令行一鍵對聯生成!hub run ernie_gen_couplet --input_text '虎虎生威迎虎年' --use_gpu False --beam_width 103.API方式一鍵生成對聯
通過預測API,給出上聯,程序自動生成下聯。
import paddlehub as hubmodule = hub.Module(name="ernie_gen_couplet")test_texts = [ "虎躍龍騰生紫氣"] results = module.generate(texts=test_texts, use_gpu=False, beam_width=50) for result in results:print(result) /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import MutableMapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import Iterable, Mapping /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import SizedDownload https://bj.bcebos.com/paddlehub/paddlehub_dev/ernie_gen_couplet.tar.gz [##################################################] 100.00% Decompress /home/aistudio/.paddlehub/tmp/tmpz3z6aez6/ernie_gen_couplet.tar.gz [##################################################] 100.00%[2022-01-22 22:08:13,694] [ INFO] - Successfully installed ernie_gen_couplet-1.1.0 [2022-01-22 22:08:13,974] [ INFO] - Downloading https://paddlenlp.bj.bcebos.com/models/transformers/ernie/ernie_v1_chn_base.pdparams and saved to /home/aistudio/.paddlenlp/models/ernie-1.0 100%|██████████| 392507/392507 [00:10<00:00, 36929.61it/s] [2022-01-22 22:08:24,680] [ DEBUG] - init ErnieModel with config: {'attention_probs_dropout_prob': 0.1, 'hidden_act': 'relu', 'hidden_dropout_prob': 0.1, 'hidden_size': 768, 'initializer_range': 0.02, 'max_position_embeddings': 513, 'num_attention_heads': 12, 'num_hidden_layers': 12, 'type_vocab_size': 2, 'vocab_size': 18000, 'pad_token_id': 0} W0122 22:08:24.683709 101 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0122 22:08:24.688863 101 device_context.cc:465] device: 0, cuDNN Version: 7.6. [2022-01-22 22:08:29,431] [ INFO] - loading pretrained model from /home/aistudio/.paddlenlp/models/ernie-1.0/ernie_v1_chn_base.pdparams [2022-01-22 22:08:30,104] [ INFO] - param:mlm_bias not set in pretrained model, skip [2022-01-22 22:08:30,106] [ INFO] - param:mlm.weight not set in pretrained model, skip [2022-01-22 22:08:30,108] [ INFO] - param:mlm.bias not set in pretrained model, skip [2022-01-22 22:08:30,109] [ INFO] - param:mlm_ln.weight not set in pretrained model, skip [2022-01-22 22:08:30,111] [ INFO] - param:mlm_ln.bias not set in pretrained model, skip [2022-01-22 22:08:33,631] [ INFO] - Downloading https://paddlenlp.bj.bcebos.com/models/transformers/ernie/vocab.txt and saved to /home/aistudio/.paddlenlp/models/ernie-1.0 [2022-01-22 22:08:33,634] [ INFO] - Downloading vocab.txt from https://paddlenlp.bj.bcebos.com/models/transformers/ernie/vocab.txt 100%|██████████| 90/90 [00:00<00:00, 5352.46it/s]['鶯歌燕舞慶新春', '風調雨順兆豐年', '鶯歌燕舞鬧春光', '鶯歌燕舞鬧春風', '鶯歌燕舞賀新春', '鶯歌燕舞兆豐年', '鶯歌燕舞頌華年', '人歡馬叫慶新春', '鶯歌燕舞唱春風', '人歡馬叫兆豐年', '山歡水笑沐春風', '鶯歌燕舞醉春風', '鶯歌燕舞笑春風', '鶯歌燕舞報佳音', '鶯歌燕舞蔚春風', '鶯歌燕舞鬧新春', '鶯歌燕舞涌春潮', '山歡水笑鬧新春', '山歡水笑涌春潮', '鶯歌燕舞沐春風', '鶯歌燕舞賀新年', '鶯歌燕舞樂春風', '鶯歌燕舞慶陽春', '鶯歌燕舞報新春', '人歡馬叫鬧新春', '山歡水笑兆豐年', '鶯歌燕舞頌陽春', '鶯歌燕舞喚春風', '鶯歌燕舞起祥云', '鶯歌燕舞頌春風', '人歡馬叫鬧春風', '鶯歌燕舞慶豐年', '鶯歌燕舞送春風', '鶯歌燕舞送吉祥', '鶯歌燕舞慶祥和', '人歡馬叫慶豐年', '鶯歌燕舞播春光', '花香鳥語賀新春', '山歡水笑賀新春', '鶯歌燕舞慶華年', '山歡水笑慶新春', '鶯歌燕舞樂新春', '鶯歌燕舞慶新年', '鶯歌燕舞迎新春', '鶯歌燕舞詠春光', '雞鳴犬吠報新春', '鶯歌燕舞播春暉', '鶯歌燕舞頌新春', '鶯歌燕舞播春風', '山明水秀沐春風']參數
- texts (list[str]): 上聯文本;
- use_gpu (bool): 是否使用 GPU;若使用GPU,請先設置CUDA_VISIBLE_DEVICES環境變量;
- beam_width: beam search寬度,決定每個上聯輸出的下聯數量。
返回
- results (list[list][str]): 下聯文本,每個上聯會生成beam_width個下聯。
四、生成視頻
1. 依賴安裝
%cd ~ !pip install --upgrade pip # 下載nltk_data !wget https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz !tar zxvf nltk_data.tar.gz!git clone https://gitee.com/livingbody/PaddleBoBo.git --depth=1 !pip install ppgan paddlespeech2.配置
GANDRIVING:FOM_INPUT_IMAGE: '../bobo.png'FOM_DRIVING_VIDEO: './file/input/zimeng.mp4'FOM_OUTPUT_VIDEO: './file/input/test.mp4'TTS:SPEED: 1.0PITCH: 1.0ENERGY: 1.0SAVEPATH:VIDEO_SAVE_PATH: './file/output/video/'AUDIO_SAVE_PATH: './file/output/audio/'3.讓靜態人臉動起來
# 覆蓋配置 !cp ~/default.yaml ~/PaddleBoBo/default.yaml %cd ~/PaddleBoBo/ !python create_virtual_human.py --config default.yaml4.通用版本生成
numpy 版本太高不行,需要先卸載,然后安裝1.20版本。
!pip uninstall numpy -y Found existing installation: numpy 1.19.5 Uninstalling numpy-1.19.5:Successfully uninstalled numpy-1.19.5 !pip install numpy==1.20 !python general_demo.py \--human ./file/input/test.mp4 \--output output.mp4 \ put output.mp4 \--text 虎躍龍騰生紫氣,鶯歌燕舞慶新春。虎躍龍騰生紫氣,風調雨順兆豐年。虎躍龍騰生紫氣,鶯歌燕舞鬧春光。虎躍龍騰生紫氣,鶯歌燕舞鬧春風。虎躍龍騰生紫氣,鶯歌燕舞賀新春。虎躍龍騰生紫氣,鶯歌燕舞兆豐年。虎躍龍騰生紫氣,鶯歌燕舞頌華年。虎躍龍騰生紫氣,人歡馬叫慶新春。虎躍龍騰生紫氣,鶯歌燕舞唱春風。虎躍龍騰生紫氣,人歡馬叫兆豐年。虎躍龍騰生紫氣,山歡水笑沐春風。虎躍龍騰生紫氣,鶯歌燕舞醉春風。虎躍龍騰生紫氣,鶯歌燕舞笑春風。虎躍龍騰生紫氣,鶯歌燕舞報佳音。虎躍龍騰生紫氣,鶯歌燕舞蔚春風。虎躍龍騰生紫氣,鶯歌燕舞鬧新春。虎躍龍騰生紫氣,鶯歌燕舞涌春潮。虎躍龍騰生紫氣,山歡水笑鬧新春。虎躍龍騰生紫氣,山歡水笑涌春潮。虎躍龍騰生紫氣,鶯歌燕舞沐春風。虎躍龍騰生紫氣,鶯歌燕舞賀新年。虎躍龍騰生紫氣,鶯歌燕舞樂春風。虎躍龍騰生紫氣,鶯歌燕舞慶陽春。虎躍龍騰生紫氣,鶯歌燕舞報新春。虎躍龍騰生紫氣,人歡馬叫鬧新春。虎躍龍騰生紫氣,山歡水笑兆豐年。虎躍龍騰生紫氣,鶯歌燕舞頌陽春。虎躍龍騰生紫氣,鶯歌燕舞喚春風。虎躍龍騰生紫氣,鶯歌燕舞起祥云。虎躍龍騰生紫氣,鶯歌燕舞頌春風。虎躍龍騰生紫氣,人歡馬叫鬧春風。虎躍龍騰生紫氣,鶯歌燕舞慶豐年。虎躍龍騰生紫氣,鶯歌燕舞送春風。虎躍龍騰生紫氣,鶯歌燕舞送吉祥。虎躍龍騰生紫氣,鶯歌燕舞慶祥和。虎躍龍騰生紫氣,人歡馬叫慶豐年。虎躍龍騰生紫氣,鶯歌燕舞播春光。虎躍龍騰生紫氣,花香鳥語賀新春。虎躍龍騰生紫氣,山歡水笑賀新春。虎躍龍騰生紫氣,鶯歌燕舞慶華年。虎躍龍騰生紫氣,山歡水笑慶新春。虎躍龍騰生紫氣,鶯歌燕舞樂新春。虎躍龍騰生紫氣,鶯歌燕舞慶新年。虎躍龍騰生紫氣,鶯歌燕舞迎新春。虎躍龍騰生紫氣,鶯歌燕舞詠春光。虎躍龍騰生紫氣,雞鳴犬吠報新春。虎躍龍騰生紫氣,鶯歌燕舞播春暉。虎躍龍騰生紫氣,鶯歌燕舞頌新春。虎躍龍騰生紫氣,鶯歌燕舞播春風。虎躍龍騰生紫氣,山明水秀沐春風。視頻生成完畢,輸出路徑為:output.mp4,下載即可!
總結
以上是生活随笔為你收集整理的【虎虎生威迎虎年】对穿肠之PaddleBoBo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 163邮箱端口
- 下一篇: asa 防火墙拦截了https_防火墙(