一、YOLO網路結構圖
YOLO(You Only Look Once)是一種實時目標檢測的演算法,其最初由 Joseph Redmon 在2015年提出。
該演算法通過對輸入圖像進行單次前向傳遞,同時在圖像中預測邊界框和類別。這使得其在速度和準確率方面都有了巨大的提升。
下面是YOLO網路結構圖:
<img src="yolo_structure.jpg" alt="YOLO網路結構圖" />
二、OSI網路結構
OSI(Open Systems Interconnection)是ISO(International Organization for Standardization)組的一個標準,用於在計算機和通信系統之間定義一個框架。它定義了一個通用的通信介面,使得不同類型的計算機可以在同一網路上相互通信。
OSI模型由7層組成,分別是:
- 物理層
- 數據鏈路層
- 網路層
- 傳輸層
- 會話層
- 表示層
- 應用層
每一層都負責一個不同的方面,例如物理層處理物理傳輸介質,表示層和會話層協調不同計算機之間的通信。
三、YOLO網路結構詳解
YOLO網路結構由一個卷積神經網路(CNN)和一個全連接層組成。CNN用於提取圖像中的特徵,全連接層則將提取的特徵轉換成邊界框和類別概率。
YOLO的輸入圖像被分割成S×S個網格單元,每個單元預測B個邊界框和C個類別概率。每個單元負責預測邊界框是否包含一個物體,以及該物體屬於哪個類別。因此,YOLO總共預測了S×S×B個邊界框和S×S×C個類別概率。
下面是CNN部分的網路結構:
inputs = Input(shape=(416,416,3))
model = Conv2D(32, (3,3), strides=(1,1), padding='same', activation='relu')(inputs)
model = MaxPooling2D(pool_size=(2,2))(model)
model = Conv2D(64, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = MaxPooling2D(pool_size=(2,2))(model)
model = Conv2D(128, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(64, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(128, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = MaxPooling2D(pool_size=(2,2))(model)
model = Conv2D(256, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(128, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(256, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = MaxPooling2D(pool_size=(2,2))(model)
model = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(256, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(256, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(256, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = MaxPooling2D(pool_size=(2,2))(model)
model = Conv2D(1024, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(512, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(1024, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(512, (1,1), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(1024, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(1024, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Conv2D(1024, (3,3), strides=(1,1), padding='same', activation='relu')(model)
model = Flatten()(model)
model = Dense(4096, activation='relu')(model)
model = Dropout(0.5)(model)
model = Dense(1470, activation='sigmoid')(model)
model = Reshape((7,7,30))(model)
model = Lambda(lambda x: x[:,:,:,0:20], output_shape=(7,7,20))(model)
model = Model(inputs, model, name='YOLO')
四、YOLO網路結構模型分為
YOLO網路結構模型包括YOLOv1、YOLOv2、YOLOv3和YOLOv4。
YOLOv1是YOLO的初始版本,它使用GoogleNet作為其CNN主幹。後續的YOLO版本則採用了更先進的卷積神經網路,例如Darknet-19和Darknet-53。
YOLOv2在YOLOv1的基礎上添加了一些新的功能,例如錨點框和多尺度訓練。這些改進使得YOLOv2在精度和速度方面都有了很大的提升。
YOLOv3在YOLOv2的基礎上增加了一些新的功能,例如跨層連接和特徵金字塔網路,這使得其在速度和準確率方面更加出色。
YOLOv4則利用了更加先進的技術,例如CSP連接、SAM模塊和SPP模塊,進一步提高了其性能。
五、YOLOv5網路結構詳解
YOLOv5是YOLO的最新版本,在YOLOv4的基礎上進一步優化了網路結構,使其在速度和準確率方面都有了很大的提升。
YOLOv5使用CSPDarknet為其CNN主幹,並使用FPN(Feature Pyramid Network)代替了以往的特徵金字塔網路。此外,YOLOv5還採用了越來越流行的Swish激活函數,取代了以往的ReLU激活函數。
六、代碼示例
下面是使用Keras實現的YOLOv3代碼示例:
#Define the model
inputs = Input(shape=(416,416,3))
#Darknet-53 CNN模型
model = Darknet(name = None)(inputs)
...
...
#輸出
model = Model(inputs, yolov3_out_boxes_and_scores)
#載入權重
model.load_weights('model.h5')
對於YOLOv5,可以使用ultralytics/yolov5庫。下面是一個使用yolov5庫進行目標檢測的示例:
import torch
from PIL import Image
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
img = Image.open('test.jpg') #打開圖片
results = model(img) #輸入圖片進行檢測
results.print() #輸出檢測結果
原創文章,作者:ORRA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133085.html