使用深度学习框架目标检测算法YOLOv8模型训练无人机小目标检测数据集 进行无人机识别、低空安防、反无人机系统等应用以下文字及代码仅供参考学习使用。数据集描述无人机小目标检测数据集yolo格式 已经划分好训练验证测试可直接使用13000张无人机小目标检测数据集13000张图像已经划分好训练集、验证集和测试集是YOLO 格式。这类数据集非常适合用于无人机识别、低空安防、反无人机系统等应用。✅ 一、数据集结构YOLO 格式标准的 YOLO 数据集目录结构如下drone_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml 二、data.yaml文件内容示例假设你的目标类别为1类无人机dronetrain:./drone_dataset/images/trainval:./drone_dataset/images/valtest:./drone_dataset/images/testnc:1names:[drone] 三、环境准备1. 安装 CUDA 驱动确保 NVIDIA 显卡驱动支持 CUDA。你可以通过以下命令查看驱动版本nvidia-smi安装对应版本的 CUDA Toolkit如 CUDA 11.8官网https://developer.nvidia.com/cuda-downloads2. 安装 Anaconda推荐使用 Miniconda官网https://docs.conda.io/en/latest/miniconda.html创建虚拟环境conda create-ndrone_detectionpython3.9conda activate drone_detection3. 安装依赖项pipinstalltorch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 pipinstallultralytics opencv-python matplotlib numpy️♂️ 四、使用 YOLOv8 训练模型1. 下载 YOLOv8 官方预训练模型# 下载 YOLOv8s 预训练权重wgethttps://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt2. 开始训练fromultralyticsimportYOLO# 加载预训练模型modelYOLO(yolov8s.pt)# 开始训练resultsmodel.train(datadrone_dataset/data.yaml,epochs100,imgsz640,batch16,device0,projectdrone_detection,nameyolov8s_drone,saveTrue,save_period5,pretrainedTrue,cacheTrue,optimizerAdamW,lr00.001,lrf0.01,cos_lrTrue,augmentTrue,hsv_h0.015,hsv_s0.7,hsv_v0.4,degrees0,translate0.1,scale0.5,shear0,perspective0.0001,flipud0.5,fliplr0.5,mosaic1.0,mixup0.2)或使用命令行方式训练yolo traindatadrone_dataset/data.yamlmodelyolov8s.ptepochs100imgsz640batch16device0 五、推理代码图像 / 视频 / 摄像头1. 单张图像推理fromultralyticsimportYOLOimportcv2# 加载训练好的模型modelYOLO(runs/detect/yolov8s_drone/weights/best.pt)# 图像推理resultsmodel(test_images/drone_1.jpg)# 显示结果forrinresults:imr.plot()cv2.imshow(Detection,im)cv2.waitKey(0)cv2.destroyAllWindows()2. 实时摄像头检测capcv2.VideoCapture(0)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)forrinresults:annotated_framer.plot()cv2.imshow(YOLOv8 Detection,annotated_frame)ifcv2.waitKey(1)27:# Press ESC to exitbreakcap.release()cv2.destroyAllWindows() 六、评估模型性能fromultralyticsimportYOLO# 加载模型modelYOLO(runs/detect/yolov8s_drone/weights/best.pt)# 在验证集上评估metricsmodel.val(datadrone_dataset/data.yaml)# 输出指标print(mAP50:,metrics.box.map50)print(mAP50-95:,metrics.box.map)print(Precision:,metrics.box.precision)print(Recall:,metrics.box.recall) 七、结果保存图像、视频、JSON1. 保存检测图像resultsmodel(test_images/drone_1.jpg)forrinresults:imr.plot()cv2.imwrite(output/drone_result.jpg,im)2. 保存视频检测结果capcv2.VideoCapture(test_videos/drone_video.mp4)wint(cap.get(cv2.CAP_PROP_FRAME_WIDTH))hint(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fpscap.get(cv2.CAP_PROP_FPS)fourcccv2.VideoWriter_fourcc(*mp4v)outcv2.VideoWriter(output/drone_result.mp4,fourcc,fps,(w,h))whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)forrinresults:annotated_framer.plot()out.write(annotated_frame)cv2.imshow(Detection,annotated_frame)ifcv2.waitKey(1)27:breakcap.release()out.release()cv2.destroyAllWindows()3. 保存检测结果为 JSON 文件importjsondefsave_detection_json(results,filename):detection_list[]forrinresults:forboxinr.boxes:clsint(box.cls)conffloat(box.conf)xyxybox.xyxy.tolist()detection_list.append({class_id:cls,class_name:model.names[cls],confidence:conf,bbox:xyxy})withopen(filename,w)asf:json.dump(detection_list,f,indent4)# 使用示例resultsmodel(test_images/rice_1.jpg)save_detection_json(results,output/drone_result.json)以上文字及代码仅供参考学习使用。