日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【yolo】yolov3的pytorch版本保存自定义数据集训练好的权重,并载入自己的模型

發(fā)布時間:2024/9/30 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【yolo】yolov3的pytorch版本保存自定义数据集训练好的权重,并载入自己的模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

多次試驗(yàn)終于測出來了!!很高興,結(jié)果截圖:

數(shù)據(jù)集是來自網(wǎng)上的,代碼原型是github一個大概五千多star的pytorch-yolov3,但原代碼并沒有載入自己的模型進(jìn)行訓(xùn)測試階段,然后parser參數(shù)一直不明白,導(dǎo)致試了多次。

其中的要點(diǎn):
1.初始化權(quán)重的修改
2。載入保存好的權(quán)重。(模式選擇要正確)
3。格式要正確(比如什么地方加-- 什么地方加/)
4。保存訓(xùn)練的模型

傳入?yún)?shù)部分:

parser = argparse.ArgumentParser()parser.add_argument("--image_folder", type=str, default="data/samples", help="path to dataset")parser.add_argument("--model_def", type=str, default="config/yolov3.cfg", help="path to model definition file")parser.add_argument("--weights_path", type=str, default="weights/yolov3.weights", help="path to weights file")parser.add_argument("--class_path", type=str, default="data/coco.names", help="path to class label file")parser.add_argument("--conf_thres", type=float, default=0.8, help="object confidence threshold")parser.add_argument("--nms_thres", type=float, default=0.4, help="iou thresshold for non-maximum suppression")parser.add_argument("--batch_size", type=int, default=1, help="size of the batches")parser.add_argument("--n_cpu", type=int, default=0, help="number of cpu threads to use during batch generation")parser.add_argument("--img_size", type=int, default=416, help="size of each image dimension")parser.add_argument("--checkpoint_model", type=str, help="path to checkpoint model")opt = parser.parse_args()print(opt)

其中("–weights_path"才是載入自己的模型部分,一開始以為是"–checkpoint_model",導(dǎo)致怎么都不對。
記錄如圖:
可以看到根本沒有輸出標(biāo)簽,即并沒有傳自己的模型,而用的默認(rèn)模型,默認(rèn)模型不是自己訓(xùn)練的數(shù)據(jù)當(dāng)然不可能識別出來。

正確傳參的代碼:

python3 detect.py --image_folder data/custom/dd --model_def config/yolov3-custom.cfg --class_path data/custom/classes.names --checkpoint_model checkpoints/yolov3_ckpt_99.pth --weights_path checkpoints/yolov3_ckpt_99.pth


此時標(biāo)簽已經(jīng)輸出。

其中detect.py中載入模型的語句:

# Set up modelmodel = Darknet(opt.model_def, img_size=opt.img_size).to(device)if opt.weights_path.endswith(".weights"):# Load darknet weightsmodel.load_darknet_weights(opt.weights_path)else:# Load checkpoint weightsmodel.load_state_dict(torch.load(opt.weights_path))model.eval() # Set in evaluation mode

if opt.weights_path.endswith(".weights"):
決定了是weights_path
train.py中保存模型:
if epoch % opt.checkpoint_interval == 0:
torch.save(model.state_dict(), f"checkpoints/yolov3_ckpt_%d.pth" % epoch)

之前用resnet18訓(xùn)練過一個模型,但是從參數(shù)看感覺yolov3網(wǎng)絡(luò)結(jié)構(gòu)比它復(fù)雜
下一步的學(xué)習(xí):
1。如何輸出目標(biāo)中心坐標(biāo)點(diǎn)(如果有多個坐標(biāo)點(diǎn)如何迭代)
2。調(diào)整哪些參數(shù)可以得到更精確的測試結(jié)果
3。上面的代碼每輪epoch都保存了模型,結(jié)果一共保存了99個,但實(shí)際運(yùn)用的話需要保存map最好的那個,所以這個代碼需要優(yōu)化
4。怎么從攝像頭讀取圖片讓yolov3檢測
5。可不可以預(yù)處理圖片后增加圖片數(shù)量。

總結(jié)

以上是生活随笔為你收集整理的【yolo】yolov3的pytorch版本保存自定义数据集训练好的权重,并载入自己的模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。