ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

无人机视角葡萄早期发育阶段计数系统 葡萄早期发育阶段计数数据集 葡萄数据集的应用

无人机视角葡萄早期发育阶段计数系统 葡萄早期发育阶段计数数据集 葡萄数据集的应用 无人机视角葡萄早期发育阶段计数系统 葡萄早期发育阶段计数数据集 葡萄数据集的应用无人机视角葡萄早期发育阶段计数葡萄串的数量为葡萄种植者提供了有关潜在收获产量的相关信息。然而在田间进行手工计数是费时费力的。配备RGB或多光谱摄像头的无人机能够快速而准确地完成这项任务。 该数据集包含15GB无人机拍摄图像与可见葡萄串的掩码标签。使用的RGB相机倾斜角为60度。每次飞行记录了葡萄园一行的一侧。葡萄浆果处于豌豆大小到串封闭阶段即在收获前两个月拍摄。以下是完整的代码示例包括数据准备、模型训练和生成预测结果。importosimportcv2importnumpy as np from sklearn.model_selectionimporttrain_test_splitimportshutil from ultralyticsimportYOLO# Define pathsdata_pathpath_to_your_datasetimages_pathos.path.join(data_path,images)masks_pathos.path.join(data_path,masks)train_images_pathos.path.join(data_path,images,train)train_labels_pathos.path.join(data_path,labels,train)val_images_pathos.path.join(data_path,images,val)val_labels_pathos.path.join(data_path,labels,val)# Create directories if they dont existos.makedirs(train_images_path,exist_okTrue)os.makedirs(train_labels_path,exist_okTrue)os.makedirs(val_images_path,exist_okTrue)os.makedirs(val_labels_path,exist_okTrue)# Load masks and convert to bounding boxesdef load_masks_and_convert(masks_path): annotations[]forfilenameinos.listdir(masks_path):iffilename.endswith(.png)or filename.endswith(.jpg): mask_filenamefilename image_filenamefilename mask_pathos.path.join(masks_path, mask_filename)maskcv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)contours, _cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)bboxes[]forcontourincontours: x, y, w, hcv2.boundingRect(contour)bboxes.append([x, y, x w, y h])annotations.append({image:image_filename,bboxes:bboxes})returnannotations annotationsload_masks_and_convert(masks_path)# Split data into train and validation setstrain_annots, val_annotstrain_test_split(annotations,test_size0.2,random_state42)# Save images and annotations to respective foldersdef save_data(annots, images_save_path, labels_save_path):forannotinannots: image_filenameannot[image]image_pathos.path.join(images_path, image_filename)shutil.copy(image_path, images_save_path)with open(os.path.join(labels_save_path, os.path.splitext(image_filename)[0].txt),w)as f:forbboxinannot[bboxes]: x_center(bbox[0] bbox[2])/2.0/1920# Assuming image width is 1920y_center(bbox[1] bbox[3])/2.0/1080# Assuming image height is 1080width(bbox[2]- bbox[0])/1920# Assuming image width is 1920height(bbox[3]- bbox[1])/1080# Assuming image height is 1080class_id0# Only one class grape_clusterf.write(f{class_id} {x_center} {y_center} {width} {height}\n)save_data(train_annots, train_images_path, train_labels_path)save_data(val_annots, val_images_path, val_labels_path)# Create dataset.yaml file for YOLOv8dataset_yaml_content train: ./images/train val: ./images/val nc:1names:[grape_cluster] with open(os.path.join(data_path,dataset.yaml),w)as f: f.write(dataset_yaml_content)# Step 3: Train YOLOv8 Model# Load a pre-trained YOLOv8 modelmodelYOLO(yolov8n.pt)# You can choose other sizes like yolov8s, yolov8m, yolov8l, yolov8x# Modify the number of classes in the final layermodel.nc1# Training commandresultsmodel.train(dataos.path.join(data_path,dataset.yaml),imgsz640,epochs50,batch16,devicecudaiftorch.cuda.is_available()elsecpu,cacheTrue)# Evaluate the modelmetricsmodel.val()# Export the trained modelmodel.export(formatonnx)运行脚本在终端中运行以下命令来执行整个流程python main.py总结以上文档包含了从数据加载、预处理、模型构建到训练的所有步骤。希望这些详细的信息和代码能够帮助你顺利实施和优化你的无人机视角葡萄早期发育阶段计数系统。自定义说明数据文件路径: 修改data_path变量以指向你的数据文件。图像分辨率: 根据你的实际图像分辨率调整x_center,y_center,width,height的计算公式。超参数调整: 根据需要调整训练参数如imgsz,epochs,batch等。模型选择: 你可以选择不同的 YOLOv8 模型大小yolov8n,yolov8s,yolov8m,yolov8l,yolov8x以适应你的需求。通过这些步骤使用 YOLOv8 进行无人机视角葡萄早期发育阶段计数任务。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表