hyperspectral-fruit
收藏Living Optics Hyperspectral Fruit Dataset
概述
该数据集包含100张在受控光照条件下拍摄的各种水果和蔬菜的图像,使用Living Optics Camera。数据包括RGB图像、稀疏光谱样本和实例分割掩码。从100张图像中,我们提取了超过430,000个光谱样本,其中超过85,000个属于数据集中的19个类别之一。其余的光谱可用于训练分类器时的负采样。此外,提供了11张带标签的图像作为验证集。还提供了一组未标注的.lo格式的演示视频,可用于定性测试基于此数据集构建的算法。
类别
训练数据集包含19个类别:
- 🍋 柠檬 - 8275个总光谱样本
- 🍈 甜瓜 - 9507个总光谱样本
- 🥒 黄瓜 - 227个总光谱样本
- 🍏 Granny Smith苹果 - 3984个总光谱样本
- 🍏 Jazz苹果 - 272个总光谱样本
- 🍎 塑料苹果 - 6693个总光谱样本
- 🍎 Pink Lady苹果 - 17311个总光谱样本
- 🍎 Royal Gala苹果 - 21319个总光谱样本
- 🍅 番茄 - 3748个总光谱样本
- 🍅 樱桃番茄 - 360个总光谱样本
- 🍅 塑料番茄 - 569个总光谱样本
- 🫑 青椒 - 226个总光谱样本
- 🫑 黄椒 - 4752个总光谱样本
- 🫑 橙椒 - 552个总光谱样本
- 🍊 橙子 - 4641个总光谱样本
- 🍊 Easy Peeler橙子 - 2720个总光谱样本
- 🍐 梨 - 194个样本
- 🍇 绿葡萄 - 106个总光谱样本
- 🍋🟩 青柠 - 43个总光谱样本
下载说明
命令行
commandline mkdir -p hyperspectral-fruit huggingface-cli download LivingOptics/hyperspectral-fruit --repo-type dataset --local-dir hyperspectral-fruit
Python
python from huggingface_hub import hf_hub_download dataset_path = hf_hub_download(repo_id="LivingOptics/hyperspectral-fruit", filename="train", repo_type="dataset") print(dataset_path)
使用方法
python import os.path as op import numpy.typing as npt from typing import List, Dict, Generator from lo.data.tools import Annotation, LODataItem, LOJSONDataset, draw_annotations from lo.data.dataset_visualisation import get_object_spectra, plot_labelled_spectra from lo.sdk.api.acquisition.io.open import open as lo_open
加载数据集
path_to_download = op.expanduser("~/Downloads/hyperspectral-fruit") dataset = LOJSONDataset(path_to_download)
获取训练数据作为迭代器
training_data: List[LODataItem] = dataset.load("train")
检查数据
lo_data_item: LODataItem for lo_data_item in training_data[:3]: draw_annotations(lo_data_item) ann: Annotation for ann in lo_data_item.annotations: print(ann.class_name, ann.category, ann.subcategories)
绘制每个类别的光谱
fig, ax = plt.subplots(1) object_spectra_dict = {} class_numbers_to_labels = {0: "background_class"} for lo_data_item in training_data: object_spectra_dict, class_numbers_to_labels = get_object_spectra( lo_data_item, object_spectra_dict, class_numbers_to_labels )
plot_labelled_spectra(object_spectra_dict, class_numbers_to_labels, ax) plt.show()




