欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用Python生成會跳舞的美女

 更新時間:2022年01月18日 09:09:21   作者:Python王飽飽  
大家好,本篇文章主要講的是用Python生成會跳舞的美女,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

導語

表妹心疼我,為了逗我開心,教我用Python制作會跳舞的美女。作為新時代的活雷鋒,在這里分享給大家。

開發(fā)工具

Python版本:3.6.4

相關模塊:

torch0.4.1模塊;
torchvision0.2.2模塊;
opencv-python模塊;
argparse模塊;
numpy模塊;
以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關模塊即可。

(PS:CUDA環(huán)境配置請自行Google教程。)

原理簡介

這里我們利用VAE的原理來生成會跳舞的小姐姐唄。先簡單介紹一下理論知識,要說VAE,就得先談談自動編碼器,自動編碼器最開始用于數據壓縮,其原理圖十分簡單直觀:

圖片

在模型訓練時,輸入圖片首先通過一個編碼器(現在當然是神經網絡啦)將輸入數據降維到一個code,接著將code輸入到解碼器(當然還是神經網絡啦)生成一個與輸入相同大小的圖片,網絡的優(yōu)化目標就是使得輸入編碼器的圖片與解碼器輸出的圖片盡可能相似。 當模型訓練完之后,我們就可以拿出這個解碼器,隨機傳入一些code作為它的輸入,來生成一些差不多的圖片。但是這種做法存在一個問題,就是編碼器生成的code包含了原圖信息,因此,我們就無法自己構造一些隨機的code來作為解碼器輸入從而生成任意圖片(必須是現有圖片過了編碼器之后生成的code作為輸入)。為了解決這個問題,VAE就誕生啦~VAE的全稱是:

Variational Autoencoder 即變分自編碼器
說起來,它的原理圖也十分簡單:

圖片

與自編碼器唯一不同就是在訓練過程中對code也進行了約束,使得code滿足某種分布(譬如正態(tài)分布)。這樣的話,模型訓練完之后,我們只需要隨機生成一個滿足該分布的code,就可以拿來作為解碼器的輸入,從而生成任意圖片啦~ 一般地,我們用均方損失函數保證原圖和生成圖相似,用KL損失函數來保證code滿足我們所要求的分布。均方損失大家肯定知道,KL散度的定義這里我也不想過多地去介紹,貼下維基百科上定義的公式吧:

圖片

P和Q是在同一個概率空間上定義的離散概率分布。 同時,為了方便計算KL散度,VAE引入了一個trick,叫:

reparameterization

以正態(tài)分布為例子,就是現在不直接預測code了,而是預測code的均值和方差,有了均值向量和方差向量,恢復code是很方便的(用標準正態(tài)分布乘以方差再加個均值就行了)。

再回過頭來,我們現在要用VAE來生成會跳舞的小姐姐,無非就是先找到一個訓練數據集,這里我找了個Youtube上的視頻作為數據集:

https://www.youtube.com/watch?v=NdSqAAT28v0

然后根據VAE的原理構造一個編碼和解碼網絡,用兩個損失函數作為約束訓練網絡就行啦。代碼就不一個個貼了,寫起來很簡單的,貼上來倒感覺有點麻煩,有需要的直接在公眾號后臺回復“dancenet”即可獲取。簡單說下代碼使用方式吧,模型訓練運行train.py文件即可,命令格式為:

python train.py --videopath xxx.mp4
模型測試運行demo.py文件即可,命令格式為:
python demo.py --mode random/fromtrain --checkpointspath xxx.pth --outputpath xxx.avi
這里模式的含義是code隨機生成/從訓練集中提取一些圖片的code作為輸入。

效果展示

隨機生成code模式作為輸入:

圖片

數據集中挑選圖片過編碼器獲得code作為輸入:

圖片


好了,我的分享到此結束了。

總結

到此這篇關于用Python生成會跳舞的美女的文章就介紹到這了,更多相關Python美女內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Django 淺談根據配置生成SQL語句的問題

    Django 淺談根據配置生成SQL語句的問題

    今天小編就為大家分享一篇Django 淺談根據配置生成SQL語句的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python中的for循環(huán)

    python中的for循環(huán)

    Python for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。這篇文章主要介紹了python的for循環(huán),需要的朋友可以參考下
    2018-09-09
  • python 公共方法匯總解析

    python 公共方法匯總解析

    這篇文章主要介紹了python 公共方法匯總解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python下讀取公私鑰做加解密實例詳解

    python下讀取公私鑰做加解密實例詳解

    這篇文章主要介紹了python下讀取公私鑰做加解密實例詳解的相關資料,需要的朋友可以參考下
    2017-03-03
  • Python pickle類庫介紹(對象序列化和反序列化)

    Python pickle類庫介紹(對象序列化和反序列化)

    這篇文章主要介紹了Python pickle類庫介紹(對象序列化和反序列化),本文講解了pickle庫的作用、pickle的運行過程、使用實例、修改picklable類型的默認行為等內容,需要的朋友可以參考下
    2014-11-11
  • Python使用迭代器打印螺旋矩陣的思路及代碼示例

    Python使用迭代器打印螺旋矩陣的思路及代碼示例

    用Python的itertools模塊來創(chuàng)建具有迭代功能的函數十分具有技巧性,這里我們就來看一下借助itertools模塊、Python使用迭代器打印螺旋矩陣的思路及代碼示例
    2016-07-07
  • 批量將ppt轉換為pdf的Python代碼 只要27行!

    批量將ppt轉換為pdf的Python代碼 只要27行!

    這篇文章主要為大家詳細介紹了批量將ppt轉換為pdf的Python代碼,只要27行,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • pandas DataFrame 數據選取,修改,切片的實現

    pandas DataFrame 數據選取,修改,切片的實現

    這篇文章主要介紹了pandas DataFrame 數據選取,修改,切片的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 如何基于pythonnet調用halcon腳本

    如何基于pythonnet調用halcon腳本

    這篇文章主要介紹了如何基于pythonnet調用halcon腳本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python文件操作的基礎詳細講解(write、read、readlines、readline)

    python文件操作的基礎詳細講解(write、read、readlines、readline)

    使用python來讀寫文件是非常簡單的操作,下面這篇文章主要給大家介紹了關于python文件操作的基礎詳細資料,包括write、read、readlines、readline等相關操作,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04

最新評論