国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv

這篇具有很好參考價值的文章主要介紹了計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 前言

?? 優(yōu)質競賽項目系列,今天要分享的是

?? **基于深度學習YOLOv5車輛顏色識別檢測 **

該項目較為新穎,適合作為競賽課題方向,學長非常推薦!

??學長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數:3分
  • 工作量:3分
  • 創(chuàng)新點:4分

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-714452.html

2 實現效果

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

3 CNN卷積神經網絡

卷積神經網絡(CNN),是由多層卷積結構組成的一種神經網絡。卷積結構可以減少網絡的內存占用、參數和模型的過擬合。卷積神經網絡是一種典型的深度學習算法。廣泛應用于視覺處理和人工智能領域,特別是在圖像識別和人臉識別領域。與完全連接的神經網絡相比,CNN輸入是通過交換參數和局部感知來提取圖像特征的圖像。卷積神經網絡是由輸入層、卷積層、池化層、全連接層和輸出層五層結構組成。其具體模型如下圖所示。
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

(1)輸入層(Input
layer):輸入層就是神經網絡的輸入端口,就是把輸入傳入的入口。通常傳入的圖像的R,G,B三個通道的數據。數據的輸入一般是多維的矩陣向量,其中矩陣中的數值代表的是圖像對應位置的像素點的值。

(2)卷積層(Convolution layer):卷積層在CNN中主要具有學習功能,它主要提取輸入的數據的特征值。

(3)池化層(Pooling
layer):池化層通過對卷積層的特征值進行壓縮來獲得自己的特征值,減小特征值的矩陣的維度,減小網絡計算量,加速收斂速度可以有效避免過擬合問題。

(4)全連接層(Full connected
layer):全連接層主要實現是把經過卷積層和池化層處理的數據進行集合在一起,形成一個或者多個的全連接層,該層在CNN的功能主要是實現高階推理計算。

(5)輸出層(Output layer):輸出層在全連接層之后,是整個神經網絡的輸出端口即把處理分析后的數據進行輸出。

cnn卷積神經網絡的編寫如下,編寫卷積層、池化層和全連接層的代碼

?

conv1_1 = tf.layers.conv2d(x, 16, (3, 3), padding='same', activation=tf.nn.relu, name='conv1_1')
conv1_2 = tf.layers.conv2d(conv1_1, 16, (3, 3), padding='same', activation=tf.nn.relu, name='conv1_2')
pool1 = tf.layers.max_pooling2d(conv1_2, (2, 2), (2, 2), name='pool1')
conv2_1 = tf.layers.conv2d(pool1, 32, (3, 3), padding='same', activation=tf.nn.relu, name='conv2_1')
conv2_2 = tf.layers.conv2d(conv2_1, 32, (3, 3), padding='same', activation=tf.nn.relu, name='conv2_2')
pool2 = tf.layers.max_pooling2d(conv2_2, (2, 2), (2, 2), name='pool2')
conv3_1 = tf.layers.conv2d(pool2, 64, (3, 3), padding='same', activation=tf.nn.relu, name='conv3_1')
conv3_2 = tf.layers.conv2d(conv3_1, 64, (3, 3), padding='same', activation=tf.nn.relu, name='conv3_2')
pool3 = tf.layers.max_pooling2d(conv3_2, (2, 2), (2, 2), name='pool3')
conv4_1 = tf.layers.conv2d(pool3, 128, (3, 3), padding='same', activation=tf.nn.relu, name='conv4_1')
conv4_2 = tf.layers.conv2d(conv4_1, 128, (3, 3), padding='same', activation=tf.nn.relu, name='conv4_2')
pool4 = tf.layers.max_pooling2d(conv4_2, (2, 2), (2, 2), name='pool4')

flatten = tf.layers.flatten(pool4)
fc1 = tf.layers.dense(flatten, 512, tf.nn.relu)
fc1_dropout = tf.nn.dropout(fc1, keep_prob=keep_prob)
fc2 = tf.layers.dense(fc1, 256, tf.nn.relu)
fc2_dropout = tf.nn.dropout(fc2, keep_prob=keep_prob)
fc3 = tf.layers.dense(fc2, 2, None)

4 Yolov5

簡介

我們選擇當下YOLO最新的卷積神經網絡YOLOv5來進行火焰識別檢測。6月9日,Ultralytics公司開源了YOLOv5,離上一次YOLOv4發(fā)布不到50天。而且這一次的YOLOv5是完全基于PyTorch實現的!在我們還對YOLOv4的各種高端操作、豐富的實驗對比驚嘆不已時,YOLOv5又帶來了更強實時目標檢測技術。按照官方給出的數目,現版本的YOLOv5每個圖像的推理時間最快0.007秒,即每秒140幀(FPS),但YOLOv5的權重文件大小只有YOLOv4的1/9。

