计算机视觉:主流数据集整理
第一章:计算机视觉中图像的基础认知
第二章:计算机视觉:卷积神经网络(CNN)基本概念(一)
第三章:计算机视觉:卷积神经网络(CNN)基本概念(二)
第四章:搭建一个经典的LeNet5神经网络(附代码)
第五章:计算机视觉:神经网络实战之手势识别(附代码)
第六章:计算机视觉:目标检测从简单到容易(附代码)
第七章:MTCNN 人脸检测技术揭秘:原理、实现与实战(附代码)
第八章:探索YOLO技术:目标检测的高效解决方案
第九章:计算机视觉:主流数据集整理
第十章:生成对抗网络(GAN):从概念到代码实践(附代码)
第十一章:计算机视觉:经典数据格式(VOC、YOLO、COCO)解析与转换(附代码)
第十二章:计算机视觉:YOLOv11遥感图像目标检测(附代码)
在计算机视觉(CV)领域,数据集的质量和多样性对于推动算法创新和技术进步至关重要。本文整理当前最流行且最具影响力的数据集,涵盖目标检测、图像分类、语义分割、姿态估计等多个关键方向。
一、数据集格式
在计算机视觉领域,数据集的格式对于模型的训练和评估至关重要。不同的任务需要不同的数据集格式,本文介绍分类问题和目标检测问题的数据集格式。
1.1 分类任务数据集格式
分类问题是计算机视觉中最基本的任务之一,旨在识别图像中的主要对象或场景。下面以一个手势分类的例子来展示如何组织分类数据集。
gesture/
├── train/
│ ├── zero/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ ├── one/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ └── ...
├── test/
│ ├── zero/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ ├── one/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ └── ...
└── ...
在这个结构中
gesture
: 数据集根目录。train & test
: 训练集与测试集文件夹,用于划分数据集以便于模型训练和评估。zero, one
: 类别文件夹,每个类别有自己的文件夹,里面包含该类别的所有图片。
1.2 检测任务数据集格式
目标检测不仅需要识别图像中的对象,还需要精确定位这些对象的位置。这通常涉及到边界框的标注。
数据集名字/
├── images/
│ ├── train/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ ├── test/
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── ...
│ └── ...
├── labels/
│ ├── train/
│ │ ├── 1.txt
│ │ ├── 2.txt
│ │ └── ...
│ ├── test/
│ │ ├── 1.txt
│ │ ├── 2.txt
│ │ └── ...
│ └── ...
└── ...
- images: 包含原始图像的文件夹,分为训练集和测试集。
- labels: 包含对应图像中对象位置信息(如边界框坐标)的文本文件。labels 文件夹包含对应的标签文件。每一行表示一个目标的边界框和类别信息。比如:
1.3 标注工具
LabelImg 是一个常用的标注工具,用于创建目标检测的标签文件,从网络上找了一张LabelImg的使用界面图。
LabelImg标签文件格式
标签文件的每一行表示一个目标的边界框和类别信息,格式如下:
<class_id> <x_center> <y_center> <width> <height>
其中:
<class_id>
:目标的类别 ID,从 0 开始。<x_center>
和<y_center>
:边界框中心点的坐标,相对于图像宽度和高度的比例,范围为 0 到 1。<width>
和<height>
:边界框的宽度和高度,相对于图像宽度和高度的比例,范围为 0 到 1。
二、MNIST数据集
MNIST数据集是计算机视觉领域中用于手写数字识别任务的一个经典数据集。它由来自美国国家标准与技术研究所(NIST)的大量手写数字扫描图像组成,经过处理后被广泛应用于机器学习算法尤其是图像分类模型的基准测试。
主要特点
-
规模:
- 包含70,000张28x28像素的灰度手写数字图片。
- 这些图片被划分为60,000张训练图像和10,000张测试图像。
-
内容:
- 图像内容为0到9的手写数字,每个数字都有大量的样本。
- 每个图像都是灰度图,背景为黑色,前景(即手写数字)为白色,并且已经被归一化和平移缩放,以适应28x28像素的框架内。
-
标签:
- 每张图像都有一个对应的标签,表示该图像中的手写数字是什么(从0到9)。
-
用途:
- MNIST常被用来作为初学者入门机器学习的起点,特别是对于那些想要了解或实现图像分类算法的人。
- 它也被用作比较不同算法性能的标准基准之一。
-
格式:
- 数据集通常以二进制格式提供,但也有许多工具可以方便地将其转换为其他格式(如CSV、NumPy数组等),以便于在各种编程环境中使用。
- 在Python中,可以通过
tensorflow
或keras
等库轻松加载MNIST数据集。
使用示例
在Python中使用Keras加载MNIST数据集的例子如下:
from tensorflow.keras.datasets import mnist# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()# 查看数据集的基本信息
print("训练集尺寸:", train_images.shape)
print("训练集标签数量:", len(train_labels))
print("测试集尺寸:", test_images.shape)
print("测试集标签数量:", len(test_labels))
这段代码首先导入了必要的库,然后加载了MNIST数据集,并打印出了训练集和测试集的一些基本信息。这有助于快速上手并开始探索如何构建和训练模型来解决手写数字识别问题。
MNIST数据集由于其相对简单但又具有代表性的特性,成为了机器学习社区中最受欢迎的数据集之一。尽管近年来随着更复杂的数据集如CIFAR-10、ImageNet等的出现,MNIST的重要性有所下降,但它仍然是教育和研究中的一个重要资源,特别适合用于教学目的以及快速原型设计和算法验证。
三、CIFAR-10数据集
CIFAR-10 是计算机视觉领域中一个非常流行的数据集,主要用于图像分类任务。它由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集,并被广泛用于训练机器学习算法,尤其是深度学习模型。CIFAR-10 是其系列数据集中的一部分,该系列还包括了如 CIFAR-100 等其他变体。
主要特点
-
规模:
- 包含 60,000 张 32x32 像素的彩色图像。
- 这些图像被划分为 50,000 张训练图像和 10,000 张测试图像。
-
类别:
- 数据集包含 10 个不同的类别:飞机(airplane)、汽车(automobile)、鸟(bird)、猫(cat)、鹿(deer)、狗(dog)、青蛙(frog)、马(horse)、船(ship)和卡车(truck)。
- 每个类别有 6,000 张图像,确保了类别之间的平衡。
-
图像格式:
- 所有图像均为 RGB 彩色图像,尺寸为 32x32 像素,每个像素点由红、绿、蓝三个 8 位颜色通道组成,因此每个图像大小为 32x32x3 = 3,072 字节。
-
用途:
- CIFAR-10 数据集常被用来作为开发、训练和评估图像分类算法的基础,尤其是在卷积神经网络(CNNs)的研究中。
- 它是许多初学者进入深度学习领域的第一步,也是研究人员比较不同模型性能的重要基准之一。
-
挑战性:
- 尽管图像尺寸较小,但由于类间差异有时不明显,以及存在光照变化、遮挡等现实世界中的问题,使得 CIFAR-10 对于机器学习算法来说具有一定的挑战性。
使用示例
在Python中使用Keras加载CIFAR-10数据集的例子如下:
from tensorflow.keras.datasets import cifar10# 加载CIFAR-10数据集
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()# 查看数据集的基本信息
print("训练集尺寸:", train_images.shape)
print("训练集标签数量:", len(train_labels))
print("测试集尺寸:", test_images.shape)
print("测试集标签数量:", len(test_labels))
这段代码首先导入了必要的库,然后加载了CIFAR-10数据集,并打印出了训练集和测试集的一些基本信息。这有助于快速上手并开始探索如何构建和训练模型来解决图像分类问题。
四、ImageNet数据集
ImageNet是一个大规模的图像数据库,主要用于训练和评估机器学习模型,特别是那些用于图像分类任务的模型。以下是关于ImageNet数据集的一些关键点:
-
起源与发展:ImageNet项目始于2007年,由李飞飞等人发起,旨在构建一个大规模的、高质量的图像数据集,并通过众包的方式为每个类别标注大量的图片。“众包的方式”意味着项目团队通过在线平台邀请广大网络用户参与图像的分类与标注工作。每个参与者会被分配一定数量的图片,并要求根据指示为这些图片打上相应的标签,即识别出图片中的主要物体属于哪个或哪些类别。
-
规模与内容:截至2010年代中期,ImageNet包含了超过1400万张手工标注的图像,这些图像被分配到了大约21,000个类别中。这些类别覆盖了从动物、植物到人造物品等各种对象。
-
ILSVRC竞赛:ImageNet最著名的应用之一是其关联的年度竞赛——ImageNet大规模视觉识别挑战赛(ILSVRC)。该竞赛自2010年开始举办,吸引了全球的研究人员参与,促进了深度学习技术的发展,尤其是卷积神经网络(CNNs)的进步。
-
对AI领域的影响:由于其庞大的规模和多样性,ImageNet成为了开发和测试新的计算机视觉算法的重要资源。许多现代深度学习模型,包括AlexNet、VGG、ResNet等,在它们的研究初期都是在ImageNet数据集上进行训练和验证的,这大大推动了图像识别技术的发展。
“Classify”模型在ImageNet数据集上预先训练意味着该模型已经在一个广泛且多样化的图像集合上进行了学习,从而获得了强大的泛化能力,这对于解决各种实际问题非常有帮助。ImageNet数据集的配置文件ImageNet.yaml
五、COCO数据集
COCO数据集是一个广泛用于计算机视觉任务,特别是目标检测、分割、关键点检测和图像字幕生成等领域的大型数据集。它由微软资助并由一群研究人员共同创建。以下是样例图片:
主要特点
-
规模:
- COCO 数据集包含超过 33 万张图像。
- 其中有超过 20 万张标注了对象边界框,适用于目标检测任务。
- 约 16 万张图像标注了实例分割,适合于更精细的对象识别任务。
- 还有大约 25 万张图像标注了人物的关键点,可用于人体姿态估计。
-
类别:
- 数据集覆盖了 80 个不同的对象类别,从常见的“人”、“车”到较为具体的“叉子”、“飞盘”等。
- 每个类别都包含了大量实例,确保了模型学习的多样性和鲁棒性。
-
上下文信息:
- 与许多其他数据集不同的是,COCO 强调对象在具体场景中的位置和相互关系,这使得它非常适合研究如何理解和处理复杂的视觉场景。
- 提供了丰富的语义信息,如每张图片的描述性文字(caption),有助于进行图像理解的研究。
-
数据格式:
- 图像通常以高分辨率JPEG格式提供。
- 标注文件采用 JSON 格式,包含了详细的对象边界框、分割掩码、类别标签以及关键点坐标等信息。
-
子集划分:
- 数据集被划分为训练集(train)、验证集(val)和测试集(test)。
- 常用的版本包括
train2017
,val2017
, 和test2017
,这些版本的数据量和用途各有侧重,方便研究人员根据需要选择合适的子集进行实验。
-
应用场景:
- 目标检测:识别图像中所有对象的位置和类型。
- 实例分割:精确地描绘出每个对象的轮廓。
- 关键点检测:定位人体上的特定部位,如眼睛、肩膀等。
- 图像字幕生成:为图像自动生成描述性的文本。
使用示例
在使用COCO数据集进行模型训练或评估时,通常会参考其官方提供的配置文件(如 .yaml
文件),这些文件定义了数据集的位置、类别映射以及其他相关信息。例如,在YOLO框架中,可以这样加载COCO数据集:
from ultralytics import YOLO# Load a model
model = YOLO("yolo11n.yaml") # 或者加载预训练模型# Train the model on COCO dataset
results = model.train(data="coco.yaml", epochs=100, imgsz=640)
这里的 "coco.yaml"
是一个配置文件,指定了COCO数据集的具体路径和其他必要的参数。
COCO数据集由于其广泛的覆盖面、详细的标注以及丰富的应用场景支持,成为了计算机视觉领域内最为重要的基准之一。
六、COCO8数据集
COCO8 是一个小型但功能齐全的数据集,专门设计用于测试和调试目的。它是从更大的 COCO(Common Objects in Context)数据集中提取出来的子集,包含来自 COCO train 2017 数据集的前 8 张图像,并分为训练集和验证集。以下是样例图片
主要特点
- 规模:COCO8 包含总共 8 张图像,其中 4 张用于训练,另外 4 张用于验证。
- 用途:这个数据集非常适合用来快速测试新的检测方法、实验不同的模型配置或进行代码调试,因为它足够小,可以迅速处理,同时又足够多样化以揭示潜在的问题。
- 类别:尽管是小规模的数据集,COCO8 保留了原始 COCO 数据集中的丰富类别信息。具体来说,它包含了从 ‘person’ 到 ‘toothbrush’ 的 80 个类别。
- 格式:遵循 YOLO 所需的标准格式,包括图像文件以及相应的标注文件(通常为
.txt
文件),每个标注文件对应一张图像,并列出所有对象的位置(边界框坐标)和类别标签。 - 下载与使用:可以通过提供的 YAML 文件 (
coco8.yaml
) 轻松地将其集成到 Ultralytics YOLO 框架中。该 YAML 文件定义了数据集路径、类别名称以及其他相关信息。
示例 YAML 配置 (coco8-seg.yaml
)
# Ultralytics YOLO , AGPL-3.0 license
# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Classes
names:
0: person
1: bicycle
...
79: toothbrush
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip
使用场景
由于其小巧的体积,COCO8 特别适合以下情况:
- 快速迭代开发过程中对新想法进行初步验证。
- 在大规模训练之前检查管道是否存在基本错误。
- 教育和学习目的,帮助新手理解如何准备和使用目标检测数据集。
虽然 COCO8 对于最终的产品级模型评估并不适用,但它是一个非常有用的工具,可以帮助研究人员和开发者在投入更多资源之前确保他们的算法和实现是正确的。对于更全面的评估,则需要转向更大规模的数据集,如完整的 COCO 数据集或其他类似的大型数据集合。
持续整理中…
相关文章:

