pc端網(wǎng)站建設(shè)阿里云建站論壇網(wǎng)站
鶴壁市浩天電氣有限公司
2026/01/24 09:13:19
pc端網(wǎng)站建設(shè),阿里云建站論壇網(wǎng)站,黑馬程序員論壇,秦皇島建設(shè)局長yolov8模型訓(xùn)練深度學(xué)習(xí) yolo混凝土裂縫檢測數(shù)據(jù)集 水泥裂縫數(shù)據(jù)集 裂縫識別數(shù)據(jù)集的訓(xùn)練及應(yīng)用 混凝土結(jié)構(gòu)健康監(jiān)測、裂縫檢測、基礎(chǔ)設(shè)施巡檢 文章目錄? 一、環(huán)境搭建#xff08;從 CUDA 到依賴安裝#xff09;1. 確認(rèn) CUDA 驅(qū)動#xff08;GPU 加速#xff09;2. 安裝 A…yolov8模型訓(xùn)練深度學(xué)習(xí) yolo混凝土裂縫檢測數(shù)據(jù)集 水泥裂縫數(shù)據(jù)集 裂縫識別數(shù)據(jù)集的訓(xùn)練及應(yīng)用 混凝土結(jié)構(gòu)健康監(jiān)測、裂縫檢測、基礎(chǔ)設(shè)施巡檢文章目錄? 一、環(huán)境搭建從 CUDA 到依賴安裝1. 確認(rèn) CUDA 驅(qū)動GPU 加速2. 安裝 AnacondaPython 包管理器3. 創(chuàng)建 Python 虛擬環(huán)境4. 安裝必要依賴? 二、數(shù)據(jù)集結(jié)構(gòu)YOLO 格式文件目錄結(jié)構(gòu)1. 數(shù)據(jù)說明2. 劃分?jǐn)?shù)據(jù)集建議比例3. 創(chuàng)建 data.yaml? 三、訓(xùn)練代碼調(diào)用官方預(yù)訓(xùn)練模型 train.py —— 完整訓(xùn)練腳本? 四、推理代碼檢測新圖像 predict.py? 五、評估模型性能 evaluate.py? 六、訓(xùn)練結(jié)果可視化以下文字及代碼僅供參考學(xué)習(xí)使用。項(xiàng)目說明數(shù)據(jù)集名稱混凝土梁裂縫目標(biāo)檢測數(shù)據(jù)集適用任務(wù)混凝土結(jié)構(gòu)健康監(jiān)測、裂縫檢測、基礎(chǔ)設(shè)施巡檢適用算法YOLO 系列YOLOv5/v8/v11等、YOLO格式兼容的目標(biāo)檢測模型圖像數(shù)量約 2,000 張2K圖像分辨率1000 × 1000 像素統(tǒng)一尺寸便于訓(xùn)練圖像格式JPG 或 PNG常見為 JPG標(biāo)注格式提供兩種格式?.txt文件YOLO 格式歸一化坐標(biāo)?.xml文件Pascal VOC 格式類別數(shù)量1 類0: crack裂縫標(biāo)簽內(nèi)容每張圖像對應(yīng)一個.txt和一個.xml標(biāo)注文件包含裂縫的邊界框Bounding Box111111? 一、環(huán)境搭建從 CUDA 到依賴安裝1. 確認(rèn) CUDA 驅(qū)動GPU 加速打開終端或命令行nvidia-smi查看 CUDA Version如 12.1、11.8用于選擇對應(yīng)的 PyTorch 安裝命令。? 推薦CUDA 11.8 或 12.12. 安裝 AnacondaPython 包管理器下載地址https://www.anaconda.com/products/distribution安裝完成后打開Anaconda PromptWindows或終端Mac/Linux3. 創(chuàng)建 Python 虛擬環(huán)境# 創(chuàng)建名為 crack-det 的虛擬環(huán)境Python 3.9conda create -n crack-detpython3.9# 激活環(huán)境conda activate crack-det4. 安裝必要依賴# 安裝 PyTorch以 CUDA 11.8 為例根據(jù)你的版本調(diào)整pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安裝 Ultralytics YOLOv8pipinstallultralytics# 安裝 OpenCV圖像處理pipinstallopencv-python-headless# 其他工具可選pipinstallmatplotlib pillow tqdm? 驗(yàn)證安裝importtorchprint(torch.__version__)print(torch.cuda.is_available())# 應(yīng)輸出 True? 二、數(shù)據(jù)集結(jié)構(gòu)YOLO 格式文件目錄結(jié)構(gòu)datasets/ └── concrete_crack/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml1. 數(shù)據(jù)說明圖像數(shù)量約 2000 張分辨率1000×1000統(tǒng)一適合訓(xùn)練標(biāo)簽格式.txtYOLO 格式每行class_id x_center y_center width height # 歸一化 [0,1]類別通常為crack裂縫即class_id 0附帶.xml文件可忽略YOLO 使用.txt2. 劃分?jǐn)?shù)據(jù)集建議比例集合數(shù)量train1400 張val400 張test200 張你可以使用以下腳本自動劃分# split_data.pyimportosimportrandomimportshutilfrompathlibimportPath# 路徑配置請修改為你的實(shí)際路徑image_dirpath/to/your/images# 替換為你的圖像文件夾label_dirpath/to/your/labels# 替換為你的標(biāo)簽文件夾output_dirdatasets/concrete_crack# 創(chuàng)建輸出目錄forsplitin[train,val,test]:(Path(output_dir)/images/split).mkdir(parentsTrue,exist_okTrue)(Path(output_dir)/labels/split).mkdir(parentsTrue,exist_okTrue)# 獲取所有圖像文件images[fforfinos.listdir(image_dir)iff.endswith((.jpg,.png,.jpeg))]random.shuffle(images)# 劃分n_trainint(0.7*len(images))n_valint(0.2*len(images))train_filesimages[:n_train]val_filesimages[n_train:n_trainn_val]test_filesimages[n_trainn_val:]# 復(fù)制函數(shù)defcopy_files(files,img_dir,lbl_dir,out_img_dir,out_lbl_dir):forfinfiles:# 圖像shutil.copy(os.path.join(img_dir,f),out_img_dir)# 標(biāo)簽label_fileos.path.splitext(f)[0].txtlabel_pathos.path.join(lbl_dir,label_file)ifos.path.exists(label_path):shutil.copy(label_path,out_lbl_dir)copy_files(train_files,image_dir,label_dir,os.path.join(output_dir,images,train),os.path.join(output_dir,labels,train))copy_files(val_files,image_dir,label_dir,os.path.join(output_dir,images,val),os.path.join(output_dir,labels,val))copy_files(test_files,image_dir,label_dir,os.path.join(output_dir,images,test),os.path.join(output_dir,labels,test))print(? 數(shù)據(jù)集劃分完成train1400, val400, test200)3. 創(chuàng)建data.yaml在datasets/concrete_crack/下創(chuàng)建data.yaml# data.yamltrain:../datasets/concrete_crack/images/trainval:../datasets/concrete_crack/images/valtest:../datasets/concrete_crack/images/testnc:1names:[crack]? 三、訓(xùn)練代碼調(diào)用官方預(yù)訓(xùn)練模型train.py—— 完整訓(xùn)練腳本# train.pyfromultralyticsimportYOLOimporttorch# 檢查 GPUdevicecudaiftorch.cuda.is_available()elsecpuprint(fUsing device:{device})# 加載官方預(yù)訓(xùn)練模型推薦使用 yolov8m 或 yolov8l 提升小目標(biāo)檢測能力modelYOLO(yolov8m.pt)# 可選: yolov8s, yolov8l# 開始訓(xùn)練resultsmodel.train(datadatasets/concrete_crack/data.yaml,# 數(shù)據(jù)配置文件epochs150,# 訓(xùn)練輪數(shù)imgsz1024,# 輸入尺寸匹配 1000x1000batch8,# 批次大小根據(jù)顯存調(diào)整16G顯卡可用8nameconcrete_crack_yolov8m,# 實(shí)驗(yàn)名稱devicedevice,# 使用 GPUworkers4,# 數(shù)據(jù)加載線程optimizerAdamW,# 優(yōu)化器lr00.001,# 初始學(xué)習(xí)率weight_decay0.0005,patience20,# 早停projectruns/crack,# 保存路徑ampTrue,# 自動混合精度close_mosaic10,# 最后10輪關(guān)閉 Mosaichsv_h0.015,# 色相增強(qiáng)hsv_s0.7,# 飽和度hsv_v0.4,# 明度增強(qiáng)對比度translate0.2,scale0.5,fliplr0.5,mosaic1.0,degrees10.0,)說明imgsz1024匹配你的 1000×1000 圖像避免過度縮放yolov8m適合小目標(biāo)裂縫細(xì)長、不規(guī)則batch816G 顯存推薦值若顯存不足可降為 4? 四、推理代碼檢測新圖像predict.py# predict.pyfromultralyticsimportYOLO# 加載訓(xùn)練好的最佳模型modelYOLO(runs/crack/concrete_crack_yolov8m/weights/best.pt)# 推理單張圖像resultsmodel.predict(sourcetest_crack.jpg,# 輸入圖像路徑saveTrue,# 保存帶框圖像conf0.3,# 置信度閾值裂縫建議低閾值iou0.45,showFalse,projectruns/predict,namecrack_test,imgsz1024)# 打印結(jié)果forresultinresults:boxesresult.boxesprint(f檢測到{len(boxes)}條裂縫)forboxinboxes:cls_idint(box.cls)conffloat(box.conf)print(f 裂縫置信度:{conf:.3f})? 五、評估模型性能evaluate.py# evaluate.pyfromultralyticsimportYOLO# 加載訓(xùn)練好的模型modelYOLO(runs/crack/concrete_crack_yolov8m/weights/best.pt)# 在驗(yàn)證集上評估m(xù)etricsmodel.val(datadatasets/concrete_crack/data.yaml,splitval,imgsz1024,batch8,conf0.001,iou0.6,devicecudaiftorch.cuda.is_available()elsecpu)# 輸出關(guān)鍵指標(biāo)print(fmAP0.5:{metrics.box.map:.4f})print(fmAP0.5:0.95:{metrics.box.map50_95:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})? 六、訓(xùn)練結(jié)果可視化訓(xùn)練完成后查看runs/crack/concrete_crack_yolov8m/results.png訓(xùn)練曲線loss, mAPconfusion_matrix.png是否誤檢背景為裂縫PR_curve.pngPrecision-Recall 曲線