目標檢測架構分為兩種,一種是two-stage,一種是one-stage,區(qū)別就在于 two-stage 有region
proposal過程,類似于一種海選過程,網絡會根據候選區(qū)域生成位置和類別,而one-stage直接從圖片生成位置和類別。今天提到的 YOLO就是一種
one-stage方法。YOLO是You Only Look Once的縮寫,意思是神經網絡只需要看一次圖片,就能輸出結果。YOLO
一共發(fā)布了五個版本,其中 YOLOv1 奠定了整個系列的基礎,后面的系列就是在第一版基礎上的改進,為的是提升性能。

YOLOv5有4個版本性能如圖所示:
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

網絡架構圖

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

YOLOv5是一種單階段目標檢測算法,該算法在YOLOv4的基礎上添加了一些新的改進思路,使其速度與精度都得到了極大的性能提升。主要的改進思路如下所示:

輸入端

在模型訓練階段,提出了一些改進思路,主要包括Mosaic數據增強、自適應錨框計算、自適應圖片縮放;

Mosaic數據增強
:Mosaic數據增強的作者也是來自YOLOv5團隊的成員,通過隨機縮放、隨機裁剪、隨機排布的方式進行拼接,對小目標的檢測效果很不錯
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

基準網絡

融合其它檢測算法中的一些新思路,主要包括:Focus結構與CSP結構;

Neck網絡

在目標檢測領域,為了更好的提取融合特征,通常在Backbone和輸出層,會插入一些層,這個部分稱為Neck。Yolov5中添加了FPN+PAN結構,相當于目標檢測網絡的頸部,也是非常關鍵的。

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

FPN+PAN的結構
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java
這樣結合操作,FPN層自頂向下傳達強語義特征(High-Level特征),而特征金字塔則自底向上傳達強定位特征(Low-
Level特征),兩兩聯(lián)手,從不同的主干層對不同的檢測層進行特征聚合。

FPN+PAN借鑒的是18年CVPR的PANet,當時主要應用于圖像分割領域,但Alexey將其拆分應用到Yolov4中,進一步提高特征提取的能力。

Head輸出層

輸出層的錨框機制與YOLOv4相同,主要改進的是訓練時的損失函數GIOU_Loss,以及預測框篩選的DIOU_nms。

對于Head部分,可以看到三個紫色箭頭處的特征圖是40×40、20×20、10×10。以及最后Prediction中用于預測的3個特征圖:

?
①==>40×40×255

②==>20×20×255

③==>10×10×255

?

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

  • 相關代碼

    class Detect(nn.Module):
      stride = None  # strides computed during build
      onnx_dynamic = False  # ONNX export parameter
        
      def __init__(self, nc=80, anchors=(), ch=(), inplace=True):  # detection layer
          super().__init__()
          self.nc = nc  # number of classes
          self.no = nc + 5  # number of outputs per anchor
          self.nl = len(anchors)  # number of detection layers
          self.na = len(anchors[0]) // 2  # number of anchors
          self.grid = [torch.zeros(1)] * self.nl  # init grid
          self.anchor_grid = [torch.zeros(1)] * self.nl  # init anchor grid
        self.register_buffer('anchors', torch.tensor(anchors).float().view(self.nl, -1, 2))  # shape(nl,na,2)
          self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch)  # output conv
          self.inplace = inplace  # use in-place ops (e.g. slice assignment)
        
      def forward(self, x):
          z = []  # inference output
          for i in range(self.nl):
            x[i] = self.m[i](x[i])  # conv
              bs, _, ny, nx = x[i].shape  # x(bs,255,20,20) to x(bs,3,20,20,85)
              x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
        
    
              if not self.training:  # inference
                  if self.onnx_dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]:
                      self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i)
        
                  y = x[i].sigmoid()
                  if self.inplace:
                      y[..., 0:2] = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i]  # xy
                      y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i]  # wh
                  else:  # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953
                    xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i]  # xy
                      wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i]  # wh
                    y = torch.cat((xy, wh, y[..., 4:]), -1)
                  z.append(y.view(bs, -1, self.no))
        
          return x if self.training else (torch.cat(z, 1), x)
    
      def _make_grid(self, nx=20, ny=20, i=0):
          d = self.anchors[i].device
          if check_version(torch.__version__, '1.10.0'):  # torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibility
              yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)], indexing='ij')
          else:
              yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)])
          grid = torch.stack((xv, yv), 2).expand((1, self.na, ny, nx, 2)).float()
          anchor_grid = (self.anchors[i].clone() * self.stride[i]) \
              .view((1, self.na, 1, 1, 2)).expand((1, self.na, ny, nx, 2)).float()
          return grid, anchor_grid
    

6 數據集處理及模型訓練