计算机视觉:主流数据集整理
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络(附代码) 第五章࿱…...

基于AT89C52单片机的出租车计价器
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90419909?spm1001.2014.3001.5501 C17 部分参考设计如下: 摘要 随着城市交通行业的迅速发展,出租车作为最主要的城市公共交通工具之一…...
C++入门基础课程讲解
C编程入门课程 | 码学堂 竞赛名师授课,不仅涵盖了从零开始学习C的所有必要知识点,还深入探讨了基础算法及其应用,课程内容包括: (1)编程及上机平台介绍:包括推荐使用的IDE和在线编译器…...

Graspness Discovery in Clutters for Fast and Accurate Grasp Detection 解读
研究背景 研究问题 :这篇文章要解决的问题是如何在杂乱的环境中快速且准确地检测抓取姿态。传统的 6自由度抓取方法将场景中的所有点视为平等,并采用均匀采样来选择抓取候选点,但忽略了抓取位置的重要性,这极大地影响了抓取姿态检…...
MyBatis的CRUD
1. what MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射实体类型、接口、Java POJO(Plain Old Java Objects,普…...
leetcode 题目解析 第3题 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”…...

深度学习入门--神经网络
初学,若有错误,恳请指正。 目录 初学,若有错误,恳请指正。 3.1 从感知机到神经网络 3.1.1 神经网络的例子 3.1.2 复习感知机 3.1.3 激活函数登场 3.2 激活函数 3.2.1 sigmoid 函数 3.2.2 阶跃函数的实现 3.2.3 阶跃函数…...

pycharm 调试 debug 进入 remote_sources
解决办法1: pycharm函数跳转到remote_sources中的文件中_pycharm修改remotesource包存放地址-CSDN博客 file->settings->project structure将项目文件夹设为"Sources"(此时文件夹会变为蓝色)。 解决方法2 Debug:使用Pychar…...

【复习】计算机网络
网络模型 OSI 应用层:给应用程序提供统一的接口表示层:把数据转换成兼容另一个系统能识别的格式会话层:负责建立、管理、终止表示层实体之间的通信会话传输层:负责端到端的数据传输网络层:负责数据的路由、转发、分片…...
CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望
CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望 引言CentOS停服的背景华为openEuler:面向未来的开源操作系统1. 简介2. 特点3. 发展趋势 Rocky Linux:CentOS的精神继承者1. 简介2. 特点3. 发展趋势 其他可选的替代系统1…...

ollama+open-webui,本地部署自己的大模型
目录 一、效果预览 二、部署ollama 1.ollama说明 2.安装流程 2.1 windows系统 2.1.1下载安装包 2.1.2验证安装结果 2.1.3设置模型文件保存地址 2.1.4拉取大模型镜像 2.2linux系统 2.2.1下载并安装ollama 2.2.2设置环境变量 2.2.3拉取模型文件 三、部署open-webui…...
Oracle EBS 12.1和APEX 集成时 Apache的配置代理
在有些场景下,apex的前端服务不是和oracle EBS 应用部署在同一个服务器上或者要求apex和访问地址和EBS公用同一个域名同一个端口,那么怎么才能做到用EBS 的域名和端口来实现对apex的访问呢 通过配置代理规则解决,以Oracle EBS 12.1.3 为例&am…...
hive开窗函数边界值ROWS BETWEEN 和 RANGE BETWEEN区别
目录 一、概念 1.rows between ... and ... 2.range between ... and ... 二、语法 1.关键词含义 一、概念 1.rows between ... and ... rows:指以行号来决定frame的范围,是物理意义上的行。 2.range between ... and ... range:指以当…...

HTML第一节
一.HTML标签 注意:1.双标签是要包裹内容的 (单标签单独记) 二.HTML骨架 1.骨架规则 注意:1.title为网页的名字 2.VS code自动生成骨架 注意:1.先输入感叹号(必须为英文) 再按回车 三.标签间的…...
Google第三方库详解------ProtoBuf详解 + 样例(5万字详解!)
目录 前言: 提示: 插件 入门: ProtoBuf普通字段类型: 编译命令: 序列化与反序列化: Proto3语法: 字段规则:数组类型 应用 将通讯录数据序列化后写入文件 工具介绍&#x…...
机器学习数学通关指南——泰勒公式
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 泰勒公式是用多…...
如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?
如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗? DeepSeek R1 思考 35 秒 思考过程 好的,用户的问题是关于在Android客户端使用Kotlin处理后台返回的Long类型数据为n…...

ai-financial-agent - 为金融投资打造的AI代理
探索人工智能在投资研究中的应用。本项目仅用于**教育**目的,不用于真实交易或投资。 作者声明: 本项目仅用于教育和研究目的。 不用于真实交易或投资不提供任何保证或担保过去的表现并不代表未来的结果Creator 对经济损失不承担任何责任咨询财务顾问…...

学习路程三 数据加载及向量化
前序 之前简单粗暴将LangChain分了几块,现在就挨着了解学习每块内容。今天主要从文档这条路来看。 本地文档这一条链路,通过加载,分割,向量化,再存储数据库 ps:看到这里还想继续实操下去,可以…...

基于GWO灰狼优化的WSN网络最优节点部署算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 无线传感器网络(Wireless Sensor Network, WSN)由大量分布式传感器节点组成,用于监测物理或环境状况。节点部署是 WSN 的关键问…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...