圖1、網絡結構圖
輸入的圖像為448448,經過以上的結構,輸出的為77*1024的張量,是第7個圖樣。在激活函數上,最后一層輸出時用了線性激活函數,其余層都使用的是Leaky Relu激活函數。
圖2、Leaky Relu激活函數
2、yolo-v1損失函數
圖3、損失函數
3、yolo-v1和yolo-v4對比
yolo-v4說簡單點就是對yolo-v3的改進,它的改進方法就是總結了幾乎所有的檢測技巧,又提出一點兒技巧,然后經過篩選,排列組合,挨個實驗(ablation study)哪些方法有效。YOLOv4對深度學習中一些常用Tricks進行了大量的測試,最終選擇了這些有用的Tricks:WRC、CSP、CmBN、SAT、 Mish activation、Mosaic data augmentation、CmBN、DropBlock regularization 和 CIoU loss。
YOLOv4在傳統的YOLO基礎上,加入了這些實用的技巧,實現了檢測速度和精度的最佳權衡。實驗表明,在Tesla V100上,對MS COCO數據集的實時檢測速度達到65 FPS,精度達到43.5%AP。
二、yolo-v4源碼
這個是從網絡收集而來,自己已經跑通了,里面也有一些使用的方法,也就不啰嗦了,可以自己研究一下,跑一下口罩識別。
鏈接地址: https://pan.baidu.com/s/1ziNPRznNcfdGMCKWtB4xYQ 提取碼: e939
三、口罩數據
我這里整理了一些數據集,一共有三個、我跑的是yolov4的第二個數據集。我會標注,可以先用我跑的這個,因為我跑通了。
鏈接地址:https://pan.baidu.com/s/1G1XLjK8Y3WNbRSf-1dwVgA 提取碼: vvhv
四、處理數據
1、批量移動(刪除)某格式的文件【父目錄下所有文件】
1 import os
2 import shutil 3 4 for parent, dirnames, filenames in os.walk('原目錄'): 5 for fn in filenames: 6 7 if fn.lower().endswith('.xml'): 8 # os.remove(os.path.join(parent, fn)) ##這是刪除文件的語句 9 shutil.copy(os.path.join(parent, fn),'目標目錄') #這是移動的語句 10 11 #目錄例子 D:\\學習文件\\YOLO\\數據\\xml (注意:雙斜杠)
2、批量更改目錄下某格式文件的名字【父目錄下所有文件】
1 import os
2
3
4 class BatchRenamePics(object): 5 """ 6 批量命名目錄下的所有圖名[.jpg,.png] 7 命名格式:1-1,1-2...2-1,2-2...10-1,10-2...eg 8 """ 9 def __init__(self, path): 10 # 設置起始路徑path 11 self.path = path 12 13 def rename(self): 14 allfile = os.walk(self.path) 15 # j用於計數,統計有多少張照片被重命名 16 j = 0 17 # 遍歷每一層目錄,從上到下的順序 18 for dirpath, dirnames, filenames, in allfile: 19 # 得到當前文件夾的名字tail 20 tail = os.path.split(dirpath)[1] 21 # i用於命名 22 i = 0 23 # 遍歷filenames中的每一個文件 24 for each in filenames: 25 # 如果文件名是以.jpg或者.png結尾則認為是圖片,可以自己添加其他格式的照片 26 if each.endswith('.jpg') or each.endswith('.png')or each.endswith('.xml'): 27 i += 1 28 j += 1 29 # 拼接完整的包含路徑的文件名 30 scr = os.path.join(dirpath, each) 31 # 拼接新的完整的包含路徑的文件名, tail是文件夾的名字 32 # dst = os.path.join(dirpath, tail + '-' + str(i) + '.jpg') ##這個是文件改格式 33 dst = os.path.join(dirpath, str(j) + '.jpg') 34 try: 35 # 重命名圖片文件 36 os.rename(scr, dst) 37 print(scr + '--->' + dst) 38 except: 39 continue 40 else: 41 continue 42 print('累計重命名{}張圖片'.format(j)) 43 44 if __name__ == '__main__': 45 # 設置起始路徑path 46 path = r'原目錄' 47 # 創建實例對象 48 pics = BatchRenamePics(path) 49 # 調用實例方法 50 pics.rename()
最后,感謝大家對本文章的閱讀,如果有什么問題,歡迎在下方留言,一起討論,共同進步。