【宠物狗狗数据集】 犬类品种识别 宠物狗检测 深度学习 目标检测(含数据集)
一、背景意义
随着人们对宠物狗的喜爱日益增加,犬种的多样性也逐渐受到重视。狗狗不仅是家庭的好伴侣,更在多个领域中发挥着重要作用,如导盲、搜救、疗愈等。因此,准确识别和分类各种犬种显得尤为重要。传统的犬种识别方法往往依赖于人工观察与专业知识,效率低下且容易出现误判。随着深度学习技术的迅猛发展,利用卷积神经网络(CNN)等先进技术进行狗狗品种的自动识别与分类,成为了提高识别效率和准确性的有效解决方案。通过构建包含多种犬种的大规模数据集,训练深度学习模型,可以显著提高犬种识别的准确性,帮助宠物主人和相关人员更好地了解狗狗的特征和习性。在动物救助和保护领域,快速准确地识别犬种对于救助工作至关重要。通过深度学习技术,可以在救助现场快速识别被救助犬只的品种,进而制定相应的护理和安置方案。
二、数据集
2.1数据采集
首先,需要大量的犬类图像。为了获取这些数据,可以采取了以下几种方式:
-
网络爬虫:使用Python的
BeautifulSoup
和Selenium
编写了一个网络爬虫,从公开的图片网站、社交媒体和一些开源图片库中抓取了大量图片。在抓取过程中,确保每张图片都有清晰的目标物体,并且避免重复图片。 -
开源数据集:从网上下载了一些公开的数据集。这些数据集为项目提供了一个良好的起点,尤其在数据量不足时,它们可以极大地提高模型训练的效果。
-
自定义照片:为了增加数据的多样性,还拍摄了一些照片,包括不同的品种、背景和光照条件,以确保数据的丰富性和代表性。
在收集到大量图片后,对这些原始数据进行了清洗和筛选:
-
去除低质量图片:一些图像模糊、分辨率过低或者有其他物体干扰的图片被剔除掉。确保每张图片都能清晰地展示犬类特征是数据质量的关键。
-
统一格式:将所有图片转换为统一的JPEG格式,并将图片的分辨率统一到256x256像素,这样可以在后续的训练中减少不必要的图像缩放操作,保证数据的一致性。
-
分类整理:将所有图片按照类别进行分类,分别放入对应文件夹中。每个类别的文件夹下严格只包含对应的图片,避免数据集出现混乱。
2.2数据标注
数据标注是为每张图像分配相应的类别标签,以便于后续的模型训练。具体步骤包括:
- 选择标注工具:使用图像标注工具(LabelImg)对收集的图像进行标注。这些工具支持用户在图像上绘制边界框并为其分配标签。
- 标记类别:对每张图像进行分类,标注为相应的犬种名称。确保标注准确,避免出现错误或重复标注。
- 格式统一:确保所有标注数据保存为统一的格式,例如YOLO格式或Pascal VOC格式。标注文件应包含图像中的所有对象信息,包括类别和位置坐标。
- 质量检查:在数据标注后,进行质量检查,以确保标注的准确性和完整性。可以通过随机抽样检查标注结果,并对发现的问题进行更正。
数据集包含了来自多个狗狗品种的图像,涵盖了各种不同的外貌特征和体型。标注这一数据集需要对狗狗的品种有深入的了解,因为其中包含了来自 60 多个狗狗品种的样本。这些品种包括但不限于 非洲狩猎犬、阿彭策尔、伯恩山犬、边境牧羊犬、弗拉德斯牧羊犬 等。每个品种都有其独特的特征和外观,使得标注过程相当复杂和耗时。由于狗狗的外貌差异很大,需要仔细观察每张图像,准确地标注出狗狗的品种。这项工作需要耐心和专注,确保每个样本都被正确标注。标注人员需要熟悉各种犬种的外观特征,以避免混淆或错误标注。
包含9884张狗狗图片,数据集中包含以下几种类别
- 非洲猎狗:一种原产于非洲的狩猎犬。
- 阿彭策尔犬:一种瑞士的工作犬,具有勇敢和活泼的性格。
- 伯恩山犬:源自瑞士伯恩州的大型工作犬,性格温和友善。
- 边境牧羊犬:出色的牧羊犬,聪明、忠诚。
- 弗兰德斯牧牛犬:比利时原产的牧牛犬,具有强壮的体格。
- 布拉班特格里芬犬:比利时犬种,外观独特,性格活泼。
- 不列颠斯潘尼尔犬:英国猎犬,善良、友好。
- 卡迪根:威尔士柯基犬的一种品种,活泼可爱。
- 杜宾犬:源自德国的工作犬,聪明、忠诚。
- 英国雪达犬:英国猎犬,优秀的猎犬和伴侣犬。
- 英国史宾格犬:英国猎犬,活泼、友好。
- 恩特勒布赫犬:瑞士犬种,勇敢、忠诚。
- 爱斯基摩犬:北极地区的工作犬,适应力强。
- 法国斗牛犬:法国犬种,温和、友好。
- 德国牧羊犬:多才多艺的工作犬,聪明、忠诚。
- 戈登雪达犬:英国猎犬,温和、友好。
- 大丹犬:体型巨大的犬种,性格温和。
- 大比利牛斯犬:法国犬种,勇敢、守护性强。
- 大瑞士山地犬:瑞士犬种,强壮、友好。
- 爱尔兰雪达犬:爱尔兰猎犬,友好、热情。
- 爱尔兰水猎犬:爱尔兰犬种,善良、聪明。
- 莱翁贝格犬:德国犬种,温和、友好。
- 墨西哥无毛犬:墨西哥的犬种,无毛、活泼。
- 纽芬兰犬:加拿大原产的大型工作犬,温和、友好。
- 英国老英格兰牧羊犬:英国牧羊犬,忠诚、友好。
- 彭布罗克:威尔士柯基犬的一种品种,活泼可爱。
- 博美犬:小型犬种,活泼、聪明。
- 罗威纳犬:德国犬种,忠诚、勇敢。
- 圣伯纳犬:瑞士犬种,温和、友好。
- 萨摩耶犬:俄罗斯犬种,友好、温和。
- 设得兰羊犬:英国牧羊犬,忠诚、友好。
- 西伯利亚哈士奇:俄罗斯犬种,活泼、友好。
- 苏塞克斯斯潘尼尔犬:英国犬种,友好、活泼。
- 藏獒:中国的犬种,守护性强。
2.3数据预处理
数据预处理是为模型训练准备数据的关键步骤,主要包括:
- 图像调整:对所有图像进行统一大小调整(例如640x640像素),确保输入尺寸一致,为模型训练提供标准化的数据。
- 数据增强:应用数据增强技术(如旋转、翻转、裁剪、调整亮度和对比度等),增加数据的多样性,从而提升模型的泛化能力。这可以帮助模型在遇到不同环境和条件下的图像时,仍能保持较好的性能。
- 归一化处理:将图像数据归一化,通常将像素值缩放到[0, 1]之间,以加速模型的收敛速度和提高训练效果。
- 分割数据集:将数据集划分为训练集、验证集和测试集,常见的比例为70%用于训练,20%用于验证,10%用于测试。这样的划分有助于评估模型在未知数据上的表现。
标注格式:
- VOC格式 (XML)
- YOLO格式 (TXT)
yolo_dataset/
│
├── train/
│ ├── images/
│ │ ├── image1.jpg
│ │ ├── image2.jpg
│ │ ├── ...
│ │
│ └── labels/
│ ├── image1.txt
│ ├── image2.txt
│ ├── ...
│
└── test...
└── valid...voc_dataset/
│
├── train/
│ ├───├
│ │ ├── image1.xml
│ │ ├── image2.xml
│ │ ├── ...
│ │
│ └───├
│ ├── image1.jpg
│ ├── image2.jpg
│ ├── ...
│
└── test...
└── valid...
三、模型训练
3.1理论技术
卷积神经网络(CNN)是深度学习领域中一种强大的算法,特别适用于处理图像数据,如狗狗品种检测。CNN通过层层的卷积运算,自动提取图像中的特征,极大地简化了特征工程的过程。这种网络结构通常包括卷积层、激活层、池化层和全连接层,每一层都在不断提炼和增强特征,从而提高模型的分类能力。卷积层负责提取局部特征,激活层则引入非线性特性,使模型能够更好地拟合复杂数据。池化层降低了特征图的维度,减轻了计算负担并防止过拟合,而全连接层则将提取到的特征映射到具体的分类结果上,最终输出每个犬种的预测概率。
CNN的优势在于其特征自动提取能力、局部连接和权重共享的特性,以及良好的泛化能力。特征自动提取使得CNN能够适应不同犬种的独特特征,避免了人工设计特征的复杂性。局部连接和权重共享不仅减少了参数数量,还提高了计算效率,适应了大规模数据集的处理需求。此外,通过数据增强和正则化技术,CNN能够在有限的样本上训练出具有良好泛化能力的模型,有效应对不同环境、光照和角度下的图像变化。这些特性使得CNN在狗狗品种检测中表现出色,成为实现高效、准确识别的理想选择,推动了智能宠物服务和动物保护领域的发展。
在狗狗品种检测中,使用卷积神经网络(CNN)能够有效地训练模型,以识别和分类不同的犬种图像。构建CNN模型时,首先将狗狗的照片作为输入,通过多层卷积、激活和池化操作,模型学习到图像中的关键特征。这些特征可能包括耳型、毛色、体型及其他独特的外观特征,使得模型能够准确地区分各个犬种。例如,德国牧羊犬与边境牧羊犬在体型和毛色上有显著差异,CNN能够通过训练数据捕捉到这些细微差异。
为了提高模型的性能和训练效率,常见的CNN架构,如VGG、ResNet和Inception等,常被用作基础模型。这些网络在大规模图像数据集(如ImageNet)上进行了预训练,具备了良好的特征提取能力。通过迁移学习,可以将这些预训练模型的权重迁移到我们的犬种检测任务上,仅需对模型的最后几层进行微调,从而加速训练过程并提升模型的准确性。这种方法不仅节省了时间和计算资源,还能在相对较小的数据集上实现高效的学习,最终实现对不同犬种的高精度识别。
3.2模型训练
开发一个 YOLO 项目涉及多个步骤,包括数据准备、模型构建、训练、推理等。以下是详细的步骤介绍和示例代码:
步骤一:数据准备
- 数据标注:使用标注工具(如 LabelImg)对图像进行标注,标注出狗狗的边界框和对应的类别。
- 数据划分:将标注好的数据集划分为训练集、验证集和测试集。
- 数据预处理:对图像进行预处理,如缩放、归一化等操作。
# 数据加载和预处理示例
import cv2
import numpy as npdef load_image(image_path):image = cv2.imread(image_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)image = cv2.resize(image, (416, 416)) # YOLO 模型输入大小image = image / 255.0 # 归一化return image
步骤二:模型构建
- 构建模型结构:使用 YOLO 架构构建目标检测模型,可以使用现成的 YOLOv3 或 YOLOv4 模型。
- 加载预训练权重:可以使用在大规模数据集上预训练的权重来初始化模型。
- 调整输出层:根据数据集的类别数进行输出层的调整。
# 模型构建示例
import tensorflow as tf
from tensorflow.keras import Model
from tensorflow.keras.layers import Conv2D, Inputdef create_yolo_model(num_classes):input_layer = Input(shape=(416, 416, 3))# 构建 YOLO 模型结构# ...model = Model(inputs=input_layer, outputs=output_layers)return model
步骤三:训练模型
- 定义损失函数:使用 YOLO 损失函数,如交叉熵损失和均方误差损失的组合。
- 编译模型:选择优化器和损失函数,并编译模型。
- 训练模型:使用训练集训练模型。
# 模型训练示例
model.compile(optimizer='adam', loss=custom_yolo_loss)
model.fit(train_images, train_labels, validation_data=(val_images, val_labels), epochs=50, batch_size=32)
步骤四:模型评估和推理
- 模型评估:使用验证集评估模型性能,调整超参数和模型结构。
- 模型推理:使用训练好的模型对新图像进行目标检测。
# 模型推理示例
def detect_objects(image_path, model):image = load_image(image_path)image = np.expand_dims(image, axis=0)detections = model.predict(image)# 处理检测结果# ...
以上是开发 YOLO 项目的一般步骤和示例代码,涵盖了数据准备、模型构建、训练和推理等关键环节。在实际开发中,还需要不断优化模型和调整参数以获得更好的性能。
四、总结
数据集展现了狗狗丰富的多样性。这个数据集数量庞大,为机器学习模型提供了丰富的训练样本,有助于提高模型泛化能力。每个品种的独特特征使得标注和识别具有挑战性,尤其对目标检测模型。数据集中包含一些罕见品种,如藏獒、巴仙吉犬,为研究人员提供更广泛的选择,提高对少见品种的识别能力。此数据集可用于训练图像识别模型和深度学习算法,适用于研究、教育和商业用途,有助于提升狗狗品种识别的准确性和效率。
相关文章:
【宠物狗狗数据集】 犬类品种识别 宠物狗检测 深度学习 目标检测(含数据集)
一、背景意义 随着人们对宠物狗的喜爱日益增加,犬种的多样性也逐渐受到重视。狗狗不仅是家庭的好伴侣,更在多个领域中发挥着重要作用,如导盲、搜救、疗愈等。因此,准确识别和分类各种犬种显得尤为重要。传统的犬种识别方法往往依赖…...
C语言中的数组并非指针:深入理解数组和指针的区别
前言 在C语言中,数组和指针是两个非常重要的概念,它们在很多方面有着紧密的联系,但也存在显著的区别。尽管数组名有时可以像指针那样使用,但它们本质上并不是一回事。理解这些差异对于编写正确和高效的代码至关重要。本文将深入探…...
Topaz Video AI for Mac 视频无损放大软件安装教程【保姆级,操作简单轻松上手】
Mac分享吧 文章目录 Topaz Video AI for Mac 视频无损放大软件 安装完成,软件打开效果一、Topaz Video AI 视频无损放大软件 Mac电脑版——v5.3.5⚠️注意事项:1️⃣:下载软件2️⃣:安装软件,将安装包从左侧拖入右侧文…...
虚函数和纯虚函数是 C++ 中实现多态性的关键概念
虚函数(Virtual Function) 定义:虚函数是在基类中使用 virtual 关键字声明的函数,目的是允许派生类重写该函数。用途:通过虚函数,基类指针或引用可以调用派生类中重写的函数,从而实现动态多态性…...
计算机网络IP地址分类,子网掩码,子网划分复习资料
IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址,它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成,分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…...
LINUX下使用SQLite查看.db数据库文件
目录 1. 安装 SQLite 对于 Debian/Ubuntu 系统: 2.安装完成后操作 打开 SQLite 命令行工具并连接到数据库文件 查看表结构 查询表中的数据 执行其他 SQL 操作 3. 退出 SQLite 命令行工具 4. 使用图形化工具(可选) 总结 在 Linux 环…...
基于uniapp微信小程序的校园二手书交易系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
性能测试中的操作系统参数优化
目录 以下是一些针对性能测试的操作系统优化建议 关闭不必要的服务和程序: 更新系统和驱动程序: 优化电源管理设置: 调整内存配置: 网络配置优化: 磁盘I/O优化: 内核参数调整: 安全软件…...
rabbitmq高级特性(2)TTL、死信/延迟队列、事务与消息分发
目录 1.TTL 1.1.设置消息过期时间 1.2.设置队列过期时间 2.死信队列 2.1.介绍 2.2.演示 3.延迟队列 3.1.模拟实现延迟队列 3.2.延迟队列插件 4.事务与消息分发 4.1.事务 4.2.消息分发 1.TTL 所谓的ttl,就是过期时间。对于rabbitmq,可以设置…...
了解一下,RN中怎么加载 threejs的
在React Native(RN)中加载和使用Three.js,一个流行的3D图形库,通常需要一些额外的步骤,因为Three.js主要是为Web浏览器设计的,而React Native则使用原生的渲染引擎。不过,有一些方法可以在React…...
笔记整理—linux驱动开发部分(1)驱动梗概
驱动可以分为广义上的和狭义上的驱动。广义上的驱动是用于操作硬件的代码,而狭义上的驱动为基于内核系统之上让硬件去被操作的逻辑方法。 linux体系架构: 1.分层思想 :在OS中间还会有许多层。 : 2.驱动的上面是系统调用(API&…...
金融领域中的敏感性分析和期权价值计算相关的操作
代码主要进行了金融领域中的敏感性分析和期权价值计算相关的操作。首先通过一系列方程求解S3和S2的值,然后基于这些值以及给定的参数计算一些中间变量(a1、a2、a3、b1、b2、b3),最后利用多元正态分布函数(mvncdf)和一元正态分布函数(normcdf)计算期权价值C、净现值(NP…...
GraphQL系列 - 第1讲 GraphQL语法入门
目录 一、介绍GraphQL二、GraphQL基本使用方法三、Schema 定义语言 (SDL)3.1 类型定义1)对象类型2)标量类型3)枚举类型4)输入类型5)列表类型6)非空类型7)接口类型8)联合类型 3.2 查询…...
015:地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework安装教程
摘要:本文详细介绍地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework的安装流程。 一、软件介绍 ArcGIS Engine 10.2是由Esri公司开发的一款强大的GIS(地理信息系统)开发平台。该软件基于ArcGIS 10.2 fo…...
Android——显式/隐式Intent
概述 在Android中,Intent是各个组件之间信息通信的桥梁,它用于Android各组件的通信。 Intent 的组成部分 一、显式 Intent 第一种方式 Intent intent new Intent(this, ActFinishActivity.class);startActivity(intent);第二种方式 Intent intent …...
【鸿蒙HarmonyOS实战:通过华为应用市场上架测试版App实现HBuilder X打包的UniApp项目的app转hap教程(邀请码)方式教程详解】
鸿蒙HarmonyOS实战:通过华为应用市场上架测试版App实现HBuilder X打包的UniApp项目的app转hap教程(邀请码)方式详解 在使用uniapp打包的鸿蒙项目的过程中,由于生成的是app文件,而hdc传给鸿蒙HarmonyOS系统需要的是hap文…...
一篇文章入门傅里叶变换
文章目录 傅里叶变换欧拉公式傅里叶变换绕圈记录法质心记录法傅里叶变换公式第一步:旋转的表示第二步:缠绕的表示第三步:质心的表示最终步:整理积分限和系数 参考文献 傅里叶变换 在学习傅里叶变换之前,我们先来了解一…...
基于python的语音识别与蓝牙通信的温控系统
基于python的语音识别与蓝牙通信的温控系统毕设项目 大家好,我是陈辰学长,一名在 Java 圈辛勤劳作的码农。今日,要和大家分享的是一款基于python的语音识别与蓝牙通信的温控系统毕设项目。项目源码以及部署相关事宜,请联系陈辰学…...
Pandas Series学习
1.Series简介 Pandas Series类似表格的列(column),类似于一维数组,可以保存任何数据类型,具有标签(索引),使得数据在处理分析时更具灵活性。Series数据结构是非常有用的,…...
为什么要探索太空?这对我们有什么好处?
几个世纪以来,人类一直着迷于宇宙的奥秘,这驱使我们冒险离开地球,去探索太阳系之外的未知环境。在当今世界,我们为什么要进行太空探索之旅这个问题,远不止出于单纯的好奇。 归根结底,太空探索是一种必要之…...
uniapp开发【选择地址-省市区功能】,直接套用即可
一、效果展示 二、代码 <template><view><view class="user_info"><view class="item"...
3个模型的交互式多模型IMM,基于EKF的目标跟踪实例(附MATLAB代码)
文章目录 3个模型的IMM源代码运行结果代码介绍总结 3个模型的IMM 代码实现了基于 I M M IMM IMM(Interacting Multiple Model)算法的目标跟踪。它使用三种不同的运动模型(匀速直线运动、左转弯和右转弯)来预测目标的位置&#x…...
利用游戏引擎的优势
大家好,我是小蜗牛。 在当今快速发展的游戏产业中,选择合适的游戏引擎对开发者来说至关重要。Cocos Creator作为一款功能强大且灵活的游戏引擎,为开发者提供了丰富的工具和资源,使他们能够高效地开发出优秀的游戏。本文将探讨如何…...
一致角色的视频且唇形同步中文配音和免费音效添加
现在AI可以免费生成不带水印、不限时长的视频了,并且视频里的角色可以进行唇形同步配音。最重要的是,我还会分享给大家,怎么生成角色一致的动画场景,怎么使用场景图片生成完整的视频,并且我还会介绍一款,我…...
Spring学习笔记_14——@Qualifier
Qualifier 1. 解释 当Spring中存在多个类型相同但是名称不同的Bean时,使用Autowired注解向类的构造方法、方法、参数、字段中注入Bean对象时,首先会根据Bean的类型注入,如果存在多个类型相同的Bean时,会根据Bean的名称注入&…...
高级SQL技巧详解与实例
在数据处理与分析领域,高级SQL技巧是提升效率与准确性的关键。本文将结合参考资料,对高级SQL技巧进行系统的整理与解读,并通过实例展示其应用。 一、窗口函数 窗口函数是一种在SQL中执行复杂计算的强大工具,它们允许用户在一组行…...
实现PC端和安卓手机的局域网内文件共享
文章目录 一、准备工作1.1 笔记本(Win10)的设置(主要可分为3大部分:更改共享设置、创建本地用户、选择共享文件)1.2 台式机(Win7)的设置 二、实现共享文件夹的访问2.1 笔记本(Win10)访问台式机(Win7)2.2 台式机(Win7)访问笔记本(Win10)(一定要…...
腾讯云云开发深度解读:云数据库、云模板与AI生成引用的魅力
腾讯云云开发平台为开发者和潜在用户提供了丰富的解决方案,其中的云数据库、云模板和AI生成引用等产品尤为引人注目。这篇文件是我个人对这些产品的能力、应用场景、业务价值、技术原理的介绍和深度解读,最后也简单写一下新手如何进行相关产品的初步使用…...
预览 PDF 文档
引言 在现代Web应用中,文件预览功能是非常常见的需求之一。特别是在企业级应用中,用户经常需要查看各种类型的文件,如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…...
Chromium 在WebContents中添加自定义数据c++
为了能在WebContents中添加自定义数据先看下几个关键类的介绍。 一、WebContents 介绍: WebContents是content模块核心,是呈现 Web 内容(通常为 HTML)位于矩形区域中。 最直观的是一个浏览器标签对应一个WebContents,…...
柳州专业网站建设加盟/西安优化外
骨架屏 最近在项目不时有用到骨架屏的需求,所以抽时间对骨架屏的方案作了一下调研,骨架屏的实践已经有很多了,也有很多人对自己的方案作了介绍.在这里按照个人的理解做了一个汇总和分类,分享给大家. 关于骨架屏(简介) 骨架屏就是在页面数据尚未加载前先给用户展示出页面的大…...
做网站就/seo点击软件
这里主要总结下,在 Python 代码脚本里,涉及到调用 Shell 脚本、终端命令行、其它 Python 脚本的场景. 1. 方法1 - os.system() os.system() - 只返回状态码,执行结果会输出到stdout,即输出到终端. 仅在 Linux 中有效. 用法&#x…...
做网站和做网页有什么区别/宁波seo托管公司
使用 get() 来处理返回的对象以得到基础的数组...
自动生成图片的网站/谷歌是如何运营的
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的ÿ…...
wordpress theme demo bar/网站维护一般都是维护什么
1JMS与MQ 1.1JMSJMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开…...
有哪些做投行网站/quark搜索引擎入口
导读:谈到锁住,大家应该都熟悉,有朋友问台式电脑键盘锁是哪个键,还有人问台式电脑键盘被锁住按什么键恢复,这到底是咋回事?事实上台式电脑键盘被锁住按什么键恢复呢,以下是小编为你精心整理的台…...