本文目錄一覽:
- 1、高大上的YOLOV3對象檢測演算法,使用python也可輕鬆實現
- 2、python網格搜索支持向量回歸得分低,為0.003,偶爾還會出現負數,該怎麼處理?
- 3、用python編寫程序計算運動會某個參賽選手的得分?
- 4、Python如何圖像識別?
- 5、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網格搜索支持向量回歸得分低,為0.003,偶爾還會出現負數,該怎麼處理?
使用Python編程可以快速遷移代碼並進行改動,無須花費過多的精力在修改代碼與代碼規範上。開發者在Python中封裝了很多優秀的依賴庫,可以直接拿來使用,常見的機器學習庫如下:
1、Scikit-Learn
Scikit-Learn基於Numpy和Scipy,是專門為機器學習建造的一個Python模塊,提供了大量用於數據挖掘和分析的工具,包括數據預處理、交叉驗證、演算法與可視化演算法等一系列介面。
Scikit-Learn基本功能可分為六個部分:分類、回歸、聚類、數據降維、模型選擇、數據預處理。其中集成了大量分類、回歸、聚類功能,包括支持向量機、邏輯回歸、隨機森林、樸素貝葉斯等。
2、Orange3
Orange3是一個基於組件的數據挖掘和機器學習軟體套裝,支持Python進行腳本開發。它包含一系列的數據可視化、檢索、預處理和建模技術,具有一個良好的用戶界面,同時也可以作為Python的一個模塊使用。
用戶可通過數據可視化進行數據分析,包含統計分布圖、柱狀圖、散點圖,以及更深層次的決策樹、分層聚簇、熱點圖、MDS等,並可使用它自帶的各類附加功能組件進行NLP、文本挖掘、構建網路分析等。
3、XGBoost
XGBoost是專註於梯度提升演算法的機器學習函數庫,因其優良的學習效果及高效的訓練速度而獲得廣泛的關注。XGBoost支持並行處理,比起同樣實現了梯度提升演算法的Scikit-Learn庫,其性能提升10倍以上。XGBoost可以處理回歸、分類和排序等多種任務。
4、NuPIC
NuPIC是專註於時間序列的一個機器學習平台,其核心演算法為HTM演算法,相比於深度學習,其更為接近人類大腦的運行結構。HTM演算法的理論依據主要是人腦中處理高級認知功能的新皮質部分的運行原理。NuPIC可用於預測以及異常檢測,使用面非常廣,僅要求輸入時間序列即可。
5、Milk
Milk是Python中的一個機器學習工具包。Milk注重提升運行速度與降低內存佔用,因此大部分對性能敏感的代碼都是使用C++編寫的,為了便利性在此基礎上提供Python介面。重點提供監督分類方法,如SVMs、KNN、隨機森林和決策樹等。
用python編寫程序計算運動會某個參賽選手的得分?
# 讀取文件 得到分數
with open(‘0.txt’, ‘r’) as f:
txt = f.read()
print(txt) # txt = ‘9.37 9.52 9.98 10 9.85 9.73 9.93 9.76 9.81 9.08’
txtList=txt.split()#用空格分割為列表
print(txtList) # [‘9.37’, ‘9.52’, ‘9.98’, ’10’, ‘9.85’, ‘9.73’, ‘9.93’, ‘9.76’, ‘9.81’, ‘9.08’]
newList = []
for i in txtList:
newList.append(float(i)) # 字元串轉浮點數 添加到新列表
print(newList) # [9.37, 9.52, 9.98, 10.0, 9.85, 9.73, 9.93, 9.76, 9.81, 9.08]
newList.remove(max(newList)) # 刪除最大 10.0
newList.remove(min(newList)) # 刪除最小 9.08
print(newList) # [9.37, 9.52, 9.98, 9.85, 9.73, 9.93, 9.76, 9.81]
lens = 0
for i in newList:
lens += i # 累加
print(lens) # 總計 77.95
n = lens / len(newList) # 77.95 / 8 平均分 9.74375
print(round(n,2)) # 四捨五入值 9.74
Python如何圖像識別?
1. 簡介。
圖像處理是一門應用非常廣的技術,而擁有非常豐富第三方擴展庫的 Python 當然不會錯過這一門盛宴。PIL (Python Imaging Library)是 Python 中最常用的圖像處理庫,目前版本為 1.1.7,我們可以 在這裡 下載學習和查找資料。
Image 類是 PIL 庫中一個非常重要的類,通過這個類來創建實例可以有直接載入圖像文件,讀取處理過的圖像和通過抓取的方法得到的圖像這三種方法。
2. 使用。
導入 Image 模塊。然後通過 Image 類中的 open 方法即可載入一個圖像文件。如果載入文件失敗,則會引起一個 IOError ;若無返回錯誤,則 open 函數返回一個 Image 對象。現在,我們可以通過一些對象屬性來檢查文件內容,即:
1 import Image
2 im = Image.open(“j.jpg”)
3 print im.format, im.size, im.mode
4 JPEG (440, 330) RGB
這裡有三個屬性,我們逐一了解。
format : 識別圖像的源格式,如果該文件不是從文件中讀取的,則被置為 None 值。
size : 返回的一個元組,有兩個元素,其值為象素意義上的寬和高。
mode : RGB(true color image),此外還有,L(luminance),CMTK(pre-press image)。
現在,我們可以使用一些在 Image 類中定義的方法來操作已讀取的圖像實例。比如,顯示最新載入的圖像:
1 im.show()
2
輸出原圖:
3. 函數概貌。
3.1 Reading and Writing Images : open( infilename ) , save( outfilename )
3.2 Cutting and Pasting and Merging Images :
crop() : 從圖像中提取出某個矩形大小的圖像。它接收一個四元素的元組作為參數,各元素為(left, upper, right, lower),坐標系統的原點(0, 0)是左上角。
paste() :
merge() :
1 box = (100, 100, 200, 200)
2 region = im.crop(box)
3 region.show()
4 region = region.transpose(Image.ROTATE_180)
5 region.show()
6 im.paste(region, box)
7 im.show()
其效果圖為:
旋轉一幅圖片:
1 def roll(image, delta):
2 “Roll an image sideways”
3
4 xsize, ysize = image.size
5
6 delta = delta % xsize
7 if delta == 0: return image
8
9 part1 = image.crop((0, 0, delta, ysize))
10 part2 = image.crop((delta, 0, xsize, ysize))
11 image.paste(part2, (0, 0, xsize-delta, ysize))
12 image.paste(part1, (xsize-delta, 0, xsize, ysize))
13
14 return image
3.3 幾何變換。
3.3.1 簡單的幾何變換。
1 out = im.resize((128, 128)) #
2 out = im.rotate(45) #逆時針旋轉 45 度角。
3 out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右對換。
4 out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下對換。
5 out = im.transpose(Image.ROTATE_90) #旋轉 90 度角。
6 out = im.transpose(Image.ROTATE_180) #旋轉 180 度角。
7 out = im.transpose(Image.ROTATE_270) #旋轉 270 度角。
各個調整之後的圖像為:
圖片1:
圖片2:
圖片3:
圖片4:
3.3.2 色彩空間變換。
convert() : 該函數可以用來將圖像轉換為不同色彩模式。
3.3.3 圖像增強。
Filters : 在 ImageFilter 模塊中可以使用 filter 函數來使用模塊中一系列預定義的增強濾鏡。
1 import ImageFilter
2 imfilter = im.filter(ImageFilter.DETAIL)
3 imfilter.show()
3.4 序列圖像。
即我們常見到的動態圖,最常見的後綴為 .gif ,另外還有 FLI / FLC 。PIL 庫對這種動畫格式圖也提供了一些基本的支持。當我們打開這類圖像文件時,PIL 自動載入圖像的第一幀。我們可以使用 seek 和 tell 方法在各幀之間移動。
1 import Image
2 im.seek(1) # skip to the second frame
3
4 try:
5 while 1:
6 im.seek( im.tell() + 1)
7 # do something to im
8 except EOFError:
9 pass
3.5 更多關於圖像文件的讀取。
最基本的方式:im = Image.open(“filename”)
類文件讀取:fp = open(“filename”, “rb”); im = Image.open(fp)
字元串數據讀取:import StringIO; im = Image.open(StringIO.StringIO(buffer))
從歸檔文件讀取:import TarIO; fp = TarIo.TarIO(“Image.tar”, “Image/test/lena.ppm”); im = Image.open(fp)
基本的 PIL 目前就練習到這裡。其他函數的功能可點擊 這裡 進一步閱讀。
python處理圖片數據?
生成一張純色的圖片
先設置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設置成rgba,類似的還有rgb,L(灰度圖等),尺寸設定為640,480,這個可以根據自己的情況設定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環就可以解決。首先創建一個顏色列表,把要生成的圖片顏色放進去。接著循環獲取不同的顏色,保存的時候利用字元串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數
前面的方法已經可以批量生成圖片了,為了通用性強一點,我們可以封裝成函數,把哪些可以改變的參數單獨抽離出來。尺寸也同樣,使用的時候,可以根據自己的需要定義顏色列表和尺寸。當然還有加一些提示用語和報錯兼容性,這裡就不講了。
本地生成的圖片
原創文章,作者:SO63G,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129888.html