1.数据下载方式:load_dataset
将数据集下载到本地:(此处下载的是一个物体目标检测的数据集)
from datasets import load_dataset # 下载的数据集名称, model_name = 'keremberke/plane-detection' # 数据集保存的路径 save_path = 'datasets' #name参数为full或mini,full表示下载全部数据,mini表示下载部分少量数据 dataset = load_dataset(model_name, name="full") dataset.save_to_disk(save_path)
huggingface可以把处理好的数据保存成下面的格式:
下载到本地后的数据结构如下:
2.加载本地的arrow文件:load_from_disk
from datasets import load_from_disk path = './train' # train:表示上述训练集在本地的路径 dataset = load_from_disk(path)
数据以类似于表格的形式存储,包含以下列名:[‘image_id’, ‘image’, ‘width’, ‘height’, ‘objects’]
image_id: 图片id
image:存储的图像文件,是PIL对象:<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x29F8DFAA550>
width:图像宽度
height:图像高度
objects:图像其他相关信息,如标注的标签信息等
3.Arrow文件中结构说明
print(dataset[0]) 运行结果如下: """ {'image_id': 11, 'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x2D70D08C3D0>, 'width': 1920, 'height': 1080, 'objects': {'id': [9], 'area': [36993], 'bbox': [[383.0, 268.0, 209.0, 177.0]], 'category': [0]}} """
'objects’中的bbox表示标记框(x1,y1,width,height);category:表示目标类别
显示图片:
img = dataset['image'][0] plt.imshow(img) plt.show()
显示标记框的示例代码如下:
# 取第一张图片 img = dataset['image'][0] # 将PIL--RGB格式图片转化为CV--BGR图片 cv_img = cv2.cvtColor(numpy.asarray(img),cv2.COLOR_RGB2BGR) box_info = dataset['objects'][0]['bbox'][0] p1 = [int(box_info[0]),int(box_info[1])] p2 = [int(box_info[0]+box_info[2]),int(box_info[1]+box_info[3])] cv2.rectangle(cv_img, p1, p2, (0, 255, 0), 2) cv2.imshow("img", cv_img) cv2.waitKey(0)