1. 程式人生 > >是時候讓AI輔助你追劇了,以《獵場》為例

是時候讓AI輔助你追劇了,以《獵場》為例

前言

經過漫長的單休之後,本週終於可以雙休了 :)

本來打算趁雙休沒事幹,把最近我胡熱播的電視劇《獵場》給過了,看到十多集的時候,越發看不下去了,額,怎麼說呢,獵頭相關的不專業,更像是《情場》,可是下載了這麼多視訊全集,rm 掉有點可惜,正好最近對視訊分析這塊比較感興趣,因此想試試手,此外,自己一直依賴都是做人臉相關的研究應用,就先從人臉開始。:)

以上都是廢話 :)

主要技術和步驟

視訊抽幀

直接用cv2就可以,我才用的是秒抽一幀。

人臉檢測和特徵提取

人臉的檢測包括人臉框,人臉識別特徵,還有各種人臉屬性特徵:如性別、年齡、表情、顏值等。

struct FaceFeature{
    1
: Region region, 2: double age, 3: double gender, 4: list<double> racial, 5: list<double> feature, 6: double smile, 7: double attractive, 8: list<double> exps, }

其中 feature 主要用來用來做聚類用;

人臉特徵聚類;

人臉聚類主要用來識別出一個視訊全集中到底有多少人,聚類的方法比較多,就不細扯了,在github上搜了一下,chinese_whispers_clustering

聚類演算法對此類問題還算靠譜,而且dlib有對此的實現,直接拿來用(何必要重複造輪子呢:))

結果

人物聚類

識別聚類結果如下:
聚類結果

上面的id,代表一個人物,後面會用到。

簡單的看了一下,主要的人物還算都聚起來了,很多人不認識(比較只看了十多集),也存在幾個問題,可能是聚類演算法的閾值選擇的不太合適,如0和6都是鄭秋冬,被分開了,還有346和763,另外還有21號,這個類聚合的都是誤檢的人臉;

應用

人物顏值排序

都說男女一號一般都是劇裡的顏值擔當,但在這部劇中,我是不同意的(不單單我不同意,我訓練的顏值模型也不同意 :))

結果如下:
部分顏值得分截圖

正如預期的那樣,統計意義上,女性演員的顏值要高於男性演員的,此外,模型認為本劇的顏值擔當竟然是363號周放演的鐘淮蘭,第二是346號賈衣玫,而1號女主角排第五 : )

男演員方面: 最帥的是1454號,應該是後面的劇情才出現的,沒見過。第二帥是345號林拜(我也覺得他最帥,符合我直男癌的審美:)),至於0號男主角也是排第五:)

人物情緒曲線

通過分析一個人物在劇中的情緒,大致就可以知道該人物是悲劇角色,還是喜劇角色。
我們將情緒歸為3類:中性為0,正向表情為1,負向表情為-1;

exp2scole = {
    |   "Angry":-1,
    |   "Disgust":-1,
    |   "Fear":-1,
    |   "Happy":1,
    |   "Sad":-1,
    |   "Surprise":1,
    |   "Neutral":0
    |   }

拿363號鍾淮蘭為例:
這裡寫圖片描述
可以看到鍾淮蘭的在前期負向情緒為主,猜測出現的劇情在廣西監獄那段。符合預期。

人物出場時間視覺化

一直以來,想做的一件事就是為那些追星族把明明星在電視劇中出現都整合在一起,就可以免去為了看一個明星而需要看整部劇的煩惱了。通過在每一集中,將每個人物的出場點都可視化出來,就可以基本實現這個功能,只需要用ffmpeg 來裁剪就可以。

以16集合為例:
結果如下:
這裡寫圖片描述
大致可以看到這這一集中,有1號,3號兩位鄭秋冬女朋友同時出場,估計會比較好看 :)

視訊highlight裁剪

現在的很多小視訊如西瓜視訊上有很多電視劇的highlight,如果可以自動的highlight發現,那應該也是一個很有意思的事情,如在劇中,將1號和3號同時出現的裁剪出來,估計就會很有意思:)

貼不了視訊 :)

後記

實現程式碼都放在github上了,地址在這VideoFace
,如果對你有幫助的話,可以給個小星星:)

額,大週末的,我這是在幹啥呢。

相關推薦

是時候AI輔助獵場

前言 經過漫長的單休之後,本週終於可以雙休了 :) 本來打算趁雙休沒事幹,把最近我胡熱播的電視劇《獵場》給過了,看到十多集的時候,越發看不下去了,額,怎麼說呢,獵頭相關的不專業,更像是《情場》,可是下載了這麼多視訊全集,rm 掉有點可惜,正好最近對視訊分析這

手把手教基於SqlSugar4編寫一個視覺化程式碼生成器(生成實體SqlServer文末附原始碼)

  在開發過程中免不了建立實體類,欄位少的表可以手動編寫,但是欄位多還用手動建立的話不免有些浪費時間,假如一張表有100多個欄位,手寫有些不現實。 這時我們會藉助一些工具,如:動軟程式碼生成器、各種ORM框架自帶的程式碼生成器等等,都可以使用。 我們現在就基於SqlSugar(ORM框架)自己動手製造一個輪子

SVN+SSH協議工作方式全解析Sourceforge講解如何在Windows下配置TortoiseSVN和Su

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

利用HTML5上傳檔案並顯示在前端預覽圖片

由於專案中有上傳檔案的功能,所以這次單獨拿出來研究研究,我上網查了查,以前都是用iframe,但是自從HTML5出世之後,就可以利用H5的一些特性來上傳檔案了,啥也不說了,我上程式碼了 <!DOCTYPE html> <html lang

