pytorch框架yolov3算法訓(xùn)練自己數(shù)據(jù)集 利用yolov3訓(xùn)練自己的數(shù)據(jù)集
4.测试图片和视频.
--
***(cfg,,,,#inputfolderoutputoutput,#outputfolderfourccmp4v,img_size416,conf_thres0.5,nms_thres0.5,save_txtFalse,save_imagesTrue,webcamFalse):devicetorch_utils.select_device()ifos.path.exists(output):shutil.rmtree(output)#deleteoutputfolderos.makedirs(output)#makenewoutputfolder#InitializemodelifONNX_EXPORT:s(320,192)#onnxmodelimagesize(height,width)modelDarknet(cfg,s)else:modelDarknet(cfg,img_size)#Loadweightsifweights.endswith(.pt):#pytorchformatmodel.load_state_dict(torch.load(weights,map_locationdevice)[model])else:#darknetformat_load_darknet_weights(model,weights)#FuseConv2dBatchNorm2dlayersmodel.fuse()#Evalmodemodel.to(device).eval()ifONNX_EXPORT:imgtorch.zeros((1,3,s[0],s[1]))torch.onnx.export(model,img,weights/export.onnx,verboseTrue)return#SetDataloadervid_path,vid_writerNone,Noneifwebcam:save_imagesTruedataloaderLoadWebcam(img_sizeimg_size)else:dataloaderLoadImages(images,img_sizeimg_size)#Getclassesandcolorsclassesload_classes(parse_data_cfg(data_cfg)[names])colors[[random.randint(0,255)for_inrange(3)]for_inrange(len(classes))]fori,(path,img,im0,vid_cap)inenumerate(dataloader):ttime.time()save_pathstr(Path(output)/Path(path).name)#Getdetectionsimgtorch.from_numpy(img).unsqueeze(0).to(device)pred,_model(img)detnon_max_suppression(pred,conf_thres,nms_thres)[0]ifdetisnotNoneandlen(det)0:#Rescaleboxesfrom416totrueimagesizedet[:,:4]scale_coords(img.shape[2:],det[:,:4],im0.shape).round()#Printresultstoscreenprint(%gx%g%img.shape[2:],end)#printimagesizeforcindet[:,-1].unique():n(det[:,-1]c).sum()print(%g%ss%(n,classes[int(c)]),end,)#Drawboundingboxesandlabelsofdetectionsfor*xyxy,conf,cls_conf,clsindet:ifsave_txt:#Writetofilewithopen(save_path.txt,a)asfile:file.write((%g*6
)%(*xyxy,cls,conf))#Addbboxtotheimagelabel%s%.2f%(classes[int(cls)],conf)plot_one_box(xyxy,im0,labellabel,colorcolors[int(cls)])print(Done.(%.3fs)%(time.time()-t))ifwebcam:#Showlivewebcamcv2.imshow(weights,im0)ifsave_images:#Saveimagewithdetectionsifdataloader.modeimages:cv2.imwrite(save_path,im0)else:ifvid_path!save_path:#newvideovid_pathsave_pathifisinstance(vid_writer,cv2.VideoWriter):vid_writer.release()#releasepreviousvideowriterfpsvid_cap.get(cv2.CAP_PROP_FPS)widthint(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH))heightint(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))vid_writercv2.VideoWriter(save_path,cv2.VideoWriter_fourcc(*fourcc),fps,(width,height))vid_writer.write(im0)ifsave_images:print(Resultssavedto%s%os.getcwd()os.sepoutput)ifplatformdarwin:#macosos.system(openoutputsave_path)if__name____main__:parserargparse.ArgumentParser()parser.add_argument(--cfg,typestr,defaultcfg/yolov3-tiny.cfg,helpcfgfilepath)parser.add_argument(--data-cfg,typestr,defaultdata/mask.data,helpcoco.datafilepath)parser.add_argument(--weights,typestr,defaultweights/latest.pt,helppathtoweightsfile)parser.add_argument(--images,typestr,defaultdata/samples,helppathtoimages)parser.add_argument(--img-size,typeint,default416,helpinferencesize(pixels))parser.add_argument(--conf-thres,typefloat,default0.5,helpobjectconfidencethreshold)parser.add_argument(--nms-thres,typefloat,default0.5,helpiouthresholdfornon-maximumsuppression)parser.add_argument(--fourcc,typestr,defaultmp4v,helpspecifiesthefourcccodeforoutputvideoencoding(makesureffmpegsupportsspecifiedfourcccodec))parser.add_argument(--output,typestr,defaultoutput,helpspecifiestheoutputpathforimagesandvideos)optparser.parse_args()print(opt)withtorch.no_grad():detect(opt.cfg,opt.data_cfg,opt.weights,imagesopt.images,img_sizeopt.img_size,conf_thresopt.conf_thres,nms_thresopt.nms_thres,fourccopt.fourcc,outputopt.output)
5.测试摄像头
把detect.py中的webcam改为False。此时会报错NoneType打开datasets.py文件
importglobimportmathimportosimportrandomimportshutilfrompathlibimportPathimportcv2importnumpyasnpimporttorchfromtorch.utils.dataimportDatasetfromtqdmimporttqdmfromproject.utilsimportxyxy2xywhclassLoadImages:#forinferencedef__init__(self,path,img_size416):self.heightimg_sizeimg_formats[.jpg,.jpeg,.png,.tif]vid_formats[.mov,.avi,.mp4]files[]ifos.path.isdir(path):filessorted(glob.glob(%s/*.*%path))elifos.path.isfile(path):files[path]images[xforxinfilesifos.path.splitext(x)[-1].lower()inimg_formats]videos[xforxinfilesifos.path.splitext(x)[-1].lower()invid_formats]nI,nVlen(images),len(videos)self.filesimagesvideosself.nFnInV#numberoffilesself.video_flag[False]*nI[True]*nVself.modeimagesifany(videos):self.new_video(videos[0])#newvideoelse:self.capNoneassertself.nF0,Noimagesorvideosfoundinpathdef__iter__(self):self.count0returnselfdef__next__(self):ifself.countself.nF:raiseStopIterationpathself.files[self.count]ifself.video_flag[self.count]:#Readvideoself.modevideoret_val,img0self.cap.read()ifnotret_val:self.count1self.cap.release()ifself.countself.nF:#lastvideoraiseStopIterationelse:pathself.files[self.count]self.new_video(path)ret_val,img0self.cap.read()self.frame1print(video%g/%g(%g/%g)%s:%(self.count1,self.nF,self.frame,self.nframes,path),end)else:#Readimageself.count1img0cv2.imread(path)#BGRassertimg0isnotNone,FileNotFoundpathprint(image%g/%g%s:%(self.count,self.nF,path),end)#Paddedresizeimg,_,_,_letterbox(img0,new_shapeself.height)#NormalizeRGBimgimg[:,:,::-1].transpose(2,0,1)#BGRtoRGBimgnp.ascontiguousarray(img,dtypenp.float32)#uint8tofloat32img/255.0#0-255to0.0-1.0#cv2.imwrite(path.letterbox.jpg,255*img.transpose((1,2,0))[:,:,::-1])#saveletterboximagereturnpath,img,img0,self.capdefnew_video(self,path):self.frame0self.capcv2.VideoCapture(path)#pathself.nframesint(self.cap.get(cv2.CAP_PROP_FRAME_COUNT))def__len__(self):returnself.nF#numberoffilesclassLoadWebcam:#forinferencedef__init__(self,img_size416):vid_formats[.mov,.avi,.mp4]#64files[]#64self.camcv2.VideoCapture(0)self.heightimg_sizevideos[xforxinfilesifos.path.splitext(x)[-1].lower()invid_formats]#64self.modeimages#64ifany(videos):#64self.new_video(videos[0])#newvideo#64else:#64self.capNone#64def__iter__(self):self.count-1returnselfdef__next__(self):self.count1ifcv2.waitKey(1)27:#esctoquitcv2.destroyAllWindows()raiseStopIteration#Readimageret_val,img0self.cam.read()assertret_val,WebcamErrorimg_pathwebcam_%g.jpg%self.countimg0cv2.flip(img0,1)#flipleft-rightprint(webcam%g:%self.count,end)#Paddedresizeimg,_,_,_letterbox(img0,new_shapeself.height)#NormalizeRGBimgimg[:,:,::-1].transpose(2,0,1)#BGRtoRGBimgnp.ascontiguousarray(img,dtypenp.float32)#uint8tofloat32img/255.0#0-255to0.0-1.0returnimg_path,img,img0,Nonedef__len__(self):return0classLoadImagesAndLabels(Dataset):#fortraining/testingdef__init__(self,path,img_size416,batch_size16,augmentFalse,rectTrue,image_weightsFalse):withopen(path,r)asf:img_filesf.read().splitlines()self.img_fileslist(filter(lambdax:len(x)0,img_files))nlen(self.img_files)binp.floor(np.arange(n)/batch_size).astype(np.int)#batchindexnbbi[-1]1#numberofbatchesassertn0,Noimagesfoundin%s%pathself.nnself.batchbi#batchindexofimageself.img_sizeimg_sizeself.augmentaugmentself.image_weightsimage_weightsself.rectFalseifimage_weightselserectself.label_files[x.replace(images,labels).replace(.jpeg,.txt).replace(.jpg,.txt).replace(.bmp,.txt).replace(.png,.txt)forxinself.img_files]#RectangularTraininghttps://github.com/ultralytics/yolov3/issues/232ifself.rect:fromPILimportImage#Readimageshapes#spdataos.seppath.replace(.txt,.shapes).split(os.sep)[-1]#shapefilepath#spos.seppath.replace(.txt,.shapes).split(os.sep)[-1]#shapefilepathsppath.replace(.txt,shapes).split(os.sep)[-1]ifos.path.exists(sp):#readexistingshapefilewithopen(sp,r)asf:snp.array([x.split()forxinf.read().splitlines()],dtypenp.float32)assertlen(s)n,Shapefileoutofsync,pleasedelete%sandrerun%spelse:#noshapefile,soreadshapeusingPILandwriteshapefilefornexttime(faster)snp.array([Image.open(f).sizeforfintqdm(self.img_files,descReadingimageshapes)])np.savetxt(sp,s,fmt%g)#Sortbyaspectratioars[:,1]/s[:,0]#aspectratioiar.argsort()arar[i]self.img_files[self.img_files[i]foriini]self.label_files[self.label_files[i]foriini]#Settrainingimageshapesshapes[[1,1]]*nbforiinrange(nb):ariar[bii]mini,maxiari.min(),ari.max()ifmaxi1:shapes[i][maxi,1]elifmini1:shapes[i][1,1/mini]self.batch_shapesnp.ceil(np.array(shapes)*img_size/32.).astype(np.int)*32#Preloadlabels(requiredforweightedCEtraining)self.imgs[None]*nself.labels[np.zeros((0,5))]*nitertqdm(self.label_files,descReadinglabels)ifn1000elseself.label_filesfori,fileinenumerate(iter):try:withopen(file,r)asf:lnp.array([x.split()forxinf.read().splitlines()],dtypenp.float32)ifl.shape[0]:assertl.shape[1]5,5labelcolumns:%s%fileassert(l0).all(),negativelabels:%s%fileassert(l[:,1:]1).all(),non-normalizedoroutofboundscoordinatelabels:%s%fileself.labels[i]lexcept:pass#print(Warning:missinglabelsfor%s%self.img_files[i])#missinglabelfileassertlen(np.concatenate(self.labels,0))0,Nolabelsfound.Incorrectlabelpathsprovided.def__len__(self):returnlen(self.img_files)#def__iter__(self):#self.count-1#print(randatasetiter)#self.shuffled_vectornp.random.permutation(self.nF)ifself.augmentelsenp.arange(self.nF)#returnselfdef__getitem__(self,index):ifself.image_weights:indexself.indices[index]img_pathself.img_files[index]label_pathself.label_files[index]#Loadimageimgself.imgs[index]ifimgisNone:imgcv2.imread(img_path)#BGRassertimgisnotNone,FileNotFoundimg_pathifself.n1001:self.imgs[index]img#cacheimageintomemory#Augmentcolorspaceaugment_hsvTrueifself.augmentandaugment_hsv:#SVaugmentationby50%fraction0.50#mustbe1.0img_hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)#hue,sat,valSimg_hsv[:,:,1].astype(np.float32)#saturationVimg_hsv[:,:,2].astype(np.float32)#valuea(random.random()*2-1)*fraction1b(random.random()*2-1)*fraction1S*aV*bimg_hsv[:,:,1]Sifa1elseS.clip(None,255)img_hsv[:,:,2]Vifb1elseV.clip(None,255)cv2.cvtColor(img_hsv,cv2.COLOR_HSV2BGR,dstimg)#Letterboxh,w,_img.shapeifself.rect:shapeself.batch_shapes[self.batch[index]]img,ratio,padw,padhletterbox(img,new_shapeshape,moderect)else:shapeself.img_sizeimg,ratio,padw,padhletterbox(img,new_shapeshape,modesquare)#Loadlabelslabels[]ifos.path.isfile(label_path):#withopen(label_path,r)asf:#xnp.array([x.split()forxinf.read().spl
推薦系統(tǒng)
雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:WinXP雨林木風(fēng)在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)知名品牌,雨林木風(fēng)WindowsXP其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,是一款穩(wěn)定流暢的系統(tǒng),雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載,有需要的朋友速度下載吧。
系統(tǒng)等級:進入下載 >蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用
系統(tǒng)大小:0MB系統(tǒng)類型:Win7蘿卜家園win7純凈版是款非常純凈的win7系統(tǒng),此版本優(yōu)化更新了大量的驅(qū)動,幫助用戶們進行舒適的使用,更加的適合家庭辦公的使用,方便用戶,有需要的用戶們快來下載安裝吧。
系統(tǒng)等級:進入下載 >雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載
系統(tǒng)大?。?/em>1.01GB系統(tǒng)類型:WinXP雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載,雨林木風(fēng)WinXP系統(tǒng)技術(shù)積累雄厚深耕多年,采用了新的系統(tǒng)功能和硬件驅(qū)動,可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,加固了系統(tǒng)安全策略,運行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進入下載 >蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載
系統(tǒng)大小:0MB系統(tǒng)類型:Win10蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,(win10企業(yè)版,win10 ghost,win10鏡像),蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 ghost鏡像 X64位系統(tǒng)下載,其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團隊推出的蘿卜家園
系統(tǒng)等級:進入下載 >蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載
系統(tǒng)大小:0MB系統(tǒng)類型:Win10蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 ghost X64位 系統(tǒng)下載,蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團隊推出的蘿卜家園win10國內(nèi)鏡像版,基于國內(nèi)用戶的習(xí)慣,做
系統(tǒng)等級:進入下載 >windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載
系統(tǒng)大小:0MB系統(tǒng)類型:Win11蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,windows11下載 蘿卜家園win11專業(yè)版 X64位 官網(wǎng)正式版可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,使得軟件在WINDOWS11系統(tǒng)中運行得更加流暢,加固了系統(tǒng)安全策略,WINDOWS11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進入下載 >
相關(guān)文章
- 有什么電腦自動關(guān)機軟件好用 電腦自動關(guān)機軟件下載推薦
- 微信抽獎小程序怎么弄,教你微信轉(zhuǎn)盤抽獎小程序制作方法
- 收集意見建議小程序怎么弄,教你制作匿名收集意見的小程序
- 掃碼助力活動怎么弄,微信公眾號助力活動的制作步驟
- 海報裂變活動怎么弄,微信公眾號生成海報裂變活動的方法
- 公眾號推廣二維碼怎么弄,微信公眾號推廣二維碼生成方法
- 公眾號裂變活動制作,微信公眾號怎么做裂變活動
- 登記信息二維碼制作,如何實現(xiàn)掃碼登記填報信息
- 登記表怎么弄,教你微信登記表格怎么做
- 參數(shù)二維碼怎么弄,微信公眾號帶參數(shù)二維碼怎么生成
- 報名二維碼怎么弄,微信公眾號報名二維碼制作步驟
- 設(shè)置電腦定時關(guān)機命令如何更改 電腦定時關(guān)機命令設(shè)置方法詳解
- win7怎么自動關(guān)機 win7自動關(guān)機時間設(shè)置方法
- 設(shè)置定時關(guān)機命令在哪 電腦設(shè)置定時關(guān)機命令
熱門系統(tǒng)
推薦軟件
推薦應(yīng)用
推薦游戲
熱門文章
常用系統(tǒng)
- 1【國慶特獻】深度技術(shù)Windows10純凈版 Win10 GHOST鏡像64位系統(tǒng)下載
- 2windows11旗艦版下載 深度技術(shù)64位完美版 免激活工具下載 GHOST鏡像
- 3電腦公司windows7免費版官網(wǎng)下載 ghost x64位 v2022.05 iso鏡像
- 4番茄花園win7家庭版 x64位最新版下載 ghost鏡像 惠普電腦專用下載
- 5青蘋果系統(tǒng)windows11旗艦版 win11 ghost 64位 V2021.10
- 6Windows7穩(wěn)定版下載 系統(tǒng)之家永久免費 ghost系統(tǒng) ISO鏡像下載
- 7深度系統(tǒng)Win11企業(yè)版正式版裝機用戶專用 ghost系統(tǒng) ISO鏡像 X64位
- 8風(fēng)林火山win10穩(wěn)定版 x64位最新版下載 Ghost鏡像 免激活工具
- 9雨林木風(fēng)精簡版下載 Windows7純凈版64位 ISO鏡像官網(wǎng)下載 v2023