Ubuntu20.04下BOT_SORT多目标跟踪实战:从环境配置到视频测试全流程
Ubuntu 20.04 实战部署 BOT-SORT从零构建高性能多目标跟踪系统最近在折腾计算机视觉项目发现多目标跟踪MOT真是个既迷人又磨人的领域。说它迷人是因为看着算法在视频流中稳定地锁定每一个目标赋予它们唯一的身份ID这种“秩序感”非常吸引人说它磨人则是复现一个SOTAState-of-the-Art模型光是环境配置就能劝退不少人。BOT-SORTBoT-SORT作为近年来在MOT Challenge上表现亮眼的跟踪器它巧妙融合了检测、运动模型和外观特征ReID在复杂场景下展现了出色的鲁棒性。如果你是一名计算机视觉的初学者或开发者手头有一台搭载Ubuntu 20.04的机器并且渴望亲手搭建一套能跑起来的跟踪系统那么这篇实战指南正是为你准备的。我们将抛开繁琐的理论推导聚焦于从系统环境准备到最终视频测试的每一个可操作步骤目标是让你在终端敲下最后一个命令时能看到跟踪框在视频中流畅地移动。1. 基础环境搭建与依赖管理在开始任何深度学习项目之前一个干净、可控的Python环境是成功的基石。Ubuntu 20.04作为长期支持版本其稳定性和广泛的社区支持使其成为开发者的首选。我们将使用Conda来管理环境它能有效隔离项目依赖避免版本冲突。1.1 创建并激活Conda环境首先确保你的系统已经安装了Anaconda或Miniconda。打开终端我们创建一个名为botsort、Python版本为3.7的独立环境。选择Python 3.7是因为它与后续一些关键库如特定版本的PyTorch的兼容性最好。conda create -n botsort python3.7 -y conda activate botsort执行成功后你的命令行提示符前应该会出现(botsort)字样这表示你已经进入了这个虚拟环境。1.2 安装PyTorch与TorchvisionBOT-SORT的核心依赖于PyTorch框架。安装时最关键的一步是匹配你的CUDA版本。你可以通过nvidia-smi命令查看驱动支持的CUDA最高版本但更准确的是查看PyTorch官方提供的安装命令。假设你的系统CUDA版本是11.1可以使用以下命令安装对应的PyTorch 1.10.1。pip install torch1.10.1cu111 torchvision0.11.2cu111 torchaudio0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html注意请务必将上述命令中的cu111替换为与你CUDA版本匹配的标识如cu102、cu113。安装完成后建议在Python交互环境中执行import torch; print(torch.__version__); print(torch.cuda.is_available())来验证安装是否成功以及GPU是否可用。1.3 获取BOT-SORT源代码接下来我们需要获取BOT-SORT的官方实现代码。推荐使用git克隆这样可以方便地同步后续更新。git clone https://github.com/NirAharon/BoT-SORT.git cd BoT-SORT如果网络条件不佳你也可以手动从GitHub仓库下载ZIP压缩包解压后进入目录即可。1.4 安装核心依赖项进入项目根目录后首先安装requirements.txt中列出的基础依赖。pip install -r requirements.txt随后以开发模式安装项目本身这允许你修改代码后无需重新安装即可生效。python setup.py develop接下来是一些关键的编译依赖和工具库Cython用于加速Python代码。pycocotools用于处理COCO格式数据集。直接pip安装通常比从源码编译更顺利。cython_bbox用于高效计算边界框IoU等操作。faiss-gpuFacebook开源的向量相似度搜索库GPU版本能极大加速ReID特征匹配过程。安装命令如下pip install cython pip install pycocotools pip install cython_bbox pip install faiss-gpu提示安装faiss-gpu时pip会自动寻找与当前CUDA环境兼容的版本。如果遇到问题可以尝试先安装faiss-cpu作为临时替代但推理速度会显著下降。2. 关键组件检测器与ReID模型部署BOT-SORT并非一个端到端的单一模型而是一个跟踪框架。它本身不直接进行目标检测或特征提取而是集成并调度两个核心组件一个检测器提供目标位置和一个重识别模型提供外观特征。在官方实现中默认使用了ByteTrack作为检测器fast-reid作为ReID模型。因此我们需要分别处理它们的依赖。2.1 ByteTrack检测器配置ByteTrack是一个简单而高效的跟踪器其核心创新在于利用低分检测框进行关联减少了漏检。BOT-SORT直接使用了其YOLOX检测部分。幸运的是这部分代码和模型权重已经集成在BOT-SORT项目中。我们只需确保其依赖被正确安装。通常运行BOT-SORT的跟踪脚本会自动调用ByteTrack的相关模块。如果遇到与ByteTrack相关的ImportError你可能需要手动检查并安装其缺失的包。不过在按照上一节安装了所有requirements.txt后这种情况很少见。2.2 fast-reid模型部署fast-reid是一个强大的ReID行人重识别开源库。BOT-SORT使用它来提取目标的外观嵌入特征。安装fast-reid相对复杂一些因为它涉及一些编译步骤。首先克隆fast-reid的仓库建议克隆到BOT-SORT项目目录外避免冲突cd .. git clone https://github.com/JDAI-CV/fast-reid.git cd fast-reid然后按照其官方INSTALL.md文件进行安装。一个典型的安装流程如下pip install -r requirements.txt python setup.py develop安装过程中可能会遇到一些编译错误通常与ninja或torch的版本有关。一个常见的解决方法是确保你的GCC编译器版本合适Ubuntu 20.04默认的gcc-9通常没问题并尝试重新安装torch和torchvision。2.3 预训练模型下载与放置模型权重是让整个系统运转起来的“燃料”。BOT-SORT需要两个预训练模型检测模型来自ByteTrack的Model Zoo例如在MOT17上训练的bytetrack_x_mot17.pth.tar。ReID模型来自BOT-SORT的Model Zoo例如mot17_sbs_S50.pth。你可以在以下位置找到它们ByteTrack模型https://github.com/ifzhang/ByteTrackBOT-SORT ReID模型https://github.com/NirAharon/BoT-SORT下载完成后在BOT-SORT项目根目录下创建一个名为pretrained的文件夹将所有下载的.pth.tar或.pth模型文件放入其中。正确的目录结构应如下所示BoT-SORT/ ├── pretrained/ │ ├── bytetrack_x_mot17.pth.tar │ └── mot17_sbs_S50.pth ├── tools/ ├── yolox/ └── ...3. 数据集准备与标准格式解析为了评估和测试跟踪器的性能我们需要标准格式的数据集。MOT Challenge是多目标跟踪领域最权威的基准测试我们以MOT17和MOT20为例。3.1 下载与解压数据集访问MOT Challenge官方网站https://motchallenge.net的“Downloads”部分找到MOT17和MOT20数据集。通常你需要注册一个免费账户才能下载。下载的文件通常是这样的MOT17.zip(训练和测试数据)MOT20.zip将它们解压到你喜欢的目录例如~/datasets/。解压后的结构应该是这样的~/datasets/ ├── MOT17/ │ ├── train/ │ │ ├── MOT17-02-DPM │ │ ├── MOT17-02-FRCNN │ │ ├── ... │ │ └── MOT17-13-SDP │ └── test/ │ ├── MOT17-01-DPM │ └── ... └── MOT20/ ├── train/ └── test/注意MOT17的每个序列都有三个不同检测器DPM, FRCNN, SDP提供的标注这在训练检测器时有用。但对于跟踪测试我们通常使用images文件夹下的图片以及gt文件夹下的真实标注仅训练集有。3.2 理解数据集结构对于跟踪器来说它只需要图片序列和可选的初始检测结果。BOT-SORT的代码期望的输入路径是指向包含所有序列图片的images文件夹。例如如果你想在MOT17的整个训练集上运行测试这通常用于在验证集上评估你需要将路径指向MOT17/images但这个images文件夹需要你手动创建或通过软链接组织。一个更清晰的做法是为BOT-SORT创建一个统一的数据集符号链接结构。以下脚本可以帮你快速建立# 假设原始数据集在 ~/datasets/MOT17/train/ # 在BOT-SORT项目目录下创建软链接 cd /path/to/BoT-SORT mkdir -p datasets/MOT17/images cd datasets/MOT17/images # 为MOT17训练集的每个序列创建软链接 for seq in ~/datasets/MOT17/train/MOT17-*; do ln -s $seq/img1 $(basename $seq) done这样BoT-SORT/datasets/MOT17/images/目录下就会有MOT17-02-DPM,MOT17-02-FRCNN等文件夹每个里面都是img1的图片。代码会自动遍历这些子文件夹。4. 在标准数据集上运行跟踪与评估环境、模型、数据都已就绪现在让我们点燃引擎看看BOT-SORT在标准基准上的表现。评估分为两步运行跟踪器生成结果文件然后将结果格式转换为MOT Challenge官方要求的格式进行评分。4.1 在MOT20测试集上运行首先确保你位于BOT-SORT项目根目录并且Conda环境已激活。运行跟踪脚本前有时需要根据数据集调整配置文件。查看tools/track.py或相应的实验配置文件如yolox/exps/example/mot/yolox_x_mix_mot20_ch.py确认模型路径和数据集配置是否正确。通常通过命令行参数可以覆盖大部分设置。下面是一个在MOT20测试集上运行的典型命令。请务必将/home/extend/zhy/dataset/MOT20替换为你自己的MOT20数据集images文件夹的实际路径。python3 tools/track.py /path/to/your/MOT20/images \ --default-parameters \ --with-reid \ --benchmark MOT20 \ --eval test \ --fp16 \ --fuse \ --save_result参数解析参数说明--default-parameters使用为对应数据集MOT20调优的默认跟踪参数如卡尔曼滤波参数、匹配阈值等。--with-reid启用外观特征ReID关联。这是BOT-SORT相比ByteTrack的主要改进能有效减少ID切换ID Switch。--benchmark MOT20指定数据集基准代码会根据不同的基准调整图像尺寸、处理流程等。--eval test指定在测试集上运行。注意测试集没有真实标注因此不会计算指标只会输出跟踪结果。--fp16使用半精度浮点数Float16进行推理可以显著减少显存占用并提升速度对精度影响很小。--fuse融合卷积层和批归一化层优化模型前向传播速度。--save_result保存可视化的跟踪结果视频和文本结果。运行过程会在终端显示进度。你可能会注意到在MOT20上速度相对较慢如原文提到的1.92 FPS这是因为MOT20场景更拥挤、目标更多且图像分辨率更高。4.2 结果文件与格式转换跟踪完成后结果会保存在YOLOX_outputs/目录下相应的子文件夹中例如yolox_x_mix_mot20_ch/track_results.txt。这个文件的格式是每行代表一个跟踪目标包含frame, id, bb_left, bb_top, bb_width, bb_height, conf, x, y, z然而MOT Challenge官方评估工具要求的是另一种格式每行9个值没有置信度且坐标是bb_left, bb_top, bb_width, bb_height。因此我们需要运行插值脚本进行转换python3 tools/interpolation.py --txt_path /path/to/track_results转换后会在同目录下生成一个名为track_results.txt或类似的文件这个文件就可以提交到MOT Challenge官网进行评估了。4.3 在MOT17上运行与性能对比让我们在MOT17上再跑一次对比一下性能。命令非常相似只需更改路径和benchmark参数python3 tools/track.py /path/to/your/MOT17/images \ --default-parameters \ --with-reid \ --benchmark MOT17 \ --eval test \ --fp16 \ --fuse \ --save_result根据经验在MOT17上使用相同的硬件如RTX 3080速度通常能达到8-10 FPS比MOT20快很多。这主要是因为MOT17的图像分辨率较低场景复杂度也稍弱。运行结束后同样使用interpolation.py脚本转换结果格式。注意如果你想在MOT17的验证集即每个训练序列的后一半上评估以获得量化指标如MOTA, IDF1需要将--eval test改为--eval val并且确保你的数据集路径指向的是训练集序列因为验证集是从训练集划分的。代码会自动处理划分逻辑。5. 实战对本地视频进行多目标跟踪在标准数据集上测试固然重要但最终我们肯定希望将BOT-SORT应用到自己的视频上。项目提供了一个非常方便的demo.py脚本。5.1 运行视频跟踪Demo假设你有一段名为my_video.mp4的视频你可以使用以下命令进行跟踪和可视化python3 tools/demo.py video \ --path /path/to/your/my_video.mp4 \ -f yolox/exps/example/mot/yolox_x_mix_det.py \ -c pretrained/bytetrack_x_mot17.pth.tar \ --with-reid \ --fuse-score \ --fp16 \ --fuse \ --save_result关键参数解释--path: 输入视频的路径。-f: 指定检测模型的配置文件。这里用的是在MOT17混合数据集上训练的YOLOX-X配置。-c: 指定检测模型的权重文件路径。--with-reid: 同样启用ReID特征关联。--fuse-score: 在检测阶段融合分类置信度和框的IoU分数得到更可靠的检测分数。--save_result: 保存带有跟踪框和ID的可视化视频以及跟踪结果的文本文件。5.2 处理常见警告与优化在运行过程中你可能会在终端看到类似这样的警告[WARNING] Not enough matches for camera motion estimation.这个警告来自于BOT-SORT的相机运动补偿CMC模块。该模块试图通过特征点匹配如SIFT或ORB来估计相邻帧间的全局相机运动从而校正卡尔曼滤波器的预测。当视频帧间特征点匹配对太少例如场景纹理单一、目标运动过快导致模糊时这个模块就会失效并发出警告。这通常不会导致程序崩溃跟踪会退化为不使用CMC的模式在静态摄像头或相机运动不大的场景下影响有限。如果你确定你的视频来自固定摄像头可以在命令中添加--cmc-method none来直接禁用CMC模块从而消除警告并略微提升速度。5.3 结果分析与可视化命令执行完毕后你会在YOLOX_outputs/下的对应文件夹中找到track_results.txt: 文本格式的跟踪结果。my_video.mp4或类似名称绘制了跟踪框和ID的输出视频。打开输出视频观察跟踪效果。你可以关注以下几个点ID切换ID Switch同一个目标在不同帧是否保持了相同的ID在遮挡严重或快速运动时ID切换是常见问题。轨迹稳定性跟踪框是否抖动BOT-SORT的卡尔曼滤波应该能提供平滑的轨迹。漏检与误检是否有明显目标未被检出漏检是否有背景区域被误认为目标误检这主要取决于底层检测器YOLOX的性能。6. 性能调优与高级技巧让系统跑起来只是第一步如何让它跑得更好、更快才是进阶之路。6.1 速度优化策略如果你对实时性有要求例如25 FPS可以尝试以下方法使用更轻量的检测模型YOLOX提供了多种尺寸的模型从巨大的YOLOX-X到微型的YOLOX-Nano。你可以尝试使用yolox_s_mix_det.py配合bytetrack_s_mot17.pth.tar权重速度会有显著提升当然精度也会有所牺牲。python3 tools/demo.py video ... -f yolox/exps/example/mot/yolox_s_mix_det.py -c pretrained/bytetrack_s_mot17.pth.tar ...调整输入图像尺寸在配置文件中如yolox/exps/example/mot/yolox_x_mix_det.py找到input_size参数。将其从(800, 1440)MOT17默认或(896, 1600)MOT20默认改小例如(640, 640)可以极大加速推理但同样会影响小目标的检测精度。禁用非核心功能在确定不需要时可以尝试禁用--fp16如果你的GPU对半精度支持不好反而会慢或--fuse但通常这两个是加速选项。对于静态场景使用--cmc-method none也能省去一些计算。6.2 精度提升方法如果你的场景ID切换严重可以调整关联阈值运动关联阈值match_thresh在track.py或对应的实验配置文件中提高这个值如从0.8到0.9会让运动关联更严格可能减少误关联但也可能增加轨迹断裂。外观关联阈值match_threshfor ReID同样调整外观特征的匹配阈值。BOT-SORT中外观关联是二次匹配调整其阈值对最终结果的影响需要实验权衡。ReID模型选择BOT-SORT的Model Zoo提供了不同数据集上训练的ReID模型。如果你的场景与MOT17街道监控差异很大尝试使用在其他数据集如MSMT17上训练的ReID模型或者用自己的数据微调fast-reid模型可能会带来惊喜。6.3 自定义数据集训练与微调终极的优化是为你的特定场景训练检测器和ReID模型。训练检测器YOLOX参考ByteTrack或YOLOX官方仓库的教程将自己的数据转换为COCO格式然后进行训练。这将使检测器对你的目标类别不一定是行人和场景光照、角度有最好的适应性。训练ReID模型fast-reid在fast-reid框架下你需要准备一个行人重识别格式的数据集每个行人ID一个文件夹包含多张图片。用自己的数据训练或微调ReID模型能显著提升外观特征的判别能力从而在遮挡后重识别更准确。这个过程需要大量的数据、计算资源和时间但对于工业级应用来说往往是必经之路。当你完成了自定义模型的训练只需在运行命令中替换-c和--with-reid所指向的模型路径即可。整个流程走下来从环境配置到视频测试你会发现部署一个前沿的多目标跟踪系统并没有想象中那么遥不可及。关键在于耐心地解决每一个依赖问题理解每个步骤的作用然后大胆地用自己的视频去测试和调整。我最初在调试CMC模块警告和ReID模型匹配时也花了不少时间但看到算法最终在自家拍摄的视频上稳定跟踪多个目标时那种成就感是完全值得的。如果遇到速度瓶颈不妨从换用轻量模型和减小输入尺寸开始如果跟踪不准多看看是检测的问题还是关联的问题对症下药。