數據集準備

由于目前汽車顏色圖片并沒有現成的數據集,我們使用Python爬蟲利用關鍵字在互聯(lián)網上獲得的圖片數據,編寫程序爬了1w張,篩選后用于訓練。

深度學習圖像標注軟件眾多,按照不同分類標準有多中類型,本文使用LabelImg單機標注軟件進行標注。LabelImg是基于角點的標注方式產生邊界框,對圖片進行標注得到xml格式的標注文件,由于邊界框對檢測精度的影響較大因此采用手動標注,并沒有使用自動標注軟件。

考慮到有的朋友時間不足,博主提供了標注好的數據集和訓練好的模型,需要請聯(lián)系。

數據標注簡介

通過pip指令即可安裝

?
pip install labelimg

在命令行中輸入labelimg即可打開

計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java
后續(xù)課查看其他標注教程,不難。

開始訓練模型

處理好數據集和準備完yaml文件,就可以開始yolov5的訓練了。首先我們找到train.py這個py文件。

然后找到主函數的入口,這里面有模型的主要參數。修改train.py中的weights、cfg、data、epochs、batch_size、imgsz、device、workers等參數
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

至此,就可以運行train.py函數訓練自己的模型了。

訓練代碼成功執(zhí)行之后會在命令行中輸出下列信息,接下來就是安心等待模型訓練結束即可。
計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv,python,java

5 最后

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

到了這里,關于計算機競賽 深度學習YOLOv5車輛顏色識別檢測 - python opencv的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 計算機競賽 交通目標檢測-行人車輛檢測流量計數 - 計算機競賽

    計算機競賽 交通目標檢測-行人車輛檢測流量計數 - 計算機競賽

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 畢業(yè)設計 交通目標檢測-行人車輛檢測流量計數 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://

    2024年02月12日
    瀏覽(18)
  • 計算機競賽 深度學習乳腺癌分類

    計算機競賽 深度學習乳腺癌分類

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 深度學習乳腺癌分類 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgradu

    2024年02月07日
    瀏覽(31)
  • 計算機競賽 目標檢測-行人車輛檢測流量計數

    計算機競賽 目標檢測-行人車輛檢測流量計數

    ?? 優(yōu)質競賽項目系列,今天要分享的是 行人車輛目標檢測計數系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 目標檢測,粗略來說就是:輸入圖片/視頻,經過處理,得到:目標的位置信息(比如

    2024年02月07日
    瀏覽(20)
  • 計算機競賽 基于深度學習的人臉表情識別

    計算機競賽 基于深度學習的人臉表情識別

    ?? 優(yōu)質競賽項目系列,今天要分享的是 基于深度學習的人臉表情識別 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 面部表情識別技術源于1971年心理學家Ekman和Friesen的一項研究,他們提出人類主要有

    2024年02月10日
    瀏覽(860)
  • 基于深度學習的人臉表情識別 計算機競賽

    基于深度學習的人臉表情識別 計算機競賽

    ?? 優(yōu)質競賽項目系列,今天要分享的是 基于深度學習的人臉表情識別 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 面部表情識別技術源于1971年心理學家Ekman和Friesen的一項研究,他們提出人類主要有

    2024年02月06日
    瀏覽(786)
  • 交通目標檢測-行人車輛檢測流量計數 - 計算機競賽

    交通目標檢測-行人車輛檢測流量計數 - 計算機競賽

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 畢業(yè)設計 交通目標檢測-行人車輛檢測流量計數 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://

    2024年02月07日
    瀏覽(90)
  • 計算機競賽 題目:基于深度學習的手勢識別實現

    計算機競賽 題目:基于深度學習的手勢識別實現

    ?? 優(yōu)質競賽項目系列,今天要分享的是 基于深度學習的手勢識別實現 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 手勢識別在深度學習項目是算是比較簡單的。這里為了給大家會更好的訓練。其中

    2024年02月07日
    瀏覽(101)
  • 計算機競賽 機器視覺目標檢測 - opencv 深度學習

    計算機競賽 機器視覺目標檢測 - opencv 深度學習

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 機器視覺 opencv 深度學習目標檢測 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/dancheng

    2024年02月07日
    瀏覽(101)
  • 計算機競賽 垃圾郵件(短信)分類算法實現 機器學習 深度學習

    計算機競賽 垃圾郵件(短信)分類算法實現 機器學習 深度學習

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 垃圾郵件(短信)分類算法實現 機器學習 深度學習 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https:

    2024年02月11日
    瀏覽(29)
  • 計算機競賽 深度學習 python opencv 火焰檢測識別

    計算機競賽 深度學習 python opencv 火焰檢測識別

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于深度學習的火焰識別算法研究與實現 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數:4分 工作量:4分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https://gitee.co

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包