修改網站的圖示tomcat! (修改tomcat中的網站圖示)

在用瀏覽器開啟網站的時候,瀏覽器標籤頁上面有網站的圖示,類似於logo小圖示,如下圖: 原來這個是tomcat的一個小貓圖示,現在我們替換成我們自己的logo小圖示! 步驟1:開啟你的tomca

linux驅動由淺入深系列:塊裝置驅動之三(塊裝置驅動結構分析mmc

linux驅動由淺入深系列:塊裝置驅動之一(高通eMMC分割槽例項)前一篇文章介紹了塊裝置驅動在linux框架張的位置關係,本文來分析一下驅動本身。塊裝置驅動的模型還是基本基於字元裝置驅動的,可以簡單理解為塊裝置僅僅增加了操作緩衝區,對使用者操作請求進行佇列重排。因此只在有了

pytorch在fintune時將sequential中的層輸出vgg

pytorch將sequential中的層輸出,以vgg為例 有時候我們在fintune時發現pytorch把許多層都集合在一個sequential裡,但是我們希望能把中間層的結果引出來做下一步操作,於是我自己琢磨了一個方法,以vgg為例,有點僵硬哈! 首先

基於 Gogs Golang

實際的 DevOps 專案中,在 pipeline 流水線中包含下載程式碼、測試、構建、釋出、部署、通知等步驟。基本流程如下,當然不同的語言或不同的需求下流程會有所差異: clone -> test -> build -> publi

利用Hibernate進行簡單的增刪改查(未使用JPA註解Oracle

第一步、建立一個Java專案,名為Hibernate_one 第二步、載入jar包,在src下建立了lib資料夾,用來存放jar包(jar包必須一個都不能少)。如圖 我連線的資料庫是Oracle,所以得載入Oracle的驅動包ojdbc6,如果用mysql資料庫,可從網上

【Flume】【原始碼分析】flume中攔截器的原始碼分析TimestampInterceptor

本文將以TimestampInterceptor為例來分析一下flume中攔截器的工作原理 首先來看下改攔截器的實現結構 1、實現了Interceptor介面 該介面的方法定義如下: public void initialize(); public Event in

docker+lnmp 報錯小結laradock其它同理

用vagrant + centos7 + lnmp開發都快兩年,這是一個很好用的本地開發環境。對於我來說,它更像是一臺真正的linux電腦,能真正直接把握它的每一處地方。而且現在記憶體都普遍8G以上的本子,加上SSD真的是毫無壓力。 但時間一長,暴露出很

阿里雲伺服器部署FTP服務(CentOS 7.3 64位vsftpd

一、安裝vsftpd yum -y install vsftpd 二、配置 vsftpd的配置檔案在/etc/vsftpd,其中vsftp.conf檔案是主配置檔案,開啟如下: # Example config file /etc/vsftpd

Java環境搭建win10

一、下載地址     根據你的系統選擇你需要下載的jdk,32位系統對應x86,64位系統對應x64     下載完後得到一個可執行檔案,點選執行進入安裝   二、安裝     1

如何使用代理chrome

開啟谷歌瀏覽器,進入設定(或位址列輸入:chrome://settings/)下拉點選高階設定,會發現代理設定:如下,點選開啟選擇區域網設定:輸入地址和埠儲存。然後瀏覽器會彈窗提示輸入 代理賬號密碼,輸

Linux下寫定時任務tp5

tp5框架 首先在框架裡面寫個介面,然後在框架頂層建一個.sh檔案,跑這個指令碼,指令碼內容為 curl -g 'http://www.baidu.com/api/Index/index' 2.然後登陸linux伺服器進去etc下面

javascript的字串拼接和引號問題onclick

今天寫“刪除”超連結,試了兩次: $onclick = "javascript:return confirm(/”Are you sure to delete? /”);"; echo "<a h

idea,webstorm,pycharm,phpstorm等的啟用方式webstorm

這裡參考了網上的許多資料,不是我原創的,窮逼一個沒錢入正,僅拿來玩玩,各位有條件還是要支援正版。 2,將破解補丁複製到軟體的 bin目錄 下 3,搜尋 vmoptions 結尾的這兩個檔案 4,在第三步搜尋的 兩個檔案 裡面最後一行新增破解補丁的絕對路徑

Android Native到HAL原始碼剖析sensor

Google為了保護硬體廠商的資訊,在Android中添加了一層,它就是大名鼎鼎的HAL層。 在看HAL的編寫方法的過程中,會發現整個模組貌似沒有一個入口。一般說來模組都要有個入口,比如應用程式的main函式,可以被載入器進行載入執行,dll檔案有dllmain,而對於我們

tp5使用cookie加密演算法登入

首先,我們為什麼要對cookie加密? 之所以要對cookie加密是以為cookie是儲存在客戶端的,稍微懂一點技術的人都能找到cookie的儲存位置,如果我們儲存cookie的時候沒有加密,而是明文儲存的話也就是說我們的使用者名稱和密碼就完全暴露了,這是一個非常大的安全隱

【心得】只有當去做才能真正體會它

天下 成了 什麽 同學 一個 nbsp 做了 bsp 兩個   來深圳工作已經快兩個月了,我同學住我樓下,我來的那天,她就幾乎每天下班回來都會玩“王者榮耀”,她說很好玩,很多人都在玩。 對此,我不以為然,覺得不就是打打殺殺的嗎,有什麽好玩的。   前幾天,她來我樓上蹭網