1. 为什么选择PaddleDetection作为目标检测入门框架目标检测这个方向,很多人第一次接触时都会卡在环境搭建上。不是缺这个库,就是版本对不上,再不然就是CUDA和显卡驱动打架。我自己在带新人和做项目交付的过程中,见过太多人还没开始跑模型就被环境劝退。PaddleDetection作为国产深度学习框架下的目标检测工具库,在环境搭建这块其实已经做得相当友好了,但前提是你得知道正确的打开方式。这篇文章要聊的就是PaddleDetection从零开始的环境搭建和测试全流程。我会把整个过程中涉及的版本选择逻辑、依赖安装顺序、常见报错排查都拆开讲清楚。适合谁看?如果你是刚接触目标检测的学生、需要快速验证算法效果的工程师,或者想找一个开箱即用的检测框架做二次开发的从业者,这篇内容可以直接照着操作。我自己的测试环境是一台带独立显卡的Linux工作站,Windows平台的操作我也会在关键步骤里补充说明。先说清楚PaddleDetection到底是什么。它是基于PaddlePaddle深度学习框架构建的目标检测开发套件,里面集成了PP-YOLOE、YOLOv3、Faster R-CNN、SOLOv2等主流检测和实例分割模型,提供了从数据准备、模型训练、评估到部署的完整链路。你可以把它理解成一个目标检测的“工具箱”,不需要自己从零写网络结构,改改配置文件就能跑起来。但工具越集成,环境依赖就越讲究,这也是为什么环境搭建值得单独拿出来讲。2. 环境搭建前的整体规划与版本选型2.1 先搞清楚版本对应关系再动手很多人装环境的第一步就是pip install,这是最大的坑。PaddleDetection对PaddlePaddle的版本有明确要求,而PaddlePaddle又对Python版本、CUDA版本、cuDNN版本有对应关系。如果你跳过这一步直接装,大概率会遇到“版本不兼容”或者“编译失败”的问题。我整理了一个当前主流搭配的版本对照表,基于PaddleDetection 2.6版本和PaddlePaddle 2.5的稳定组合:组件推荐版本说明操作系统Ubuntu 20.04 / Windows 10+Linux下编译依赖更顺畅Python3.8 - 3.103.11以上部分依赖包兼容性差PaddlePaddle2.5.xGPU版需匹配CUDACUDA11.2 / 11.6 / 11.7根据显卡驱动选择cuDNN8.2以上需与CUDA版本对应PaddleDetection2.6release/2.6分支显卡NVIDIA系列显存建议8G以上这个表怎么用?先看你的显卡驱动支持哪个CUDA版本,然后反推PaddlePaddle的GPU版本,最后确定Python版本。比如你的驱动支持CUDA 11.7,那就装paddlepaddle-gpu==2.5.1.post117,Python用3.9或3.10都行。注意:不要盲目追求最新版本。PaddleDetection的release分支和PaddlePaddle的版本是绑定测试过的,用最新版反而容易踩到未修复的兼容性问题。2.2 虚拟环境到底用conda还是venv这个问题我被问过无数次。我的建议是:如果你后续要装大量科学计算相关的包,用conda;如果只是跑PaddleDetection,venv足够且更轻量。conda的优势在于它能管理非Python依赖,比如某些底层库。但conda的源在国内访问有时候不稳定,配置镜像源又容易出各种小问题。venv是Python自带的,创建速度快,和pip配合默契,对于PaddleDetection这种纯Python生态的项目来说完全够用。我自己的习惯是用conda创建一个干净的Python环境,然后用pip装所有包。这样既隔离了环境,又避免了conda install和pip install混用导致的依赖冲突。具体命令后面实操部分会给出。2.3 GPU版还是CPU版,怎么选这个问题取决于你的实际需求。如果只是跑通流程、验证配置文件是否正确,CPU版完全够用,安装也简单得多。但如果你要训练模型或者做推理性能测试,GPU版是必须的。GPU版安装的复杂度主要在于CUDA和cuDNN的配置。如果你用的是云服务器或者已经预装了CUDA的机器,这一步可以跳过。如果是本地机器,需要先确认显卡驱动版本,再安装对应版本的CUDA Toolkit和cuDNN。这里有个经验:CUDA Toolkit的版本可以比驱动支持的版本低,但不能高。比如驱动支持CUDA 11.7,你可以装11.6或11.2,但不能装12.0。3. 手把手实操:从零搭建PaddleDetection环境3.1 创建并激活虚拟环境先确认你的Python版本。在终端输入:python --version如果版本在3.8到3.10之间,可以直接用。否则建议先安装一个合适版本的Python。用conda创建环境:conda create -n paddledet python=3.9 -y conda activate paddledet用venv创建环境:python -m venv paddledet_env source paddledet_env/bin/activate # Linux # paddledet_env\Scripts\activate # Windows激活后,终端提示符前面会出现环境名称,说明你已经在这个隔离环境里了。这一步很重要,后面所有安装都在这个环境里进行,不会污染系统环境。3.2 安装PaddlePaddle这是整个流程里最关键的一步。先确定你要装GPU版还是CPU版。CPU版安装:pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simpleGPU版安装需要指定CUDA版本对应的包。以CUDA 11.7为例:pip install paddlepaddle-gpu==2.5.1.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.htmlWindows用户把链接里的linux换成windows即可。安装完成后,验证是否成功:python -c "import paddle; paddle.utils.run_check()"如果输出“PaddlePaddle is installed successfully”,说明安装成功。如果报错,大概率是CUDA版本不匹配或者缺少某个系统库。实操心得:GPU版安装时,pip的下载速度可能很慢。可以加上国内镜像源加速,但注意-f参数指定的链接不要改,那是官方编译好的wheel包地址。3.3 获取PaddleDetection源码不要用pip install paddledetection这种方式,官方推荐的是从GitHub克隆源码。因为PaddleDetection的很多功能依赖配置文件,源码方式更方便修改和调试。git clone https://github.com/PaddlePaddle/PaddleDetection.git cd PaddleDetection git checkout release/2.6如果你访问GitHub速度慢,可以使用Gitee的镜像仓库,地址在PaddleDetection的README里有说明。克隆完成后,进入目录安装依赖:pip install -r requirements.txt这个requirements.txt里包含了pycocotools、numpy、opencv-python等基础依赖。安装过程中如果遇到pycocotools编译失败,通常是缺少Cython或者gcc版本太低。可以先装Cython再重试:pip install Cython pip install -r requirements.txt3.4 编译安装PaddleDetection依赖装完后,还需要把PaddleDetection本身安装到Python环境中:python setup.py install这一步会把ppdet等模块注册到site-packages里,后续才能通过import ppdet来调用。安装完成后,可以跑一个简单的验证:python -c "import ppdet; print(ppdet.__version__)"如果输出版本号,说明安装成功。3.5 验证安装:跑通一个官方DemoPaddleDetection提供了很多预训练模型,我们可以直接用infer.py脚本做推理测试。先下载一个轻量级的模型,比如PP-YOLOE-s:python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml \ -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams \ --infer_img=demo/000000014439.jpg这个命令会下载模型权重,对demo图片做推理,并在output目录下生成带检测框的结果图。如果能看到图片上画出了人和物体的框,说明整个环境完全跑通了。注意:第一次运行会自动下载权重文件,如果网络不稳定可能会失败。可以手动下载权重放到指定目录,或者用其他方式获取。4. 环境搭建中的常见问题与排查技巧4.1 版本冲突类问题这是最高频的问题。典型报错是“ImportError: cannot import name xxx”或者“AttributeError: module has no attribute”。根本原因通常是PaddlePaddle和PaddleDetection版本不匹配。排查方法:先确认PaddlePaddle版本,再确认PaddleDetection分支。两者必须对应。比如PaddleDetection release/2.6对应PaddlePaddle 2.5,release/2.5对应PaddlePaddle 2.4。如果你混用了,就会出现各种奇怪的导入错误。另一个常见的是numpy版本问题。PaddlePaddle 2.5要求numpy版本在1.20以上,但某些旧版opencv又要求numpy低于1.24。这时候需要手动指定一个兼容版本:pip install numpy==1.23.54.2 CUDA和cuDNN相关报错GPU版安装后,运行时报“CUDA error: no kernel image is available for execution on the device”,这通常是CUDA版本和显卡算力不匹配。比如你的显卡是较新的架构,但装的CUDA版本太旧,不支持该算力。解决方法是查看显卡算力,然后选择支持该算力的CUDA版本。可以用nvidia-smi查看驱动支持的CUDA版本,用paddle.device.cuda.get_device_capability()查看当前PaddlePaddle识别到的算力。另一个报错是“libcudnn.so not found”,说明cuDNN没装或者环境变量没配好。cuDNN需要手动下载并放到CUDA目录下,然后把路径加入LD_LIBRARY_PATH。4.3 依赖包安装失败pycocotools安装失败是最常见的。在Windows上尤其容易出问题,因为需要C++编译环境。解决方案有两个:一是安装Visual Studio Build Tools,二是直接用预编译的wheel包。opencv-python安装后如果import报错,可能是缺少系统库。在Ubuntu上可以装:sudo apt-get install libgl1-mipmap-dev在Windows上通常是缺少Visual C++ Redistributable,装一下最新的运行库即可。4.4 推理速度慢或显存不足如果跑Demo时发现推理速度很慢,先确认是否真的在用GPU。可以在Python里执行:import paddle print(paddle.device.get_device())如果输出“cpu”而不是“gpu:0”,说明PaddlePaddle装的是CPU版,或者CUDA环境没配好。显存不足的报错通常是“Out of memory”。解决方法包括:减小batch size、使用更小的模型、开启混合精度训练。在推理时,可以通过设置--run_mode=paddle来使用静态图模式,速度会更快。5. 环境验证后的下一步:自定义数据与模型微调5.1 用自己数据跑通训练流程环境搭好之后,下一步通常是用自己的数据做微调。PaddleDetection支持COCO和VOC两种数据格式。你需要把标注数据转成对应的格式,然后修改配置文件里的数据集路径和类别数。配置文件在configs目录下,每个模型都有对应的yml文件。关键修改点包括:num_classes改成你的类别数、dataset路径指向你的数据、snapshot_epoch设置保存间隔。改完后用train.py启动训练:python tools/train.py -c configs/your_config.yml训练过程中可以通过VisualDL查看loss曲线:visualdl --logdir output/5.2 模型导出与推理部署训练完成后,需要把模型导出成推理格式:python tools/export_model.py -c configs/your_config.yml \ -o weights=output/your_model/best_model.pdparams \ --output_dir=inference_model导出的模型可以用deploy目录下的python脚本做推理,也可以转成其他格式部署到不同平台。PaddleDetection支持导出为Paddle Inference、ONNX等格式,方便集成到C++或移动端应用中。实操心得:导出模型时注意设置--output_dir,不要覆盖原始训练权重。另外,导出后的模型输入尺寸是固定的,如果推理时图片尺寸变化较大,建议在配置里设置合适的resize策略。5.3 几个提升效率的小技巧第一个技巧是使用缓存。PaddleDetection在训练时会把数据缓存到内存或磁盘,设置cache=True可以显著加快第二个epoch之后的速度。但注意缓存会占用大量内存,数据集大时慎用。第二个技巧是混合精度训练。在配置文件中开启use_fp16: True,可以在保持精度的同时减少显存占用、提升训练速度。但某些模型对混合精度敏感,需要测试后再用。第三个技巧是分布式训练。如果你有多张显卡,可以用launch脚本启动多卡训练:python -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/your_config.yml多卡训练时注意学习率要相应调整,通常是单卡的倍数。6. 关于环境搭建这件事的个人体会环境搭建这件事,说到底是“一次痛苦,长期受益”的投入。我见过太多人为了省事直接用别人的docker镜像,结果遇到问题完全不知道怎么排查。自己从头搭一遍,虽然会踩坑,但每个坑踩过之后你就知道问题出在哪、怎么解决。PaddleDetection的环境搭建在同类框架里已经算比较省心的了,官方文档也相对完整。但文档不会告诉你的是:版本对应关系比什么都重要,虚拟环境隔离是必须的,验证步骤不能跳过。这三点做到了,90%的问题都能避免。另外一个小建议:搭好环境后,把关键的版本信息记录下来,包括Python版本、PaddlePaddle版本、CUDA版本、PaddleDetection分支。下次换机器或者重装时,直接照着这个清单来,能省很多时间。我自己维护了一个环境配置的markdown文件,每次搭新环境就复制一份改改,效率高很多。最后再分享一个排查思路:遇到报错先看报错信息的最后一行,那是真正的错误原因。然后去PaddleDetection的GitHub Issues里搜这个错误关键词,大概率已经有人遇到过并给出了解决方案。如果搜不到,再把完整的报错信息和你的环境版本发出来提问,这样别人才能帮你定位问题。
1. 为什么选择PaddleDetection作为目标检测入门框架目标检测这个方向,很多人第一次接触时都会卡在环境搭建上。不是缺这个库,就是版本对不上,再不然就是CUDA和显卡驱动打架。我自己在带新人和做项目交付的过程中,见过太多人还没开始跑模型就被环境劝退。PaddleDetection作为国产深度学习框架下的目标检测工具库,在环境搭建这块其实已经做得相当友好了,但前提是你得知道正确的打开方式。这篇文章要聊的就是PaddleDetection从零开始的环境搭建和测试全流程。我会把整个过程中涉及的版本选择逻辑、依赖安装顺序、常见报错排查都拆开讲清楚。适合谁看?如果你是刚接触目标检测的学生、需要快速验证算法效果的工程师,或者想找一个开箱即用的检测框架做二次开发的从业者,这篇内容可以直接照着操作。我自己的测试环境是一台带独立显卡的Linux工作站,Windows平台的操作我也会在关键步骤里补充说明。先说清楚PaddleDetection到底是什么。它是基于PaddlePaddle深度学习框架构建的目标检测开发套件,里面集成了PP-YOLOE、YOLOv3、Faster R-CNN、SOLOv2等主流检测和实例分割模型,提供了从数据准备、模型训练、评估到部署的完整链路。你可以把它理解成一个目标检测的“工具箱”,不需要自己从零写网络结构,改改配置文件就能跑起来。但工具越集成,环境依赖就越讲究,这也是为什么环境搭建值得单独拿出来讲。2. 环境搭建前的整体规划与版本选型2.1 先搞清楚版本对应关系再动手很多人装环境的第一步就是pip install,这是最大的坑。PaddleDetection对PaddlePaddle的版本有明确要求,而PaddlePaddle又对Python版本、CUDA版本、cuDNN版本有对应关系。如果你跳过这一步直接装,大概率会遇到“版本不兼容”或者“编译失败”的问题。我整理了一个当前主流搭配的版本对照表,基于PaddleDetection 2.6版本和PaddlePaddle 2.5的稳定组合:组件推荐版本说明操作系统Ubuntu 20.04 / Windows 10+Linux下编译依赖更顺畅Python3.8 - 3.103.11以上部分依赖包兼容性差PaddlePaddle2.5.xGPU版需匹配CUDACUDA11.2 / 11.6 / 11.7根据显卡驱动选择cuDNN8.2以上需与CUDA版本对应PaddleDetection2.6release/2.6分支显卡NVIDIA系列显存建议8G以上这个表怎么用?先看你的显卡驱动支持哪个CUDA版本,然后反推PaddlePaddle的GPU版本,最后确定Python版本。比如你的驱动支持CUDA 11.7,那就装paddlepaddle-gpu==2.5.1.post117,Python用3.9或3.10都行。注意:不要盲目追求最新版本。PaddleDetection的release分支和PaddlePaddle的版本是绑定测试过的,用最新版反而容易踩到未修复的兼容性问题。2.2 虚拟环境到底用conda还是venv这个问题我被问过无数次。我的建议是:如果你后续要装大量科学计算相关的包,用conda;如果只是跑PaddleDetection,venv足够且更轻量。conda的优势在于它能管理非Python依赖,比如某些底层库。但conda的源在国内访问有时候不稳定,配置镜像源又容易出各种小问题。venv是Python自带的,创建速度快,和pip配合默契,对于PaddleDetection这种纯Python生态的项目来说完全够用。我自己的习惯是用conda创建一个干净的Python环境,然后用pip装所有包。这样既隔离了环境,又避免了conda install和pip install混用导致的依赖冲突。具体命令后面实操部分会给出。2.3 GPU版还是CPU版,怎么选这个问题取决于你的实际需求。如果只是跑通流程、验证配置文件是否正确,CPU版完全够用,安装也简单得多。但如果你要训练模型或者做推理性能测试,GPU版是必须的。GPU版安装的复杂度主要在于CUDA和cuDNN的配置。如果你用的是云服务器或者已经预装了CUDA的机器,这一步可以跳过。如果是本地机器,需要先确认显卡驱动版本,再安装对应版本的CUDA Toolkit和cuDNN。这里有个经验:CUDA Toolkit的版本可以比驱动支持的版本低,但不能高。比如驱动支持CUDA 11.7,你可以装11.6或11.2,但不能装12.0。3. 手把手实操:从零搭建PaddleDetection环境3.1 创建并激活虚拟环境先确认你的Python版本。在终端输入:python --version如果版本在3.8到3.10之间,可以直接用。否则建议先安装一个合适版本的Python。用conda创建环境:conda create -n paddledet python=3.9 -y conda activate paddledet用venv创建环境:python -m venv paddledet_env source paddledet_env/bin/activate # Linux # paddledet_env\Scripts\activate # Windows激活后,终端提示符前面会出现环境名称,说明你已经在这个隔离环境里了。这一步很重要,后面所有安装都在这个环境里进行,不会污染系统环境。3.2 安装PaddlePaddle这是整个流程里最关键的一步。先确定你要装GPU版还是CPU版。CPU版安装:pip install paddlepaddle==2.5.1 -i https://mirror.baidu.com/pypi/simpleGPU版安装需要指定CUDA版本对应的包。以CUDA 11.7为例:pip install paddlepaddle-gpu==2.5.1.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.htmlWindows用户把链接里的linux换成windows即可。安装完成后,验证是否成功:python -c "import paddle; paddle.utils.run_check()"如果输出“PaddlePaddle is installed successfully”,说明安装成功。如果报错,大概率是CUDA版本不匹配或者缺少某个系统库。实操心得:GPU版安装时,pip的下载速度可能很慢。可以加上国内镜像源加速,但注意-f参数指定的链接不要改,那是官方编译好的wheel包地址。3.3 获取PaddleDetection源码不要用pip install paddledetection这种方式,官方推荐的是从GitHub克隆源码。因为PaddleDetection的很多功能依赖配置文件,源码方式更方便修改和调试。git clone https://github.com/PaddlePaddle/PaddleDetection.git cd PaddleDetection git checkout release/2.6如果你访问GitHub速度慢,可以使用Gitee的镜像仓库,地址在PaddleDetection的README里有说明。克隆完成后,进入目录安装依赖:pip install -r requirements.txt这个requirements.txt里包含了pycocotools、numpy、opencv-python等基础依赖。安装过程中如果遇到pycocotools编译失败,通常是缺少Cython或者gcc版本太低。可以先装Cython再重试:pip install Cython pip install -r requirements.txt3.4 编译安装PaddleDetection依赖装完后,还需要把PaddleDetection本身安装到Python环境中:python setup.py install这一步会把ppdet等模块注册到site-packages里,后续才能通过import ppdet来调用。安装完成后,可以跑一个简单的验证:python -c "import ppdet; print(ppdet.__version__)"如果输出版本号,说明安装成功。3.5 验证安装:跑通一个官方DemoPaddleDetection提供了很多预训练模型,我们可以直接用infer.py脚本做推理测试。先下载一个轻量级的模型,比如PP-YOLOE-s:python tools/infer.py -c configs/ppyoloe/ppyoloe_crn_s_300e_coco.yml \ -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_300e_coco.pdparams \ --infer_img=demo/000000014439.jpg这个命令会下载模型权重,对demo图片做推理,并在output目录下生成带检测框的结果图。如果能看到图片上画出了人和物体的框,说明整个环境完全跑通了。注意:第一次运行会自动下载权重文件,如果网络不稳定可能会失败。可以手动下载权重放到指定目录,或者用其他方式获取。4. 环境搭建中的常见问题与排查技巧4.1 版本冲突类问题这是最高频的问题。典型报错是“ImportError: cannot import name xxx”或者“AttributeError: module has no attribute”。根本原因通常是PaddlePaddle和PaddleDetection版本不匹配。排查方法:先确认PaddlePaddle版本,再确认PaddleDetection分支。两者必须对应。比如PaddleDetection release/2.6对应PaddlePaddle 2.5,release/2.5对应PaddlePaddle 2.4。如果你混用了,就会出现各种奇怪的导入错误。另一个常见的是numpy版本问题。PaddlePaddle 2.5要求numpy版本在1.20以上,但某些旧版opencv又要求numpy低于1.24。这时候需要手动指定一个兼容版本:pip install numpy==1.23.54.2 CUDA和cuDNN相关报错GPU版安装后,运行时报“CUDA error: no kernel image is available for execution on the device”,这通常是CUDA版本和显卡算力不匹配。比如你的显卡是较新的架构,但装的CUDA版本太旧,不支持该算力。解决方法是查看显卡算力,然后选择支持该算力的CUDA版本。可以用nvidia-smi查看驱动支持的CUDA版本,用paddle.device.cuda.get_device_capability()查看当前PaddlePaddle识别到的算力。另一个报错是“libcudnn.so not found”,说明cuDNN没装或者环境变量没配好。cuDNN需要手动下载并放到CUDA目录下,然后把路径加入LD_LIBRARY_PATH。4.3 依赖包安装失败pycocotools安装失败是最常见的。在Windows上尤其容易出问题,因为需要C++编译环境。解决方案有两个:一是安装Visual Studio Build Tools,二是直接用预编译的wheel包。opencv-python安装后如果import报错,可能是缺少系统库。在Ubuntu上可以装:sudo apt-get install libgl1-mipmap-dev在Windows上通常是缺少Visual C++ Redistributable,装一下最新的运行库即可。4.4 推理速度慢或显存不足如果跑Demo时发现推理速度很慢,先确认是否真的在用GPU。可以在Python里执行:import paddle print(paddle.device.get_device())如果输出“cpu”而不是“gpu:0”,说明PaddlePaddle装的是CPU版,或者CUDA环境没配好。显存不足的报错通常是“Out of memory”。解决方法包括:减小batch size、使用更小的模型、开启混合精度训练。在推理时,可以通过设置--run_mode=paddle来使用静态图模式,速度会更快。5. 环境验证后的下一步:自定义数据与模型微调5.1 用自己数据跑通训练流程环境搭好之后,下一步通常是用自己的数据做微调。PaddleDetection支持COCO和VOC两种数据格式。你需要把标注数据转成对应的格式,然后修改配置文件里的数据集路径和类别数。配置文件在configs目录下,每个模型都有对应的yml文件。关键修改点包括:num_classes改成你的类别数、dataset路径指向你的数据、snapshot_epoch设置保存间隔。改完后用train.py启动训练:python tools/train.py -c configs/your_config.yml训练过程中可以通过VisualDL查看loss曲线:visualdl --logdir output/5.2 模型导出与推理部署训练完成后,需要把模型导出成推理格式:python tools/export_model.py -c configs/your_config.yml \ -o weights=output/your_model/best_model.pdparams \ --output_dir=inference_model导出的模型可以用deploy目录下的python脚本做推理,也可以转成其他格式部署到不同平台。PaddleDetection支持导出为Paddle Inference、ONNX等格式,方便集成到C++或移动端应用中。实操心得:导出模型时注意设置--output_dir,不要覆盖原始训练权重。另外,导出后的模型输入尺寸是固定的,如果推理时图片尺寸变化较大,建议在配置里设置合适的resize策略。5.3 几个提升效率的小技巧第一个技巧是使用缓存。PaddleDetection在训练时会把数据缓存到内存或磁盘,设置cache=True可以显著加快第二个epoch之后的速度。但注意缓存会占用大量内存,数据集大时慎用。第二个技巧是混合精度训练。在配置文件中开启use_fp16: True,可以在保持精度的同时减少显存占用、提升训练速度。但某些模型对混合精度敏感,需要测试后再用。第三个技巧是分布式训练。如果你有多张显卡,可以用launch脚本启动多卡训练:python -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/your_config.yml多卡训练时注意学习率要相应调整,通常是单卡的倍数。6. 关于环境搭建这件事的个人体会环境搭建这件事,说到底是“一次痛苦,长期受益”的投入。我见过太多人为了省事直接用别人的docker镜像,结果遇到问题完全不知道怎么排查。自己从头搭一遍,虽然会踩坑,但每个坑踩过之后你就知道问题出在哪、怎么解决。PaddleDetection的环境搭建在同类框架里已经算比较省心的了,官方文档也相对完整。但文档不会告诉你的是:版本对应关系比什么都重要,虚拟环境隔离是必须的,验证步骤不能跳过。这三点做到了,90%的问题都能避免。另外一个小建议:搭好环境后,把关键的版本信息记录下来,包括Python版本、PaddlePaddle版本、CUDA版本、PaddleDetection分支。下次换机器或者重装时,直接照着这个清单来,能省很多时间。我自己维护了一个环境配置的markdown文件,每次搭新环境就复制一份改改,效率高很多。最后再分享一个排查思路:遇到报错先看报错信息的最后一行,那是真正的错误原因。然后去PaddleDetection的GitHub Issues里搜这个错误关键词,大概率已经有人遇到过并给出了解决方案。如果搜不到,再把完整的报错信息和你的环境版本发出来提问,这样别人才能帮你定位问题。