相关新闻

【实战指南】解决pyodbc 5.2与SQLServer连接时的ODBC驱动程序管理器错误

【实战指南】解决pyodbc 5.2与SQLServer连接时的ODBC驱动程序管理器错误

1. 问题重现:那个让人头疼的“未发现数据源名称”错误 最近在项目里把 pyodbc 升级到 5.2 版本后,一个之前跑得好好的连接 SQL Server 数据库的脚本突然就罢工了,抛出了一个让我愣了好几秒的错误。控制台里赫然写着:[IM002] [Micr…

2026/7/6 8:23:23 阅读更多 →
NSGA-II算法实战:从理论到多目标优化问题求解

NSGA-II算法实战:从理论到多目标优化问题求解

1. 从“既要又要”说起:多目标优化到底在解决什么问题? 我们做项目、搞设计,甚至日常买东西,经常会遇到“既要又要”的难题。比如买车,你既想要动力强、加速快,又希望油耗低、保养便宜;比如设计…

2026/5/17 7:52:05 阅读更多 →
UE5 NDisplay 单主机配置与打包实战指南

UE5 NDisplay 单主机配置与打包实战指南

1. 为什么选择单主机NDisplay方案? 如果你正在用虚幻引擎5做展览展示、虚拟拍摄,或者需要在一块大屏幕上分区域显示不同的3D内容,那你肯定听说过NDisplay。官方文档和很多教程一上来就讲多台电脑联网的集群渲染,配置那个SwitchBoa…

2026/5/17 12:31:52 阅读更多 →

最新新闻

超棒!无需网络的离线地图应用 Organic Maps,2025 年安装量达 600 万!

超棒!无需网络的离线地图应用 Organic Maps,2025 年安装量达 600 万!

Organic Maps:隐私保护离线地图应用Organic Maps 是注重隐私保护的离线地图与 GPS 应用,适用于徒步、骑行和驾车场景。它免费、无广告、不追踪,由开源社区及创建 MapsWithMe/Maps.Me 应用的同一批开发者打造,数据源自 OpenStreetM…

2026/7/6 9:08:13 阅读更多 →
基于Go抓包+Python CNN的本地化异常流量检测工具(含GUI界面与预训练模型)

基于Go抓包+Python CNN的本地化异常流量检测工具(含GUI界面与预训练模型)

本文还有配套的精品资源,点击获取 简介:直接在本地运行的异常流量识别工具,底层用Go语言实现高效网络数据包捕获和会话解析,支持TCP/UDP/ICMP协议的实时流量提取、窗口计数、主机行为建模和服务识别;上层采用Python…

2026/7/6 9:08:13 阅读更多 →
MATLAB直接跑的7输入RBF回归工具:带数据、代码和结果图,开箱即用

MATLAB直接跑的7输入RBF回归工具:带数据、代码和结果图,开箱即用

本文还有配套的精品资源,点击获取 简介:这个MATLAB RBF神经网络回归工具包专为7个输入特征预测1个连续数值目标设计,不需要额外工具箱,兼容2018b及以上版本。主程序MainRBFR.m一键完成数据加载、RBF网络搭建、训练、测试和预测…

2026/7/6 9:08:13 阅读更多 →
Playwright网络请求拦截与模拟实战:从原理到六大应用场景详解

Playwright网络请求拦截与模拟实战:从原理到六大应用场景详解

1. 项目概述与核心价值 如果你正在用 Playwright 做自动化测试或者数据抓取,有没有遇到过这样的场景:测试一个下单流程,但支付接口总是不稳定,导致你的测试脚本动不动就失败;或者你想测试前端页面在网络超时或服务器返…

2026/7/6 9:04:10 阅读更多 →
PyTorch LSTM 多变量多任务预测:3种损失函数加权策略对比与代码实现

PyTorch LSTM 多变量多任务预测:3种损失函数加权策略对比与代码实现

PyTorch LSTM 多变量多任务预测:3种损失函数加权策略对比与代码实现在时间序列预测领域,多任务学习正逐渐成为提升模型性能的关键技术。当我们需要同时预测多个相关变量时,传统的单任务学习方法往往难以捕捉变量间的复杂关系。本文将深入探讨…

2026/7/6 9:04:10 阅读更多 →
Python Selenium自动化校园网登录:从环境搭建到打包部署全攻略

Python Selenium自动化校园网登录:从环境搭建到打包部署全攻略

1. 项目概述与核心价值 校园网登录,尤其是像深澜Srun这类需要跳转认证页面的系统,对于需要长时间保持网络连接的用户来说,是个不大不小的痛点。手动打开浏览器、输入账号密码、点击登录,这套流程每天重复几次,不仅繁琐…

2026/7/6 9:04:10 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