前面的話:這次的實驗是分為ABC三級,如圖,大部分同學(xué)都會選擇A或B級,本組選擇微博管控(B級),但也成功實現(xiàn)對圖片和視頻的分析(A級)加入數(shù)據(jù)庫,界面友好,對一種功能進(jìn)行多種實現(xiàn)方式,選擇最優(yōu)效果(加分項),由于整個項目很大,這里僅提供我們小組的實驗報告,對每一個模塊都提供鏈接,學(xué)弟學(xué)妹根據(jù)實際情況按需參考。
B級主體下載鏈接:https://download.csdn.net/download/weixin_45937957/85596578
目錄
第一章 摘要
本系統(tǒng)是基于python機(jī)器學(xué)習(xí)的微博流量分析與管控系統(tǒng),主要針對微博的所有文字信息、圖像信息和音視頻信息進(jìn)行捕獲、分析和管控等。
本系統(tǒng)會針對微博熱搜榜進(jìn)行爬蟲,并預(yù)處理過濾篩除熱搜榜單上的廣告信息,且針對每個有效的熱搜詞條進(jìn)行鏈接提取,分別進(jìn)入其話題廣場通過熱文提取其主要內(nèi)容(包括圖像、視頻)等,針對主要內(nèi)容不健康、不正常的話題可以在話題中發(fā)正能量內(nèi)容的帖子進(jìn)行話題管控。
本系統(tǒng)同時還會針對一個微博用戶所發(fā)過的所有微博內(nèi)容進(jìn)行爬蟲(包括主頁信息、個人資料、文字、視頻、圖像、每條微博的url等),通過預(yù)處理將不同類型的信息分類后保存并顯示,針對其每個微博的內(nèi)容進(jìn)行特征詞提取和文本分類,主要分類為:是否色情敏感、是否暴力敏感、是否人身攻擊、是否不良價值導(dǎo)向,若有相應(yīng)風(fēng)險微博將予以警報,用戶可將發(fā)出警報的微博的url復(fù)制到舉報或評論區(qū)淹沒處,舉報將對應(yīng)類型舉報到微博服務(wù)器,評論區(qū)淹沒則會從正能量評論庫中取出內(nèi)容進(jìn)行評論區(qū)淹沒。
本系統(tǒng)對色情、犯罪(搶劫,槍擊,打架斗毆)、異常(車禍、爆炸)等音視頻進(jìn)行檢測與分類,對色情圖片以概率,從0到1,作為輸出;對犯罪、異常視頻將得到可視化結(jié)果,經(jīng)過訓(xùn)練,已經(jīng)得到94%的準(zhǔn)確率。
本組在完成了實驗的基本要求后,附加了數(shù)據(jù)庫、生成詞云、擁有精致界面、圖像的分類識別、視頻的分類識別等多項附加功能。
第二章 項目介紹
2.1背景分析
微博網(wǎng)頁版是微博各種版本中最不易爬取的動態(tài)網(wǎng)頁,雖然微博已經(jīng)針對內(nèi)容進(jìn)行了大量的管控使得大部分不良信息不得以出現(xiàn),但仍有一些信息通過稍隱晦方式逃避了微博的內(nèi)容識別得以展現(xiàn)在大眾視野,例如飯圈文化中的粉絲互撕、擦邊色情圖片、抑郁悲觀情緒渲染等。
除這些不良價值信息外,還有一部分信息值得我們關(guān)注,2021年11月25日一個25歲的年輕攝影師在微博平臺發(fā)布自己的遺書后跳海自殺,當(dāng)被人發(fā)現(xiàn)時已經(jīng)去世,除了他之外,幾乎每天都有一些抑郁患者在微博宣泄情緒,如果能即使發(fā)現(xiàn)在這些人的呼救,給予正能量的鼓勵,也許會挽救一條條鮮活的生命。
在網(wǎng)絡(luò)上也可能會有異常的音視頻流出,如廠房爆炸,車禍現(xiàn)場,打劫斗毆等,若這種異常的視頻能夠被管理員盡早檢測,就可能爭取更多人生存下去的機(jī)會
本系統(tǒng)正基于以上背景,創(chuàng)新性基于機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、圖像視頻識別等多項技術(shù)推出了文字信息、音視頻信息、圖像信息的識別及分類,各類信息的多方管控功能。
2.2特色描述
1.基于selenium和微博api接口的動態(tài)網(wǎng)頁安全爬蟲
微博網(wǎng)頁版在安全性方面有一定的限制,因此當(dāng)selenium在測試時頻繁通過chorme瀏覽器測試訪問微博網(wǎng)頁時,微博會限制訪問,導(dǎo)致訪問次數(shù)變慢,同時基于selenium的爬蟲需要自動登陸賬號(chorme不會記住登陸狀態(tài))并通過安全驗證,安全驗證必須人為手機(jī)掃碼驗證(防止惡意刷),因此selenium會影響一些功能的效率,而且有被限流的風(fēng)險。
微博api是微博為開發(fā)人員專門準(zhǔn)備的接口,但功能是有限的,本系統(tǒng)中的評論功能是通過微博api評論寫入接口完成的,但同時也不能放發(fā)送的太過頻繁否則容易產(chǎn)生丟包、服務(wù)器不接受等問題,同時微博api自最近一次更新后要求發(fā)送微博的接口需要安全域名,需要下載特定文件到二級域名服務(wù)器,對于個人開發(fā)來說不易實現(xiàn),因此這里僅用其提供的寫評論api接口。
2.基于WM算法的模式識別
在給文本信息分類前首先要進(jìn)行特征詞提取,本系統(tǒng)使用WM多模式匹配算法進(jìn)行特征詞的提取,WM算法速度快、效率高、正確率高。
3.基于機(jī)器學(xué)習(xí)樸素貝葉斯的文本分類算法
分類算法使用的樸素貝葉斯分類器,將四類不同文本的特征詞和結(jié)果作為學(xué)習(xí)集輸入,當(dāng)從某篇微博提取到的特征詞輸入時,算法會自動進(jìn)行分類并計算類別概率,分類準(zhǔn)確率較高。
4.詞云的生成
輸入某篇微博的url,系統(tǒng)將爬取該微博的前30+條評論內(nèi)容,并通過結(jié)巴分詞、語氣詞剔除后生成多彩詞云圖
5. 對微博某固定用戶的爬蟲
輸入某用戶的微博id號,可以爬取從近期開始的所有該用戶發(fā)表過的文本和圖片,全部保存在本地文件夾下。
參考鏈接:https://www.omegaxyz.com/2018/02/13/python_weibo/
6. 數(shù)據(jù)庫的設(shè)計
設(shè)計數(shù)據(jù)庫存儲熱搜和熱搜詳情,在爬取熱搜的時候存入數(shù)據(jù)庫,但是用戶個人的微博文本、圖片、視頻將會存儲在本地。
7. 基于grb顏色模式識別色情圖片
使用 Python3 去識別圖片是否為色情圖片,我們會使用到 PIL 這個圖片處理庫,會編寫算法來劃分圖像的皮膚區(qū)域。
根據(jù)顏色(膚色)找出圖片中皮膚的區(qū)域,然后通過一些條件判斷是否為色情圖片。
輸入: python erotic_picture.py -v 3.jpeg 其中,3.jpeg是文件路徑
輸出: True 3.jpeg JPEG 482×464: result=True message=‘Nude!!’
判斷出此圖是一個色情圖片
8. 基于卷積神經(jīng)網(wǎng)絡(luò)的圖片識別
需要指定色情圖片的路徑作為參數(shù),經(jīng)過測試就可以生成測試結(jié)果,例如:
輸入:python nsfw_predict.py /tmp/test/test.jpeg
輸出:{‘class’: ‘sexy’, ‘probability’: {‘drawings’: 0.008320281, ‘hentai’: 0.0011919827, ‘neutral’: 0.13077603, ‘porn’: 0.13146976, ‘sexy’: 0.72824186}},類別后面的是該類別的概率,0為概率為零,1為概率為1
其中:
9. 監(jiān)控視頻中的現(xiàn)實世界異常檢測
用兩種方式實現(xiàn),都有可視化輸出。
在弱監(jiān)督下訓(xùn)練,在一段視頻中,只關(guān)心是否有異常事件的存在,而不關(guān)心具體的異常類型以及異常發(fā)生在哪些幀內(nèi)。一個實際的異常檢測系統(tǒng)的目標(biāo)是及時發(fā)出偏離正常模式的活動的信號,并識別所發(fā)生的異常的時間窗。因此,異常檢測可以看作是粗糙層次的視頻理解,它可以過濾掉正常模式中的異常。一旦檢測到異常,可以使用分類技術(shù)將其歸為特定活動之一。
只需要在config里指定需要檢測的視頻路徑,就可以在output文件夾里獲得視頻分析后的gif圖像化頁面。
10. QT的設(shè)計
使用QT設(shè)計GUI頁面,連接上述功能的接口使之成為一個完整的整體,使得頁面有好。
下面展示一些:
歡迎頁面:
查看熱搜:
爬取某一指定用戶的微博(圖片和文字),這個是借鑒大神spider,參考鏈接:https://www.omegaxyz.com/2018/02/13/python_weibo/
分析該用戶
管控頁面:
詞云生成頁面:
第三章 實現(xiàn)方案
3.1系統(tǒng)方案
3.2實現(xiàn)原理
3.2.1 微博熱搜榜及熱搜話題爬取子系統(tǒng)
環(huán)境及語言:python selenium庫 Chrome瀏覽器
1.首先根據(jù)https://s.weibo.com/top/summary?sudaref=www.sogou.com微博熱搜榜的url逐條爬取到每一條熱搜對應(yīng)一個其單獨的話題廣場url,通過預(yù)處理過濾掉熱搜榜上的廣告熱搜。下面是預(yù)處理的關(guān)鍵代碼
2.我們進(jìn)行深度優(yōu)先遍歷,分別根據(jù)url可以逐次進(jìn)入到每條熱搜的熱搜廣場,熱搜廣場的第一條熱搜通常即為熱度最高的文章,因此我們可以從其內(nèi)容中提取到熱搜的主要內(nèi)容。
3.將每條熱搜的內(nèi)容、排名、名稱、熱度存入數(shù)據(jù)庫。
3.2.2 微博圖像、視頻爬取子系統(tǒng)
環(huán)境及語言:python selenium庫 Chrome瀏覽器
1.首先根據(jù)輸入的微博url打開一條微博的頁面,然后利用Xpath通過元素特征值匹配到圖像或視頻的url存放處,從html中取出該url。
2.根據(jù)圖片或視頻的url跳轉(zhuǎn)到該圖片或視頻的網(wǎng)頁然后再下載到本地。
3.2.3 微博評論爬取及詞云生成子系統(tǒng)
環(huán)境及語言:python selenium庫 wordcloud庫 jieba庫 Chrome瀏覽器
1.首先根據(jù)用戶輸入的微博url進(jìn)入到該微博的界面,然后利用selenium自動點擊評論,先爬取當(dāng)前界面可見的評論,再滑動滾輪,繼續(xù)爬取評論,當(dāng)遇到“登錄后查看更多”時點擊,提醒用戶掃碼登陸,登陸后繼續(xù)滾動、爬取評論。
2.將爬取到評論保存到本地文件。
3.將該文件中的內(nèi)容讀出,首先過濾掉句末語氣詞“了”、“啊”、“啦”等,然后進(jìn)行jieba分詞。
4.將Jieba分詞后的結(jié)果詞典作為輸入進(jìn)行wordcloud生成詞云圖。
3.2.4 管控子系統(tǒng)
環(huán)境及語言:python selenium庫 微博官方api Chrome瀏覽器
1.評論區(qū)淹沒:由于利用selenium發(fā)布一條評論后難以再確定回復(fù)文本框的位置,難以進(jìn)行Xpath定位,因此評論區(qū)淹沒功能是基于微博官方api應(yīng)用接口實現(xiàn)的,輸入一條微博的id,程序?qū)⒆詣訌脑u論文本txt文件(用戶可以提前寫入自己想評論的話,若不寫入則默認(rèn)為正能量語錄)中逐條讀取并構(gòu)建http網(wǎng)絡(luò)包(內(nèi)容,access_token,id,url)回復(fù)在評論區(qū),其中access_token是從微博api注冊認(rèn)證后頒發(fā)的。
2.話題的淹沒:話題的淹沒即在某個話題中大量發(fā)帖以淹沒原熱點帖,讓更多人看到正能量的真相,首先進(jìn)入微博網(wǎng)頁首界面,根據(jù)用戶選擇的賬號進(jìn)行自動輸入賬號密碼自動登陸,登錄后等待用戶掃碼通過安全認(rèn)證,認(rèn)證后自動從文本庫txt文件中取出內(nèi)容加上用戶輸入的話題進(jìn)行持續(xù)發(fā)帖。
3.微博投訴:輸入一篇微博的url選擇以下投訴類型包括人身攻擊、涉黃信息、有害信息(暴恐血腥)、不良價值導(dǎo)向。
程序自動索引到此篇微博并點擊投訴選擇類型、登陸、認(rèn)證以及勾選協(xié)議并提交等。
3.2.5 文本特征提取及分類子系統(tǒng)
1.將提取到微博文本列表(文本可不唯一,數(shù)量不限)作為輸入,首先利用優(yōu)化后的WM多模式匹配算法進(jìn)行特征詞提?。ㄌ卣髟~即分類的敏感詞)。
2.將WM多模式匹配算法的結(jié)果作為輸入,利用樸素貝葉斯機(jī)器學(xué)習(xí)算法,根據(jù)已有樣本進(jìn)行貝葉斯估計學(xué)習(xí)先驗概率P(Y)和條件概率P(X|Y),進(jìn)而求出聯(lián)合分布概率P(XY),最后利用貝葉斯定理求解P(Y|X),也就是說,它嘗試去找到底這個數(shù)據(jù)是怎么生成的(產(chǎn)生的),然后再進(jìn)行分類。哪個類別最有可能產(chǎn)生這個信號,就屬于那個類別,判斷文本是否屬于四類中的某一類,并輸出條件概率。
3.2.6 基于PIL的色情圖片檢測子系統(tǒng)
參考鏈接:https://www.cnblogs.com/wjw1014/p/10319652.html
本程序根據(jù)顏色(膚色)找出圖片中皮膚的區(qū)域,然后通過一些條件判斷是否為色情圖片。
程序的關(guān)鍵步驟如下:
- 遍歷每個像素,檢測像素顏色是否為膚色。
- 將相鄰的膚色像素歸為一個皮膚區(qū)域,得到若干個皮膚區(qū)域。
- 剔除像素數(shù)量極少的皮膚區(qū)域。
我們定義非色情圖片的判定規(guī)則是(滿足任意一個判定為真):
- 皮膚區(qū)域的個數(shù)小于 3 個。
- 皮膚區(qū)域的像素與圖像所有像素的比值小于15%。
- 最大皮膚區(qū)域小于總皮膚面積的 45%。
- 皮膚區(qū)域數(shù)量超過 60 個。
顏色模式
第一種:r > 95 and g > 40 and g < 100 and b > 20 and max([r, g, b]) - min([r, g, b]) > 15 and abs(r - g) > 15 and r > g and r > b
第二種:nr = r / (r + g + b), ng = g / (r + g + b), nb = b / (r +g + b), nr / ng > 1.185 and r * b / (r + g + b) ** 2 > 0.107 and r * g / (r + g + b) ** 2 > 0.112
HSV 顏色模式h > 0 and h < 35 and s > 0.23 and s < 0.68
YCbCr 顏色模式97.5 <= cb <= 142.5 and 134 <= cr <= 176
一幅畫像有零個到多個皮膚區(qū)域,程序按發(fā)現(xiàn)順序給它們編號,第一個發(fā)現(xiàn)的區(qū)域編號為 0 ,第 n 個發(fā)現(xiàn)的區(qū)域編號為 n-1 。我們用一種類型來表示像素,我們給這個類型取名為 Skin ,包含了像素的一些信息:唯一的編號(id)、是否為膚色(skin)、皮膚區(qū)域的編號(region)、橫坐標(biāo)(x)、縱坐標(biāo)(y)。遍歷所有像素時,我們?yōu)槊總€像素創(chuàng)建一個與之對應(yīng)的 Skin 對象,并設(shè)置對象的所有屬性。其中 region 屬性即為像素所在的皮膚區(qū)域編號,創(chuàng)建對象時初始化為無意義的 None。關(guān)于每個像素的 id 值,左上角為原點,像素的 id 值按照像素坐標(biāo)布局,那么看起來如下圖所示:
其實 id 的順序也即遍歷的順序。遍歷所有像素的時候,創(chuàng)建 Skin 對象后,如果當(dāng)前像素為膚色,且相鄰的像素有膚色的,那么我們把這些膚色歸到一個皮膚區(qū)域。
相鄰像素的定義:通常都能想到的是當(dāng)前像素周圍的8個像素,然而實際上只需要定義4個就可以了,位置分別再當(dāng)前像素的左方、左上方、正上方、右上方;因為另外四個像素都在當(dāng)前像素后面,我們還未給這四個像素創(chuàng)建對應(yīng)的 Skin 對象。
我們會先設(shè)計一個Nude類,里面包含圖片的所有信息,考慮到效率問題——越大的圖片所需要消耗的資源與時間越大,因此有時候可能需要對圖片進(jìn)行縮小。接著遍歷每個像素,為每個像素創(chuàng)建對應(yīng)的Skin對象,若當(dāng)前像素并不是膚色,那么跳過本次循環(huán),繼續(xù)遍歷,若當(dāng)前像素是膚色像素,那么就需要處理了,先遍歷相鄰像素。然后相鄰像素的若是膚色像素,如果兩個像素的皮膚區(qū)域號都為有效值且不同,因為兩個區(qū)域中的像素相鄰,那么其實這兩個區(qū)域是連通的,說明需要合并這兩個區(qū)域。記錄下此相鄰膚色像素的區(qū)域號,之后便可以將當(dāng)前像素歸到這個皮膚區(qū)域里了。
遍歷完所有相鄰像素后,分兩種情況處理
- 所有相鄰像素都不是膚色像素:發(fā)現(xiàn)了新的皮膚區(qū)域
- 存在區(qū)域號為有效值的相鄰膚色像素:region 的中存儲的值有用了,把當(dāng)前像素歸到這個相鄰像素所在的區(qū)域
遍歷完所有像素之后,圖片的皮膚區(qū)域劃分初步完成了,只是在變量self.merge_regions中還有一些連通的皮膚區(qū)域號,它們需要合并,合并之后就可以進(jìn)行色情圖片判定了。
3.2.7 基于卷積神經(jīng)網(wǎng)絡(luò)的檢測子系統(tǒng)
參考鏈接:https://blog.csdn.net/v_JULY_v/article/details/51812459
由于上一個子系統(tǒng)的設(shè)計對色情圖片實際檢測的結(jié)果誤差較大,我們考慮用深度學(xué)習(xí)的方法來提高準(zhǔn)確率。我們之前還未正式接觸過卷積神經(jīng)網(wǎng)絡(luò),所以首先要弄清楚什么是卷積神經(jīng)網(wǎng)絡(luò)。
當(dāng)我們給定一個"X"的圖案,計算機(jī)怎么識別這個圖案就是“X”呢?一個可能的辦法就是計算機(jī)存儲一張標(biāo)準(zhǔn)的“X”圖案,然后把需要識別的未知圖案跟標(biāo)準(zhǔn)"X"圖案進(jìn)行比對,如果二者一致,則判定未知圖案即是一個"X"圖案。
但對于計算機(jī)來說,只要圖像稍稍有一點變化,不是標(biāo)準(zhǔn)的,那么要怎么解決這個問題?
計算機(jī)要解決上面這個問題,一個比較天真的做法就是先保存一張"X"和"O"的標(biāo)準(zhǔn)圖像(就像前面給出的例子),然后將其他的新給出的圖像來和這兩張標(biāo)準(zhǔn)圖像進(jìn)行對比,看看到底和哪一張圖更匹配,就判斷為哪個字母。
但是這么做的話,其實是非常不可靠的,因為計算機(jī)還是比較死板的。在計算機(jī)的“視覺”中,一幅圖看起來就像是一個二維的像素數(shù)組(可以想象成一個棋盤),每一個位置對應(yīng)一個數(shù)字。在我們這個例子當(dāng)中,像素值"1"代表白色,像素值"-1"代表黑色。
當(dāng)比較兩幅圖的時候,如果有任何一個像素值不匹配,那么這兩幅圖就不匹配,至少對于計算機(jī)來說是這樣的。因此,從表面上看,計算機(jī)判別右邊那幅圖不是"X",兩幅圖不同。但是這么做,顯得太不合理了。理想的情況下,我們希望,對于那些僅僅只是做了一些像平移,縮放,旋轉(zhuǎn),微變形等簡單變換的圖像,計算機(jī)仍然能夠識別出圖中的"X"和"O"。就像下面這些情況,我們希望計算機(jī)依然能夠很快并且很準(zhǔn)的識別出來。這也就是CNN出現(xiàn)所要解決的問題。
第一步,特征提取
對于CNN來說,它是一塊一塊地來進(jìn)行比對。它拿來比對的這個“小塊”我們稱之為Features(特征)。在兩幅圖中大致相同的位置找到一些粗糙的特征進(jìn)行匹配,CNN能夠更好的看到兩幅圖的相似性,相比起傳統(tǒng)的整幅圖逐一比對的方法,每一個feature就像是一個小圖(就是一個比較小的有值的二維數(shù)組)。不同的Feature匹配圖像中不同的特征。在字母"X"的例子中,那些由對角線和交叉線組成的features基本上能夠識別出大多數(shù)"X"所具有的重要特征。
那怎么表示特征的提取呢?那就要用到卷積運算,其實就是計算相似度。舉個具體的例子。比如下圖中,圖中左邊部分是原始輸入數(shù)據(jù),圖中中間部分是濾波器filter,圖中右邊是輸出的新的二維數(shù)據(jù)。
用不同的濾波器可以提取不同的特征。
第二步,池化pool池
為了提高運算效率,縮小圖像大小,需要進(jìn)行池化,有兩種池化方式:最大池化和平均池化。
上圖所展示的是取區(qū)域最大,即上圖左邊部分中 左上角2x2的矩陣中6最大,右上角2x2的矩陣中8最大,左下角2x2的矩陣中3最大,右下角2x2的矩陣中4最大,所以得到上圖右邊部分的結(jié)果:6 8 3 4。平均池化就是取平均值填入。
第三步,激活函數(shù)
為了簡化計算,需要把方框區(qū)域的負(fù)數(shù)權(quán)重改為0.ReLU的優(yōu)點是收斂快,求梯度簡單。
然后就是三步重復(fù)出現(xiàn),卷積運算,池化,激活函數(shù),卷積運算,池化,激活函數(shù)……我們希望最后的結(jié)果是使得損失函數(shù)最小,即準(zhǔn)確率最大。
3.2.8 基于異常檢測的視頻檢測子系統(tǒng)
有兩種實現(xiàn)代碼:
參考鏈接:https://paperswithcode.com/paper/real-world-anomaly-detection-in-surveillance
第一種:監(jiān)控視頻能夠捕捉到各種現(xiàn)實的異?,F(xiàn)象。我們建議通過利用正常和異常視頻來學(xué)習(xí)異常。為了避免注釋訓(xùn)練視頻中的異常片段或剪輯(這是非常耗時的),建議利用弱標(biāo)記的排名框架通過深度多實例訓(xùn)練視頻來訓(xùn)練異常,即訓(xùn)練標(biāo)簽(異?;蛘#?,是在視頻級而不是剪輯級。在此方法中,將正常視頻和異常視頻作為包和視頻片段作為多實例學(xué)習(xí)(MIL)的實例,并自動學(xué)習(xí)一個深度異常排名模型,該模型預(yù)測異常視頻片段的高異常分?jǐn)?shù)。此外,在排序損失函數(shù)中引入了稀疏性和時間平滑性約束,以更好地在訓(xùn)練過程中定位異常。
具體而言,就是在一段視頻中,只關(guān)心是否有異常事件的存在,而不關(guān)心具體的異常類型以及異常發(fā)生在哪些幀內(nèi)。
基于此,方法主要實現(xiàn)過程為:首先,使用C3D提取視頻特征,文章以32幀為一個bag進(jìn)行處理。C3D提取視頻時空特征是由Facebook團(tuán)隊提出來的。此文章使用公開的C3D預(yù)訓(xùn)練模型提取視頻特征,然后將提取好的特征拿出來,送到三層全連接層中,計算異常得分,根據(jù)異常得分,預(yù)測是否發(fā)生異常事件。
多實例學(xué)習(xí)(MIL)。平常的深度學(xué)習(xí)訓(xùn)練都是一個樣本對應(yīng)一個label,而在MIL中,出現(xiàn)bag這個概念,一個bag對應(yīng)一個label,一個正bag中至少需要有一個正樣本,一個負(fù)bag中只能全部是負(fù)樣本,而一個bag中,包含有多個樣本,所以叫多實例學(xué)習(xí),此文中,一個bag中包含有32個樣本。
但是此代碼的輸出做的并不算太好,常常有卡殼無法正常輸出正常結(jié)果的情況發(fā)生,故我們還準(zhǔn)備了第二種方案。
第二種:
參考鏈接:https://joshua-p-r-pan.blogspot.com/2018/05/violence-detection-by-cnn-lstm.html
擬議的網(wǎng)絡(luò)架構(gòu)如圖所示。研究表明,除了在CNN之后添加LSTM(該模型應(yīng)該能夠提取全局時間特征)外,可以從光流中獲得的局部時間特征也很重要。此外,光流的優(yōu)點在于其外觀不變性以及在邊界和小位移下的精確性。因此,在這項工作中,假設(shè)通過將兩個視頻幀作為輸入來模擬光流的影響。這兩個輸入幀由預(yù)先訓(xùn)練好的CNN處理。從預(yù)訓(xùn)練模型的底層輸出的兩個幀在最后一個通道中串聯(lián),然后饋送到附加的CNN。由于底層的輸出被視為低層特征,因此附加的CNN應(yīng)該通過比較兩幀特征圖來學(xué)習(xí)局部運動特征以及外觀不變特征。來自預(yù)訓(xùn)練網(wǎng)絡(luò)頂層的兩個幀輸出也被串聯(lián)并饋送到另一個附加的CNN中,以比較兩個幀的高級特征。然后將來自兩個附加CNN的輸出串聯(lián)起來,并傳遞到完全連接的層和LSTM單元,以學(xué)習(xí)全局時間特征。最后,LSTM細(xì)胞的輸出通過一個完全連接的層進(jìn)行分類,該層包含兩個神經(jīng)元,分別代表兩個類別(戰(zhàn)斗和非戰(zhàn)斗)。
由于其在ImageNet上的準(zhǔn)確性和上述實時性能,預(yù)訓(xùn)練模型由Darknet19實現(xiàn)。由于Darknet19已經(jīng)包含19個卷積層,為了避免退化問題,額外的CNN由殘差層實現(xiàn)。
精度評估
在這項工作中提出的模型可以輸出每幀的分類結(jié)果。然而,先前的研究評估了視頻級別的準(zhǔn)確性。為了能夠與之前的工作進(jìn)行比較,幀級結(jié)果通過以下策略進(jìn)行收集和處理:當(dāng)且僅當(dāng)該類別的連續(xù)信號的數(shù)量大于某個類別時,該視頻才被分類到某個類別臨界點。這樣的閾值可以通過從 0 掃描到視頻長度的閾值來得出,并查看哪個閾值在驗證集中產(chǎn)生最佳精度,如果有多個閾值可以產(chǎn)生相同的精度,則會選擇小的。
我們訓(xùn)練了三輪,第一輪的準(zhǔn)確率就已經(jīng)達(dá)到了91%,第三輪結(jié)束后,準(zhǔn)確率在94%左右,但比第一輪多花了兩倍的時間(完全不劃算)。
3.3硬件框圖
本系統(tǒng)無硬件
3.4系統(tǒng)軟件流程
第四章 系統(tǒng)功能設(shè)計
4.1微博熱搜榜及熱搜話題爬取子系統(tǒng)
1.系統(tǒng)架構(gòu): 主要分為微博熱搜榜的爬取及話題廣場熱門微博的內(nèi)容爬取兩個模塊,其中前者為后者的實行準(zhǔn)備了條件,前者的部分結(jié)果是后者的輸入,即在熱搜廣場掃描到一條熱搜并預(yù)處理后,將其Url提取出來并以此作為下一目標(biāo)進(jìn)入其話題廣場尋找內(nèi)容。
2.設(shè)計思路:基于微博熱搜榜,對于每條熱搜,獲取其熱搜話題的url,再發(fā)散式根據(jù)其url進(jìn)入話題廣場,爬取廣場中熱門微博的內(nèi)容,以了解熱搜詳細(xì)信息,將信息保存至數(shù)據(jù)庫以便展示。
4.2 微博圖像、視頻爬取子系統(tǒng)
1.系統(tǒng)架構(gòu):圖像與視頻得下載步驟相同,url在html中的Xpath也相同因此可共用一個程序。
2.設(shè)計思路:主要分為兩個步驟,一個是根據(jù)用戶輸入找到該微博的界面,然后通過selenium爬蟲從后臺Html代碼中找到圖片/視頻的url如下,然后通過此url進(jìn)入該圖片或視頻的網(wǎng)址并保存下載。
4.3 微博評論爬取及詞云生成子系統(tǒng)
1.系統(tǒng)架構(gòu):本子系統(tǒng)分為兩個模塊:評論區(qū)內(nèi)容爬取并保存、預(yù)處理和結(jié)巴分詞及生成詞云。前者的輸出作為后者的輸入。
2.設(shè)計思路:首先根據(jù)用戶輸入的指定微博的url,利用selenium爬蟲不斷爬取其評論區(qū)的內(nèi)容并保存在txt文件中,然后調(diào)用處理及生成的模塊對txt文件中的內(nèi)容進(jìn)行過濾篩除語氣詞等,并對預(yù)處理后的文本進(jìn)行結(jié)巴分詞,生成詞典,然后調(diào)用wordcloud庫生成詞云圖。
4.4 管控子系統(tǒng)
1.系統(tǒng)架構(gòu):本系統(tǒng)根據(jù)不同的管控方式分為三個模塊:按類型投訴舉報微博、評論區(qū)淹沒、話題廣場淹沒。三個模塊分別針對不同的目的及用途。
2.設(shè)計思路:分類投訴舉報微博模塊首先根據(jù)用戶輸入的微博url進(jìn)入微博頁,然后自動選擇登陸、認(rèn)證,通過selenium定位自動按順序點擊投訴、選擇類型、勾選協(xié)議、點擊提交。
評論區(qū)淹沒首先根據(jù)用戶輸入的微博id及微博api提供的開發(fā)接口https://api.weibo.com/2/comments/create.json將內(nèi)容、微博id、access_token進(jìn)行http包封裝然后發(fā)送到微博服務(wù)器。
話題廣場淹沒利用selenium模擬發(fā)微博流程,逐步登陸、認(rèn)證、發(fā)送微博。
4.5 文本特征提取及分類子系統(tǒng)
1.系統(tǒng)架構(gòu):本子系統(tǒng)分為特征詞提取和文本分類兩個模塊,其中文本分類模塊利用機(jī)器學(xué)習(xí)方法提高精確度和復(fù)用性。
2.設(shè)計思路:特征詞提取模塊使用課程中學(xué)習(xí)到的WM多模式匹配算法,WM多模式匹配算法同時兼具好后綴和壞前綴思路,因此能大大提高匹配速度和效率。而文本分類模塊使用經(jīng)典的樸素貝葉斯分類算法,利用特征詞提取模塊的結(jié)果作為輸入,基于機(jī)器學(xué)習(xí)為文本計算概率并分類。
4.6 基于PIL的色情圖片檢測子系統(tǒng)
1.系統(tǒng)架構(gòu):本子系統(tǒng)分為分割、縮小、處理模塊,其中縮小模塊用來縮小存儲空間,提高運算效率,處理模塊遍歷每個像素,檢測像素顏色是否為膚色,且將相鄰的膚色像素歸為一個皮膚區(qū)域
2.設(shè)計思路:色情圖片通常情況下會暴露大量的肉體,導(dǎo)致圖片中肉色占很大的比例,通過檢測圖片的肉色比例是否符合我們設(shè)置的要求,以此判斷是否為色情圖片。但此方法不可靠,若有一個人穿了肉色衣服,也可能被檢測為色情圖片,或者是色情圖片,但是轉(zhuǎn)換為灰度圖,則識別不出來。
4.7 基于卷積神經(jīng)網(wǎng)絡(luò)的檢測子系統(tǒng)
1.設(shè)計思路:通過卷積神經(jīng)網(wǎng)絡(luò),三層全連接,大量學(xué)習(xí)圖片,最后可以對測試集有90%的正確率。
2.使用指令:
python nsfw_predict.py 3.jpeg,其中3.jpeg是需檢測的圖片地址
4.8 基于異常檢測的視頻檢測子系統(tǒng)
1.設(shè)計思路:附加的CNN應(yīng)該通過比較兩幀特征圖來學(xué)習(xí)局部運動特征以及外觀不變特征。來自預(yù)訓(xùn)練網(wǎng)絡(luò)頂層的兩個幀輸出也被串聯(lián)并饋送到另一個附加的CNN中,以比較兩個幀的高級特征。然后將來自兩個附加CNN的輸出串聯(lián)起來,并傳遞到完全連接的層和LSTM單元,以學(xué)習(xí)全局時間特征。最后,LSTM細(xì)胞的輸出通過一個完全連接的層進(jìn)行分類,該層包含兩個神經(jīng)元,分別代表兩個類別(打架和非打架)。
2.使用指令:
python.exe Deploy.py .\SS\no4_xvid.avi .\output\r_no4_xvid.avi 其中.\SS\no4_xvid.avi是需要視頻檢測的路徑,.\output\r_no4_xvid.avi 是結(jié)果存放路徑
另外需要說明的是,因為該實驗每一幀的平均處理時間為0.109s,一秒的視頻被分為了30幀,若進(jìn)行跳幀檢測,則可以實現(xiàn)實時的視頻檢測。為實時直播視頻檢測提供了新思路。
第四章 系統(tǒng)功能設(shè)計
5.1 WM多模式匹配
WM多模式匹配算法是課程中提到的常用、高效的多模式匹配算法,在本系統(tǒng)中我們利用WM多模式匹配算法進(jìn)行對爬取到的微博文本內(nèi)容的特征詞提取,根據(jù)測試WM算法能夠在中文字符、英文字符、及其他符號字符中精確的提取到想要的特征詞,同時保證了高效率,時間復(fù)雜度較低,且在本系統(tǒng)中我們使用了課堂討論課中學(xué)習(xí)和介紹的WM優(yōu)化后的DWMSH算法,進(jìn)一步提高了效率。
5.2樸素貝葉斯分類
本系統(tǒng)的文本分類功能是基于樸素貝葉斯分類器算法實現(xiàn)的,樸素貝葉斯分類屬于機(jī)器學(xué)習(xí)算法的一種,我們只需準(zhǔn)備好四種類型特征詞及分類結(jié)果的樣本集,程序即可自學(xué)習(xí)的計算概率并對新輸入的特征詞序列進(jìn)行分類判別。
5.3 深度學(xué)習(xí)
卷積神經(jīng)網(wǎng)絡(luò),需要大量的訓(xùn)練樣本集合,訓(xùn)練出合適的模型后用測試樣本進(jìn)行準(zhǔn)確性計算,經(jīng)過合適的輪數(shù)確定參數(shù)模型,最后用來預(yù)測圖片或視頻的分類,相比較于其他分類方法,此方法需要大量的樣本,訓(xùn)練也需要一定的時間(我們訓(xùn)練用了12個小時),但是準(zhǔn)確率高,效果好。
第六章 總結(jié)
本系統(tǒng)基于微博網(wǎng)頁爬蟲及信息分析和管控,結(jié)合機(jī)器學(xué)習(xí),深度學(xué)習(xí)方法,同時針對圖像和音視頻信息進(jìn)行了分析和管控,使用了數(shù)據(jù)庫,制作了精美的界面,是一套完善的微博信息爬取、分析及管控系統(tǒng),同時精度高、效率高,具有良好的實用性,同時創(chuàng)新性的提出了針對黃色類型信息、暴力公布信息(打架斗毆、槍擊等)、異常信息(爆炸、車禍等)的識別和管控,一定程度上補(bǔ)充了微博服務(wù)器的信息識別和管控,有利于微博移動社交平臺更加正能量、更加和諧美好。
本系統(tǒng)充分將《信息內(nèi)容安全》課程所學(xué)知識用于實踐,并加以自己的理解、優(yōu)化和創(chuàng)新性功能,在過程中也學(xué)習(xí)更多課程外的相關(guān)知識、算法理論等。
最后感謝張老師、史老師和何老師以及各位助教學(xué)長的悉心指導(dǎo)。
參考文獻(xiàn)
[1]Real-world Anomaly Detection in Surveillance Videos
[2]Real-Time Violence Detection Using CNN-LSTM
參考鏈接:
https://paperswithcode.com/paper/real-world-anomaly-detection-in-surveillance
https://blog.csdn.net/v_JULY_v/article/details/51812459
https://www.cnblogs.com/wjw1014/p/10319652.html
https://joshua-p-r-pan.blogspot.com/2018/05/violence-detection-by-cnn-lstm.html文章來源:http://www.zghlxwxcb.cn/news/detail-429677.html
寫在最后:感謝我的隊友,我們一起完成此次實驗,在獲取她的同意后我才得以將此次實驗報告分享給大家,她說我這樣做是有意義的,她的話深深的激勵到了我,我也希望這樣能幫助到大家。
下面我會將每一板塊的代碼分開上傳請大家在我的主頁里查看相關(guān)內(nèi)容文章來源地址http://www.zghlxwxcb.cn/news/detail-429677.html
到了這里,關(guān)于哈工大信息內(nèi)容安全實驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!