學習YOLOv5算法,發現搜到的網絡結構圖不方便自己理解記憶,並且將pt模型轉化成onnx之后,模型可視化后差異太大,簡直看不出是同一個模型,雖然結果大致相同...,所以整理了一版網絡結構圖堅固原始模型在心里的地位,並配上yaml網絡設置相關代碼。
YOLOv5s網絡結構:
其中橙色的數字表示層號,0-9層構成backbone,10-23層構成head,17、20、23 層的輸出是Detect()函數的輸入。C3后的參數表示(c_in, c_out)* 該模塊堆疊的次數,Conv和Focus參數(c_in, c_out, kernel_size, stride), SPP后的參數(c_in, c_out, [kernel_size1,kernel_size2,kernel_size3]),Concat是axes=1時的合並,upsample的scale_factor為2,輸出圖像為輸入的2倍。
模塊表示如下圖:



相關開源yaml截圖為:

值得注意的地方是,推理的時候self.training 應該為False,開源代碼給了額外的靈活性(方便onnx轉換的訓練和推理驗證)添加了export變量,
self.training |= self.export
如果設置self.export為True,則self.training為True,那么在onnx推理時,需要注意將self.export設置為False。
以上。
個人公眾號會定期進行一些技術更新,感興趣的同學可以掃碼關注。

