日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

深度学习:Opencv的BlobfromImage如何工作

發(fā)布時(shí)間:2023/11/27 生活经验 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习:Opencv的BlobfromImage如何工作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

深度學(xué)習(xí):Opencv的BlobfromImage如何工作

    • 1. 原理
      • 1.2 均值減法是什么
      • 1.3 cv2.dnn.BlogFromImage
    • 2. 源碼
    • 參考

想要從深度神經(jīng)網(wǎng)絡(luò)獲取正確的預(yù)測,首先需要預(yù)處理數(shù)據(jù)。 在深度學(xué)習(xí)、圖像分類中,通常會(huì)用到:

  • 均值減法
  • 按一定比例因子縮放

OpenCV的新神經(jīng)網(wǎng)絡(luò)(DNN deep nerual network)模塊包含兩個(gè)功能,可用于預(yù)處理圖像并通過預(yù)先接受訓(xùn)練的深度學(xué)習(xí)模型對(duì)它們進(jìn)行分類。

這篇博客將使用并介紹OpenCV的 cv2.dnn.BlobFromImage 和 cv2.dnn.BlobFromImages 是如何工作的。

1. 原理

OpenCV提供了倆個(gè)方法,可以對(duì)圖像預(yù)處理進(jìn)行深度學(xué)習(xí)分類:

  • cv2.dnn.BlobFromImage
  • cv2.dnn.BlobFromImages

這兩個(gè)功能包括

  • 均值減法(rgb顏色通道均值,分別用各通道減去均值)
  • 縮放(然后應(yīng)用一個(gè)比例因子進(jìn)行歸一化處理);
  • 可選的通道交換

均值: , ,

均值減法: , ,

比例因子: 以促進(jìn)歸一化, , ,

1.2 均值減法是什么

均值減法用于幫助對(duì)數(shù)據(jù)集中輸入圖像的照明變換進(jìn)行均衡。因此可以將均值減法視為用于幫助卷積神經(jīng)網(wǎng)絡(luò)的技術(shù)。

預(yù)處理的方法不只均值減法、縮放,還有歸一化等;

1.3 cv2.dnn.BlogFromImage

該方法返回一個(gè)blob,寬度高度深度的圖像

blob = cv2.dnn.blobFromImage(image, scalefactor=1.0, size, mean, swapRB=True)

  • image: 想要預(yù)處理的輸入圖像

  • saclefactor: 比例因子,執(zhí)行均值減法后,可通過某種因子來擴(kuò)展圖像。默認(rèn)為“1.0”(即,不縮放),但也可以提供另一個(gè)值。標(biāo)記Scalefactor也很重要應(yīng)該是1
    / sigma,因?yàn)閷?shí)際乘以Scalefactor的輸入通道(平均減法)。

  • size:卷積神經(jīng)網(wǎng)絡(luò)期望的空間尺寸。對(duì)于大多數(shù)最新的最先進(jìn)的神經(jīng)網(wǎng)絡(luò),這是224×224,227×227或299×299。

  • mean: 均值減法值。可以是RGB的3元組,也可以是單個(gè)值。在這種情況下,從圖像的每個(gè)通道值中減去提供的值。當(dāng)SwapRB = TRUE時(shí),確保該值為“(R,G,B)” 3元組

  • swaprb:OpenCV假定圖像處于BGR通道順序;但是,“均值”假定正在使用RGB通道數(shù)據(jù),要解決此差異,需要在圖像中交換R和B通道。通過將此值設(shè)置為true。默認(rèn)情況下,OpenCV會(huì)執(zhí)行RB通道交換;

blob = cv2.dnn.blobFromImages(images, scalefactor=1.0, size, mean, swapRB=True) 差別只是入?yún)⒖梢允嵌鄠€(gè)圖片,多張圖片的處理調(diào)用該方法可降低處理開銷。

2. 源碼

# 導(dǎo)入必要的包
from imutils import paths
import numpy as np
import cv2# 從磁盤加載標(biāo)簽類
rows = open("synset_words.txt").read().strip().split("\n")
classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]# 從磁盤加載序列化的模型
net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt","bvlc_googlenet.caffemodel")# 獲取輸入圖片的路徑
imagePaths = sorted(list(paths.list_images("images/")))# 從磁盤加載第一張照片
# 預(yù)處理圖片:縮放到224*224,通過預(yù)先訓(xùn)練的網(wǎng)絡(luò)構(gòu)造一個(gè)可以通過的斑點(diǎn)
image = cv2.imread(imagePaths[0])
resized = cv2.resize(image, (224, 224))
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
print("First Blob: {}".format(blob.shape))# 設(shè)置blob為深度學(xué)習(xí)網(wǎng)絡(luò)預(yù)訓(xùn)練的input
# 獲取1000種類中,預(yù)測的可能輸出結(jié)果及可能性
net.setInput(blob)
preds = net.forward()# 倒序排序可能性,獲取預(yù)測可能最高的類標(biāo)簽,繪制在輸入圖像上
idx = np.argsort(preds[0])[::-1][0]
text = "Label: {}, {:.2f}%".format(classes[idx],preds[0][idx] * 100)
cv2.putText(image, text, (5, 25), cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 0, 255), 2)# 展示輸出圖像
cv2.imshow("Image", image)
cv2.waitKey(0)# 初始化照片列表,之后會(huì)傳給網(wǎng)絡(luò)
images = []# 遍歷輸入圖像(過濾掉第一張,因?yàn)橐呀?jīng)分類過),預(yù)處理每張圖像,并更新圖像列表
for p in imagePaths[1:]:image = cv2.imread(p)image = cv2.resize(image, (224, 224))images.append(image)# 轉(zhuǎn)換圖像list為opencv可編譯的blob
blob = cv2.dnn.blobFromImages(images, 1, (224, 224), (104, 117, 123))
print("Second Blob: {}".format(blob.shape))# 設(shè)置blob為深度學(xué)習(xí)網(wǎng)絡(luò)預(yù)訓(xùn)練的input
# 獲取1000種類中,預(yù)測的可能輸出結(jié)果及可能性
net.setInput(blob)
preds = net.forward()# 遍歷輸入圖像
for (i, p) in enumerate(imagePaths[1:]):# 從磁盤加載圖像image = cv2.imread(p)# 尋找可能性最高的預(yù)測分類,并繪制標(biāo)簽到圖像上idx = np.argsort(preds[i])[::-1][0]text = "Label: {}, {:.2f}%".format(classes[idx],preds[i][idx] * 100)cv2.putText(image, text, (5, 25), cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 0, 255), 2)# 展示輸出圖像cv2.imshow("Image", image)cv2.waitKey(0)

參考

  • https://www.pyimagesearch.com/2017/11/06/deep-learning-opencvs-blobfromimage-works/

總結(jié)

以上是生活随笔為你收集整理的深度学习:Opencv的BlobfromImage如何工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。