数据获取与处理(以CV任务为主)

一、数据的获取途径

1.1 Kaggle有趣比较火热的数据集

House Prices-Advanced Regression Techniques 预测销售价格
Cat and Dog 猫狗分类
Machine Learning from Disaster 预测泰坦尼克号的生存情况并熟悉机器学习基础知识

1.2 天池

Barley Remote Sensing Dataset大麦遥感检测数据集 遥感影像分割
耶鲁人脸数据库 目标检测任务(人脸检测)

1.3 DataFountain

花卉分类数据集 图像分类

1.4 其他常用的数据集官网

科大讯飞官网
COCO数据集
Github
和鲸社区
codechina

1.5 完整流程概述

1.5.1 图像处理完整流程
  1. 图片数据获取
  2. 图片数据清洗
    初步了解数据,筛选掉不合适的图片。即便公开数据集可能也需要筛除一部分。
  3. 图片数据标注
  4. 图片数据预处理data preprocessing
    主要操作:标准化 standardization
    中心化 = 去均值 mean normalization
    将各个维度中心化到0,目的是加快收敛速度,在某些激活函数上表现更好。
    归一化 = 除以标准差
    将各个维度的方差标准化处于[-1,1]之间,目的是提高收敛效率,统一不同输入范围的数据对于模型学习的影响,映射到激活函数有效梯度的值域。
    在这里插入图片描述
  5. 图片数据准备data preparation(训练+测试阶段)
    划分训练集,验证集,以及测试集
  6. 图片数据增强data augmentation(训练阶段 )
    CV常见的数据增强 :
    随机旋转
    随机水平或者重直翻转
    缩放
    剪裁
    平移
    调整亮度、对比度、饱和度、色差等等
    注入噪声
    基于生成对抗网络GAN做数据增强AutoAugment等
1.5.2 纯数据处理完整流程

数据预处理与特征工程

感知数据
  • 初步了解数据
  • 记录和特征的数量特征的名称
  • 抽样了解记录中的数值特点描述性统计结果
  • 特征类型
  • 与相关知识领域数据结合,特征融合
数据清理
  • 转换数据类型
  • 处理缺失数据
  • 处理离群数据
特征变换
  • 特征数值化
  • 特征二值化
  • OneHot编码
  • 特征离散化特征
  • 规范化
    区间变换
    标准化
    归一化
特征选择
  • 封装器法
    循序特征选择
    穷举特征选择
    递归特征选择
  • 过滤器法
  • 嵌入法
特征抽取
  • 无监督特征抽取
    主成分分析
    因子分析
  • 有监督特征抽取
皮尔森相关系数

皮尔森相关系数用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。 Pearson系数的取值范围为[-1,1],当值为负时,为负相关,当值为正时,为正相关,绝对值越大,则正/负相关的程度越大。若数据无重复值,且两个变量完全单调相关时,spearman相关系数为+1或-1。当两个变量独立时相关系统为0,但反之不成立。
用Corr()函数即可,(保证行相同) ——求ρ (概率论与数理统计)
在这里插入图片描述
当两个变量的标准差都不为零时,相关系数才有定义,Pearson相关系数适用于:
①两个变量之间是线性关系,都是连续数据。
②两个变量的总体是正态分布,或接近正态的单峰分布。
③两个变量的观测值是成对的,每对观测值之间相互独立。

二、数据处理和标注

2.1 官方数据处理成VOC或者COCO

2.1.1 数据集介绍

COCO2017数据集

COCO数据集是Microsoft制作收集用于Detection + Segmentation + Localization + Captioning的数据集,作者收集了其2017年的版本,一共有25G左右的图片和600M左右的标签文件。
COCO数据集共有小类80个,分别为:

[‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘airplane’, ‘bus’, ‘train’, ‘truck’, ‘boat’, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle’, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair’, ‘couch’, ‘potted plant’, ‘bed’, ‘dining table’, ‘toilet’, ‘tv’, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’]

大类12个,分别为:

[‘appliance’, ‘food’, ‘indoor’, ‘accessory’, ‘electronic’, ‘furniture’, ‘vehicle’, ‘sports’, ‘animal’, ‘kitchen’, ‘person’, ‘outdoor’]

VOC与COCO简介

Pascal 的全称是模式分析,静态建模和计算学习(Pattern Analysis, Statical Modeling and Computational Learning)。PASCAL VOC 挑战赛是视觉对象的分类识别和检测的一个基准测试,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。从2005年至今,该组织每年都会提供一系列类别的、带标签的图片,挑战者通过设计各种精妙的算法,仅根据分析图片内容来将其分类,最终通过准确率、召回率、效率。

MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集,与ImageNet竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。

标注的使用
COCO格式,文件夹路径样式:

COCO_2017/
├── val2017 # 总的验证集
├── train2017 # 总的训练集
├── annotations # COCO标注
│ ├── instances_train2017.json # object instances(目标实例) —目标实例的训练集标注
│ ├── instances_val2017.json # object instances(目标实例) —目标实例的验证集标注
│ ├── person_keypoints_train2017.json # object keypoints(目标上的关键点) —关键点检测的训练集标注
│ ├── person_keypoints_val2017.json # object keypoints(目标上的关键点) —关键点检测的验证集标注
│ ├── captions_train2017.json # image captions(看图说话) —看图说话的训练集标注
│ ├── captions_val2017.json # image captions(看图说话) —看图说话的验证集标注

VOC格式,文件夹路径样式:

VOC_2017/
├── Annotations # 每张图片相关的标注信息,xml格式
├── ImageSets
│ ├── Main # 各个类别所在图片的文件名
├── JPEGImages # 包括训练验证测试用到的所有图片
├── label_list.txt # 标签的类别数
├── train_val.txt #训练集
├── val.txt # 验证集

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的任务,需要用到Python中的一些库和函数。下面我会一步一步地给出代码和解释。 首先,我们需要导入一些必要的库,包括opencv-python、numpy、sklearn等。其中,opencv可以帮助我们读取图像,numpy可以处理图像数据,sklearn中包含了k-means、cmeans、DBSCAN等聚类方法。代码如下: ```python import cv2 import numpy as np from sklearn.cluster import KMeans, DBSCAN from sklearn_extra.cluster import KMedoids from skfuzzy.cluster import cmeans ``` 接下来,我们定义一个函数`read_image()`,用于读取给定的糖尿病性视网膜病变图像,并获取图像的大小、数据类型、颜色模式等信息,并将每个像素点的RGB颜色处理到0-1之间。代码如下: ```python def read_image(image_path): # 读取图像 img = cv2.imread(image_path) # 获取图像信息 height, width, channels = img.shape dtype = img.dtype color_mode = "color" if channels == 3 else "grayscale" # 将像素点的RGB颜色处理到0-1之间 img = img / 255.0 return img, height, width, channels, dtype, color_mode ``` 接下来,我们定义一个函数`segment_image()`,用于对图像进行聚类实现图像分割。这个函数接受两个参数,一个是图像数据,一个是聚类方法的名称("kmeans"、"cmeans"或"DBSCAN")。代码如下: ```python def segment_image(img, method): # 将图像数据转换为二维数组 data = img.reshape((-1, 3)) # 根据聚类方法进行聚类 if method == "kmeans": cluster = KMeans(n_clusters=3, random_state=0).fit(data) elif method == "cmeans": cntr, u, u0, d, jm, p, fpc = cmeans(data.T, 3, 2, error=0.005, maxiter=1000, seed=0) labels = np.argmax(u, axis=0) cluster = KMedoids(n_clusters=3, random_state=0).fit(data, sample_weight=labels) elif method == "DBSCAN": cluster = DBSCAN(eps=0.1, min_samples=10).fit(data) else: raise ValueError("Invalid method name.") # 获取聚类结果 labels = cluster.labels_ centers = cluster.cluster_centers_ # 将每个像素点的颜色替换为所属簇的中心颜色 new_data = np.zeros_like(data) for i in range(len(labels)): new_data[i] = centers[labels[i]] # 将处理后的数据转换回图像格式 new_img = new_data.reshape((img.shape)) return new_img ``` 最后,我们可以编写主程序,调用上面的函数,读取图像并进行聚类分割,并输出每种方法分割后的图像。代码如下: ```python if __name__ == "__main__": # 读取图像 img, height, width, channels, dtype, color_mode = read_image("retina.jpg") # 输出图像信息 print("Height:", height) print("Width:", width) print("Channels:", channels) print("Data type:", dtype) print("Color mode:", color_mode) # 对图像进行聚类分割并输出结果 methods = ["kmeans", "cmeans", "DBSCAN"] for method in methods: result = segment_image(img, method) cv2.imshow(method, result) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这样,我们就完成了对给定糖尿病性视网膜病变图像的聚类分割,并输出了每种方法分割后的图像。需要注意的是,不同的聚类方法可能会得到不同的结果,因此需要对比分析才能确定最佳的分割方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值