YOLOX-0.1.0自定義訓練+CPU修改方式
1、主訓練模塊train.py在tools文件夾下(為什么不放在主目錄?),訓練命令為python tools/train.py -f exps/example/yolox_voc/yolox_s.py
2、train.py 中必須加入import sys sys.path.append(r'D:\YoloX')才能正常運行,即主目錄的路徑
3、模型深度控制模塊yolox_s.py在exps/example/yolox_voc文件夾下,訓練命令后半部分這么長就是這么來的,可以復制原模塊再自定義內容
4、數(shù)據(jù)集導入模塊voc.py在yolox/data/datasets文件夾下,如果復制一份再重命名并自定義,必須修改datasets文件夾中的__init__.py的from .voc import VOCDetection為自己的文件名
5、數(shù)據(jù)集導入模塊voc.py的get_data_loader()為導入訓練數(shù)據(jù),get_eval_loader()為導入驗證數(shù)據(jù),如果只是進行一些代碼測試,不想要測試集,那么可以將測試集路徑設置為與訓練集路徑一致
6、類別設置模塊voc_classes.py在yolox/data/datasets文件夾下,如果復制一份再重命名并自定義,必須修改voc.py中的from .voc_classes import VOC_CLASSES中的voc_classes為自己的文件名
7、數(shù)據(jù)集必須為VOC格式,放在YOLOX/datasets/下,文件夾名稱為VOCdevkit/VOC2007/,其中三個文件夾Annotations存放xml標簽,ImageSets/Main存放train.txt,即圖片名稱,不能帶后綴,JPEGImages存放圖片
8、如果想在本地用CPU進行測試,必須安裝CUDA版torch,否則會報錯AssertionError: Torch not compiled with CUDA enabled
然后在tools/train.py中assert num_gpu <= get_num_devices()后插入num_gpu = 0
再在YOLOX/yolox/core/trainer.py的Trainer類的__init__函數(shù)中把self.device = "cuda:{}".format(self.local_rank)注釋掉,插入self.device = "cpu"
再在YOLOX/yolox/core/trainer.py中的train_one_iter函數(shù)中的targets = targets.to(self.data_type)后插入inps = inps.to(self.device)與targets = targets.to(self.device)
并且把下面的with torch.cuda.amp.autocast(enabled=self.amp_training):注釋掉
這樣就可以在本地用CPU進行一些測試了
總體來說代碼對于自定義訓練與測試很不友好,沒有Ultralytics的YOLOv5簡單方便易懂