主要思路如下:
使用PaddleHub的ernie_gen_couplet模型生成虎年相關的對聯使用PaddleBoBo把虛擬主播圖片和對聯生成視頻
春聯是過年時所貼的紅色喜慶元素“年紅”中一個種類,它以對仗工整、簡潔精巧的文字描繪美好形象,抒發美好愿望,是中國特有的文學形式,是華人們過年的重要習俗。當人們在自己的家門口貼年紅(春聯、福字、窗花等)的時候,意味著過春節正式拉開序幕。
一說春聯來源于桃符。據《后漢書·禮儀志》說,桃符長六寸,寬三寸,桃木板上書“神荼”、“郁壘”二神。“正月一日,造桃符著戶,名仙木,百鬼所畏?!蔽宕鷷r,西蜀的宮廷里,有人在桃符上題寫聯語。清代《燕京時歲記》上說:“春聯者,即桃符也?!?/p>
春聯的另一來源是春貼,古人在立春日多貼“宜春”二字,后漸漸發展為春聯,表達了中國勞動人民一種辟邪除災、迎祥納福的美好愿望。
在東漢以后,形成與門神配套的文化儀規,強化門神驅邪辟鬼,衛家宅,保平安,助功利,降吉祥等功能。古代對于貼年畫和貼春聯,有個專用名詞叫“封印”,不論是掛桃符、貼年畫和春聯,皆有操作的規矩?!胺庥 保侵阜忾]已經掃除干凈,清理整潔的內在場態,讓邪氣妖氛不能再進入家中。 “封”,是封閉、阻隔之義; “印”,則是標示于顯隱兩境,我已經封起來了。
據說這一習俗起于宋代,在明代開始盛行,到了清代,春聯的思想性和藝術性都有了很大的提高?,F在貼春聯已成風俗,紅色的對聯貼在大門上,房子頓時生輝。正如詩云:“喜氣臨門紅色妍,家家戶戶貼春聯;舊年辭別迎新歲,時序車輪總向前。”
虎在十二生肖中位居第三,在十二地支配屬“寅”,故一天十二時辰中之“寅時”清晨三點至五點又稱“虎時”。
在遠古時候,屬相中有獅子,沒有老虎。由于獅子太兇殘,名聲不好,主管封屬相的玉皇大帝想把獅子除名,但是又必須補進一位鎮管山林的動物。這時,玉帝想到殿前的虎衛士。
天宮的虎衛士從前也只是地上的一種不出名的動物。它從貓師傅那里學得抓、撲、咬、剪、沖、躍、折等十八般武藝后,成為山林中的勇士。凡是和它較量的,不死即傷。從此,老虎雄霸山林。后來,玉帝聽說老虎勇猛無比,便下旨傳老虎上天。老虎上天之后,同玉帝的衛士較量,贏得勝利。從此,老虎便成了天宮的殿前衛士。
誰知不久之后,地上的飛禽走獸見無人鎮管,開始胡作非為起來。給人間造成了災難,這事驚動了土地神,土地神連忙上報天庭,請玉帝派統天神鎮住百獸。玉帝便派老虎下凡,老虎要求每勝一次,便給它記一功。玉帝只求人間安寧,當然滿口答應老虎的要求。
來了凡間,老虎了解到獅子、熊、馬是當時最厲害的三種動物。它就專門向這三種動物挑戰。憑著老虎的勇猛和高超的武藝連接擊敗了獅子、熊、馬。其他惡獸聞風而逃,藏進了無人居住的森林荒野。人間歡聲動地,感謝老虎為人世間立了功。
回到天上,玉帝因老虎連勝三獸,便在它的前額刻下了三條橫線。后來,人間又受到東海龜怪的騷擾,大地一片汪洋。蝦兵蟹將作惡人間,老虎又來到凡間,咬死了龜怪。玉帝一高興,又給老虎記一大功,在額頭的三橫之中又添了一豎。一個醒目的“王”字在老虎前額。從此,老虎便為百獸之王,總管百獸。時至今天,虎額上也還可見到威風的“王”字。
在獅子的惡名傳來天宮后,玉帝便決定除去獅子的屬相頭銜,補進了獸王虎。從此,虎成為了屬相,獅子則被貶到遙遠的南方去了。當然,老虎也從玉帝的殿前衛士下凡間,永保下界安寧。今天也還有虎符、虎環、虎雕等除災免禍的鎮邪物。在農村,不少人家也喜歡給孩子戴虎頭帽、穿虎頭鞋,這是圖個趨吉避邪,吉祥平安。
凌晨3-5時(即“寅時”)。據古書載。這時候,老虎是最活躍、最兇猛、傷人最多,因此寅時同虎搭配。
引用: [PaddleHub一鍵對聯生成(例:上海自來水來自海上,山東落葉松葉落東山)](
對聯輸入:
對聯輸出:
參考: PaddleHub元宇宙直通車:手把手教你造個虛擬數字人! - 飛槳AI Studio - 人工智能學習實訓社區
元宇宙時代已經來臨,當你看到網絡新聞上形形色色的虛擬人的時候,是不是有些心動?
你是否跟以前的我一樣會想創造虛擬人需要很大的成本和技術投入,普通開發者單槍匹馬根本無法辦得到?
現在這些都不再是問題,PaddleHub助你快速實現!
對聯文字長短不一,短的僅一、兩個字;長的可達幾百字。對聯形式多樣,有正對、反對、流水對、聯球對、集句對等。但不管何類對聯,使用何種形式,都必須具備以下特點:
要字數相等,斷句一致。除有意空出某字的位置以達到某種效果外,上下聯字數必須相同,不多不少。要平仄相合,音調和諧。傳統習慣是「仄起平落」,即上聯末句尾字用仄聲,下聯末句尾字用平聲。要詞性相對,位置相同。一般稱為「虛對虛,實對實」,就是名詞對名詞,動詞對動詞,形容詞對形容詞,數量詞對數量詞,副詞對副詞,而且相對的詞必須在相同的位置上。要內容相關,上下銜接。上下聯的含義必須相互銜接,但又不能重復。
此外,張掛的對聯,傳統作法還必須直寫豎貼,自右而左,由上而下,不能顛倒。與對聯緊密相關的橫批,可以說是對聯的題目,也是對聯的中心。好的橫批在對聯中可以起到畫龍點睛、相互補充的作用。
模型所用的公開對聯數據集是couplet-clean-dataset。此數據集基于couplet-dataset的70w條數據集,在此基礎上利用敏感詞詞庫對數據進行了過濾,刪除了低俗或敏感的內容,刪除后剩余約74w條對聯數據。原有的70多萬條數據集中包含了較多的低俗或敏感內容,不太適合商用場景。如有對數據集有更具體的了解訴求,可以前往該數據集repo地址詳細了解如何下載數據、數據過濾規則等信息。
ernie_gen_couplet:ERNIE-GEN 是面向生成任務的預訓練-微調框架,首次在預訓練階段加入span-by-span 生成任務,讓模型每次能夠生成一個語義完整的片段。在預訓練和微調中通過填充式生成機制和噪聲感知機制來緩解曝光偏差問題。此外, ERNIE-GEN 采樣多片段-多粒度目標文本采樣策略, 增強源文本和目標文本的關聯性,加強了編碼器和解碼器的交互。ernie_gen_couplet采用開源對聯數據集進行微調,可用于生成下聯。下圖是模型結構:
更多詳情可以參考論文:ERNIE-GEN:An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation
ernie_tiny_couplet:ernie_tiny_couplet是一個對聯生成模型,它由ernie_tiny預訓練模型經PaddleHub TextGenerationTask微調而來,僅支持預測,如需進一步微調請參考PaddleHub text_generation demo。預訓練模型轉換成預測module的轉換方式請參考Fine-tune保存的模型如何轉化為一個PaddleHub Module。下圖是模型結構:
PaddleBoBo是基于飛槳PaddlePaddle深度學習框架和PaddleSpeech、PaddleGAN等開發套件的虛擬主播快速生成項目。PaddleBoBo致力于簡單高效、可復用性強,只需要一張帶人像的圖片和一段文字,就能快速生成一個虛擬主播的視頻;并能通過簡單的二次開發更改文字輸入,實現視頻實時生成和實時直播功能。
PaddleBoBo虛擬主播實時直播演示 - Bilibili
PaddleBoBo虛擬主播豎版生成演示 - Bilibili
PaddleBoBo虛擬主播橫版生成演示 - Bilibili
注:我們的模型可以在CPU和GPU下執行,但由于AI Studio高級版(GPU)十分難以搶到,因此在這里為大家演示在cpu版下實操;如果要用GPU運行,需要切換到AI Studio GPU高級版,并且設置use_cuda=True
在完成對聯生成前,需要先完成PaddlePaddle的安裝和PaddleHub的安裝,并且要求paddlepaddle >= 1.8.0,paddlehub >= 1.7.0;AI Studio已經為各位開發者提供好了PaddlePaddle框架以及PaddleHub預訓練模型管理工具,因為我們只需要滿足版本,就可以使用對聯生成模型,完成一鍵對聯生成。PaddleHub為各位開發者準備了兩種方式實現對聯生成,詳情請見3-2(命令行一鍵生成)和3-3(API調用生成)內容。
注:需要更新paddlehub以達到對聯生成模型的環境依賴要求;下圖是AI Studio默認的初始版本,其中paddlehub的版本并未達到我們的環境需求,因此需要更新
PaddleHub在設計時,為模型的管理和使用提供了命令行工具,也提供了通過命令行調用PaddleHub模型完成預測的方式。下面是基于命令行的hub run命令完成的對聯生成,更多paddlehub命令行操作說明
通過預測API,給出上聯,程序自動生成下聯。
參數
texts (list[str]): 上聯文本;use_gpu (bool): 是否使用 GPU;若使用GPU,請先設置CUDA_VISIBLE_DEVICES環境變量;beam_width: beam search寬度,決定每個上聯輸出的下聯數量。
返回
results (list[list][str]): 下聯文本,每個上聯會生成beam_width個下聯。
numpy 版本太高不行,需要先卸載,然后安裝1.20版本。
視頻生成完畢,輸出路徑為:output.mp4,下載即可!