本文目錄一覽:
- 1、高大上的YOLOV3對象檢測演算法,使用python也可輕鬆實現
- 2、如何查看python源代碼
- 3、NLP之gensim庫python實現文本相似度/匹配/查重
- 4、python代碼查重原理
- 5、10個極簡python代碼,拿走即用
高大上的YOLOV3對象檢測演算法,使用python也可輕鬆實現
繼續我們的目標檢測演算法的分享,前期我們介紹了SSD目標檢測演算法的python實現以及Faster-RCNN目標檢測演算法的python實現以及yolo目標檢測演算法的darknet的window環境安裝,本期我們簡單介紹一下如何使用python來進行YOLOV3的對象檢測演算法
YOLOV3的基礎知識大家可以參考往期文章,本期重點介紹如何使用python來實現
1、初始化模型
14-16 行:
模型的初始化依然使用cv下的DNN模型來載入模型,需要注意的是CV的版本需要大於3.4.2
5-8行:
初始化模型在coco上的label以便後期圖片識別使用
10-12行:
初始化圖片顯示方框的顏色
2、載入圖片,進行圖片識別
輸入識別的圖片進行圖片識別,這部分代碼跟往期的SSD 以及RCNN目標檢測演算法類似
19-20行:輸入圖片,獲取圖片的長度與寬度
25-29行:計算圖片的blob值,輸入神經網路,進行前向反饋預測圖片
只不過net.forward裡面是ln, 神經網路的所有out層
3、遍歷所有的out層,獲取檢測圖片的label與置信度
遍歷out層,獲取檢測到的label值以及置信度,檢測到這裡YOLOV3以及把所有的檢測計算完成,但是由於yolov3對重疊圖片或者靠的比較近的圖片檢測存在一定的問題,使用YOLOV3使用非最大值抑制來抑制弱的重疊邊界
竟然把墨鏡識別了手機,體現了YOLOV3在重疊圖片識別的缺點
4、應用非最大值抑制來抑制弱的重疊邊界,顯示圖片
56: 使用 非最大值抑制來抑制弱的重疊邊界
58-59行:遍歷所有圖片
61-62行:提取檢測圖片的BOX
64-68行:顯示圖片信息
70-71行:顯示圖片
利用python來實現YOLOV3,與SSD 以及RCNN代碼有很多類似的地方,大家可以參考往期的文章進行對比學習,把代碼執行一遍
進行視頻識別的思路:從視頻中提取圖片,進行圖片識別,識別完成後,再把識別的結果實時體現在視頻中,這部分代碼結合前期的視頻識別,大家可以參考多進程視頻實時識別篇,因為沒有多進程,檢測速度很慢,視頻看著比較卡
1、初始化模型以及視頻流
2、從視頻中提取圖片,進行圖片的blob值計算,進行神經網路的預測
3、提取檢測到圖片的置信度以及ID值
4、 應用非最大值抑制來抑制弱的重疊邊界,顯示圖片
5、關閉資源,顯示圖片處理信息
每個目標檢測演算法都有自己的優缺點,個人感覺,在精度要求不是太高的情況下SSD檢測演算法可以實現較快的速度實現,畢竟精度差不多的情況下,我們希望速度越快越好
如何查看python源代碼
眾所周知,Python內建了許多函數模塊,並且我們可能還會安裝許多第三方模塊等等。
下面以getpass為例查看其源代碼。
1.help(getpass)
輸入該命令找到file路徑,並且可以查看其其提供的功能。
2.利用getpass.__file__查看位置
最後找到該文件,用記事本或其他編輯器打開即可。
3.PyCharm編輯器
在該類或方法上按住「ctr+滑鼠左鍵」可以快速查看源代碼。
4.dir(對象名)
該方法可以快速查看有哪些方法。
想要查看每個功能的解釋,用help(type(對象名))
python學習網,大量的免費python視頻教程,歡迎在線學習!
NLP之gensim庫python實現文本相似度/匹配/查重
給定一個或多個搜索詞,如「高血壓 患者」,從已有的若干篇文本中找出最相關的(n篇)文本。
文本檢索(text retrieve)的常用策略是:用一個ranking function根據搜索詞對所有文本進行排序,選取前n個,就像百度搜索一樣。
結巴分詞後的停用詞性 [標點符號、連詞、助詞、副詞、介詞、時語素、『的』、數詞、方位詞、代詞]
對一篇文章分詞、去停用詞
對目錄下的所有文本進行預處理,構建字典
python代碼查重原理
a=[‘python’,1,2,3,1,6,’a’,’a’,3,3,3,’a’,’python’,’3′,’8′]
b=list(set(a))
cf=[]
for i in b:
cf.append(a.count(b))
for i in range(len(b)):
print(b[i],’一共有’,cf[i],’個’,sep=”)
10個極簡python代碼,拿走即用
Hello,大家好,我是程序汪小成~
雖然python是一個易入門的語言,但是很多人依然還是會問到底怎麼樣學 Python 才最快,答案當然是實戰各種小項目, 只有自己去想與寫,才記得住規則 。本文寫的是 10 個極簡任務,初學者可以嘗試著自己實現;本文同樣也是 10段代碼,Python 開發者也可以看看是不是有沒想到的用法。
以下方法可以檢查給定列表是不是存在重複元素,它會使用 set() 函數來移除所有重複元素。
給定具體的大小,定義一個函數以按照這個大小切割列表。
這個方法可以將布爾型的值去掉,例如(False,None,0,「」),它使用 filter() 函數。
我們常用 For 循環來遍歷某個列表,同樣我們也能枚舉列表的索引與值。
如下代碼段可以將打包好的成對列表解開成兩組不同的元組。
該方法將通過遞歸的方式將列表的嵌套展開為單個列表。
該方法將返回第一個列表的元素,且不在第二個列表內。如果同時要反饋第二個列表獨有的元素,還需要加一句 set_b.difference(set_a)。
如下代碼塊可以用來計算執行特定代碼所花費的時間。
該演算法會打亂列表元素的順序,它主要會通過 Fisher-Yates 演算法對新列表進行排序:
不需要額外的操作就能交換兩個變數的值。
以上,是我簡單列舉的十個python極簡代碼,拿走即用,希望對你有所幫助!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247798.html