当前位置: 首页 > news >正文

FiftyOne 管理数据

FiftyOne 管理数据

下载安装FiftyOne

https://docs.voxel51.com/

下载 coco-2017

使用 FiftyOne 查看

import fiftyone as fo
import fiftyone.zoo as foz# 自定义路径 - 修改这些变量以匹配你的环境
image_path = '/media/wmx/ws3/AI/data/coco2017/train2017'
annotations_path = '/media/wmx/ws3/AI/data/coco2017/annotations_trainval2017/annotations/instances_train2017.json' # 创建一个数据集
dataset = fo.Dataset.from_dir(dataset_type=fo.types.COCODetectionDataset,data_path=image_path,labels_path=annotations_path,name="coco2017"
)# 查看数据集
session = fo.launch_app(dataset, port=5151) # 或者任何你选择的端口号
session.wait()

数据集比较大,我们只加载部分,导出coco到yolo格式

import fiftyone as fo
import fiftyone.zoo as foz
import yaml
import os# 自定义路径 - 修改这些变量以匹配你的环境
image_path = '/media/wmx/ws3/AI/data/coco2017/train2017'
annotations_path = '/media/wmx/ws3/AI/data/coco2017/annotations_trainval2017/annotations/instances_train2017.json' # 创建一个数据集
dataset = fo.Dataset.from_dir(dataset_type=fo.types.COCODetectionDataset,data_path=image_path,labels_path=annotations_path,max_samples=200,  # 只加载前 200name="coco2017"
)# 定义要过滤的类别
# linux 命令行 :
#     jq -r '.categories[].name' /media/wmx/ws3/AI/data/coco2017/annotations_trainval2017/annotations/instances_train2017.json | sort -u
filter_names = ["airplane", "apple", "backpack", "banana", "baseball bat", "baseball glove", "bear", "bed", "bench", "bicycle", "bird", "boat", "book", "bottle", "bowl", "broccoli", "bus", "cake", "car", "carrot", "cat", "cell phone", "chair", "clock", "couch", "cow", "cup", "dining table", "dog", "donut", "elephant", "fire hydrant", "fork", "frisbee", "giraffe", "hair drier", "handbag", "horse", "hot dog", "keyboard", "kite", "knife", "laptop", "microwave", "motorcycle", "mouse", "orange", "oven", "parking meter", "person", "pizza", "potted plant", "refrigerator", "remote", "sandwich", "scissors", "sheep", "sink", "skateboard", "skis", "snowboard", "spoon", "sports ball", "stop sign", "suitcase", "surfboard", "teddy bear", "tennis racket", "tie", "toaster", "toilet", "toothbrush", "traffic light", "train", "truck", "tv", "umbrella", "vase", "wine glass", "zebra"
]# 过滤数据集中的样本,只保留指定类别的样本
filtered_dataset = dataset.filter_labels("detections", fo.ViewField("label").is_in(filter_names))# 随机抽取 100 个样本
random_subset = filtered_dataset.take(100)# 定义导出路径
export_dir = '/media/wmx/ws3/AI/data/51/coco-yolo2017'# 导出为 YOLO 格式
try:random_subset.export(export_dir="/media/wmx/ws3/AI/data/51/coco-yolo2017",dataset_type=fo.types.YOLOv5Dataset,label_field="ground_truth")
except ValueError as e:print(f"Export failed: {e}. Please check the 'names' field in your dataset configuration.")print(f"数据已成功导出到 {export_dir}")# 创建或更新 yaml 文件
yaml_file_path = os.path.join(export_dir, 'dataset.yaml')# 创建 yaml 内容
yaml_content = {'names': filter_names,'path': export_dir,'train': './images/train/'
}# 写入 yaml 文件
with open(yaml_file_path, 'w') as yaml_file:yaml.dump(yaml_content, yaml_file)print(f"yaml 文件已成功创建/更新到 {yaml_file_path}")# 查看数据集
session = fo.launch_app(random_subset, port=5151)
session.wait()

其中查看数据集中的所有类别信息
linux 命令行 :

  jq -r '.categories[].name' /media/wmx/ws3/AI/data/coco2017/annotations_trainval2017/annotations/instances_train2017.json | sort -u

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 使用Java基于Geotools的SLD文件编程式创建与磁盘生成实战
  • LeetCode每日一题4.19
  • YOLO11改进-Backbone-使用MobileMamba替换YOLO backbone 提高检测精度
  • Flutter 弹窗队列管理:实现一个线程安全的通用弹窗队列系统
  • 基于尚硅谷FreeRTOS视频笔记——15—系统配制文件说明与数据规范
  • 考公:数字推理
  • 【NLP 66、实践 ⑰ 基于Agent + Prompt Engineering文章阅读】
  • 你的电脑在开“外卖平台”?——作业管理全解析
  • QML Rectangle 组件
  • 卷积神经网络基础(二)
  • 嵌入式单片机通过ESP8266连接物联网实验
  • 06-libVLC的视频播放器:推流RTMP
  • HCIP --- OSPF综合实验
  • office软件中word里面的编号库和列表库功能
  • 在 Node.js 中使用原生 `http` 模块,获取请求的各个部分:**请求行、请求头、请求体、请求路径、查询字符串** 等内容
  • C# 预定义类型全解析
  • 实验扩充 LED显示4*4键位值
  • 单片机毕业设计选题物联网计算机电气电子类
  • Java使用javacv实现的多种音视频格式播放器
  • Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时
  • 上海与世界|黄菊与上海建设中国式全球城市
  • 中国固体火箭发动机领域杰出专家赵殿礼逝世,享年92岁
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?