无人机野生动物数据集14000张sheepcattlesealcameluskiangzebra专业提供无人机航拍野生动物数据覆盖各类场景• 农场动物监测• 野生动物保护• 自然保护区巡护• 生态环境监测• 农业病虫害识别服务优势• 多场景数据采集农田、草原、森林等各类环境无人机航拍野生动物检测数据集14000张6类 YOLOv8 完整训练流程全步骤全代码一、数据集信息表项目详细内容数据集名称无人机航拍野生动物检测数据集总数量14000 张数据来源无人机航拍实拍标注格式VOC / YOLO 均可提供转换代码类别数量6 类类别列表sheep、cattle、seal、camelus、kiang、zebra应用场景野生动物监测、自然保护、农场监测、生态巡检数据特点多场景农田、草原、湿地、山地、保护区二、类别对应表类别ID英文标签中文名称0sheep绵羊1cattle牛2seal海豹3camelus骆驼4kiang藏野驴5zebra斑马三、环境准备11. 创建虚拟环境conda create-nwildlifepython3.9conda activate wildlife2. 安装 PyTorchpipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1183. 安装 YOLOv8 依赖pipinstallultralytics pipinstallopencv-python pillow tqdm numpy pandas四、准备自己的数据集标准 VOC / YOLO 结构标准 VOC 结构wildlife/ ├── Annotations/ xml 标注 ├── JPEGImages/ 图片 ├── ImageSets/ │ └── Main/ │ ├── train.txt │ └── val.txt标准 YOLO 结构wildlife/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/五、VOC XML → YOLO TXT 格式转换代码必看voc2yolo.pyimportosimportxml.etree.ElementTreeasETimportcv2# 类别顺序必须与上面一致classes[sheep,cattle,seal,camelus,kiang,zebra]defconvert_xml2yolo(xml_path,txt_save_path):treeET.parse(xml_path)roottree.getroot()sizeroot.find(size)wint(size.find(width).text)hint(size.find(height).text)withopen(txt_save_path,w)asf:forobjinroot.iter(object):clsobj.find(name).textifclsnotinclasses:continuecls_idclasses.index(cls)xmlboxobj.find(bndbox)xminfloat(xmlbox.find(xmin).text)yminfloat(xmlbox.find(ymin).text)xmaxfloat(xmlbox.find(xmax).text)ymaxfloat(xmlbox.find(ymax).text)cx(xminxmax)/2.0/w cy(yminymax)/2.0/h bw(xmax-xmin)/w bh(ymax-ymin)/h f.write(f{cls_id}{cx:.6f}{cy:.6f}{bw:.6f}{bh:.6f}\n)if__name____main__:xml_dirAnnotationssave_dirlabels/trainos.makedirs(save_dir,exist_okTrue)forxmlinos.listdir(xml_dir):convert_xml2yolo(os.path.join(xml_dir,xml),os.path.join(save_dir,xml[:-4].txt))print(转换完成)六、YOLO 数据集配置文件 wildlife.yamltrain:./images/trainval:./images/valnc:6names:0:sheep1:cattle2:seal3:camelus4:kiang5:zebra七、模型训练代码train.pyfromultralyticsimportYOLOimporttorchdeftrain_wildlife():device0iftorch.cuda.is_available()elsecpu# 加载预训练模型modelYOLO(yolov8s.pt)# 训练model.train(datawildlife.yaml,epochs120,batch16,imgsz640,devicedevice,workers8,projectwildlife_detect,nameyolov8_wildlife,patience20,optimizerAdamW,lr00.001,augmentTrue,mixup0.1,mosaic1.0,close_mosaic10,plotsTrue)if__name____main__:train_wildlife()八、模型推理代码detect.pyfromultralyticsimportYOLOdefdetect():modelYOLO(wildlife_detect/yolov8_wildlife/weights/best.pt)model.predict(sourcetest.jpg,conf0.25,iou0.45,saveTrue,showTrue)if__name____main__:detect()九、模型评估代码val.pyfromultralyticsimportYOLOdefval():modelYOLO(wildlife_detect/yolov8_wildlife/weights/best.pt)model.val(datawildlife.yaml,imgsz640,batch16,conf0.001,iou0.6,plotsTrue)if__name____main__:val()