{"id":36338,"date":"2025-05-09T09:26:55","date_gmt":"2025-05-09T01:26:55","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/36338.html"},"modified":"2025-05-09T09:26:55","modified_gmt":"2025-05-09T01:26:55","slug":"querydet%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%a4%8d%e7%8e%b0%e8%ae%b0%e5%bd%95","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/36338.html","title":{"rendered":"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55"},"content":{"rendered":"<p>                    conda create -n querydet python&#061;3.7 -y<br \/>\nsource activate querydet<br \/>\npython\u7248\u672c3.7.16<\/p>\n<p>CUDA\u00a0release 11.3, V11.3.58\u00a0 \u6700\u9ad812.5<\/p>\n<p>\u4e0b\u8f7dpytorch1.8.1<\/p>\n<p>conda install pytorch&#061;&#061;1.8.1 torchvision&#061;&#061;0.9.1 torchaudio&#061;&#061;0.8.1 cudatoolkit&#061;11.3 -c pytorch -c conda-forge <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"584\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc28458.png\" width=\"1013\" \/><\/p>\n<p>\u4e00\u76f4\u5361solve<\/p>\n<p>\u4e0b\u8f7dpytorch1.11\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cuda11.3<\/p>\n<p>pip install torch&#061;&#061;1.11.0&#043;cu113 torchvision&#061;&#061;0.12.0&#043;cu113 torchaudio&#061;&#061;0.11.0 &#8211;extra-index-url https:\/\/download.pytorch.org\/whl\/cu113 <\/p>\n<p>\u4e0b\u8f7d\u597dcoco visdrone\u6570\u636e\u96c6<\/p>\n<p>\u9884\u5904\u7406visdrone&#xff1a;python visdrone\/data_prepare.py &#8211;visdrone-root data\/visdrone<\/p>\n<p>\u5b89\u88c5CV2<\/p>\n<p>pip install opencv-python<\/p>\n<p>\u8bad\u7ec3\u62a5\u9519<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/retinanet_train.yaml &#8211;num-gpu 8 OUTPUT_DIR work_dirs\/coco_retinanet<\/p>\n<\/p>\n<p>Traceback (most recent call last): \u00a0 File &#034;train_coco.py&#034;, line 3, in &lt;module&gt; \u00a0 \u00a0 from detectron2.engine import launch \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/engine\/__init__.py&#034;, line 11, in &lt;module&gt; \u00a0 \u00a0 from .hooks import * \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/engine\/hooks.py&#034;, line 18, in &lt;module&gt; \u00a0 \u00a0 from detectron2.evaluation.testing import flatten_results_dict \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/evaluation\/__init__.py&#034;, line 2, in &lt;module&gt; \u00a0 \u00a0 from .cityscapes_evaluation import CityscapesInstanceEvaluator, CityscapesSemSegEvaluator \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/evaluation\/cityscapes_evaluation.py&#034;, line 11, in &lt;module&gt; \u00a0 \u00a0 from detectron2.data import MetadataCatalog \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/data\/__init__.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 from .build import ( \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/data\/build.py&#034;, line 12, in &lt;module&gt; \u00a0 \u00a0 from detectron2.structures import BoxMode \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/structures\/__init__.py&#034;, line 7, in &lt;module&gt; \u00a0 \u00a0 from .masks import BitMasks, PolygonMasks, polygons_to_bitmask \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/structures\/masks.py&#034;, line 9, in &lt;module&gt; \u00a0 \u00a0 from detectron2.layers.roi_align import ROIAlign \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/layers\/__init__.py&#034;, line 3, in &lt;module&gt; \u00a0 \u00a0 from .deform_conv import DeformConv, ModulatedDeformConv \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/site-packages\/detectron2\/layers\/deform_conv.py&#034;, line 11, in &lt;module&gt; \u00a0 \u00a0 from detectron2 import _C ImportError: libcudart.so.10.2: cannot open shared object file: No such file or directory  \u5e94\u8be5\u662fdectron2\u7248\u672c\u4e0d\u5bf9&#xff0c;\u6211\u662fcuda11.3 \u5378\u8f7dpip uninstall detectron2<\/p>\n<p>\u91cd\u65b0\u4e0b\u8f7d\u3010Detectron2\u3011\u8e29\u5751\u5b9e\u8bb0 &#8211; \u77e5\u4e4e git clone https:\/\/github.com\/facebookresearch\/detectron2.git python -m pip install -e detectron2<\/p>\n<p>\u6210\u529f\u5b89\u88c52.0.6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"39\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc4fbc3.png\" width=\"1432\" \/><\/p>\n<p>\u8fd0\u884c\u62a5\u9519<\/p>\n<p>Traceback (most recent call last): \u00a0 File &#034;train_coco.py&#034;, line 3, in &lt;module&gt; \u00a0 \u00a0 from detectron2.engine import launch \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/detectron2\/detectron2\/engine\/__init__.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 from .train_loop import * \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/detectron2\/detectron2\/engine\/train_loop.py&#034;, line 13, in &lt;module&gt; \u00a0 \u00a0 from detectron2.utils.events import EventStorage, get_event_storage \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/detectron2\/detectron2\/utils\/events.py&#034;, line 9, in &lt;module&gt; \u00a0 \u00a0 from functools import cached_property ImportError: cannot import name &#039;cached_property&#039; from &#039;functools&#039; (\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.7\/functools.py)<\/p>\n<\/p>\n<p>\u5e94\u8be5\u662fdectron2\u7248\u672c\u548ccuda torch\u7248\u672c\u4e0d\u5bf9<\/p>\n<table>\n<tbody>\n<tr>\n<td> python -m pip install detectron2 -f \\\\<br \/>\n  https:\/\/dl.fbaipublicfiles.com\/detectron2\/wheels\/cu113\/torch1.10\/index.html\n <\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5378\u8f7dpip uninstall detectron2<\/p>\n<p>\u6309\u7167deepseek\u65b9\u6848<\/p>\n<p>\u8fd8\u662f\u62a5\u9519<\/p>\n<\/p>\n<p>\u91cd\u65b0\u521b\u73af\u5883<\/p>\n<p>\u5b89\u88c5torch1.10 cuda11.3 python3.8\u00a0<\/p>\n<p>conda create -n querydet python&#061;3.7 -y <\/p>\n<p>\u5b89\u88c5torch1.10.1<\/p>\n<\/p>\n<p>conda install pytorch&#061;&#061;1.10.1 torchvision&#061;&#061;0.11.2 torchaudio&#061;&#061;0.10.1 cudatoolkit&#061;11.3 -c pytorch -c conda-forge <\/p>\n<p>\u5361solve<\/p>\n<p>\u5b89\u88c5\u79bb\u7ebf\u53051.10.0<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"119\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc5c7ef.png\" width=\"349\" \/><\/p>\n<p>\u53bb\u670d\u52a1\u5668\u5b89\u88c5<\/p>\n<p>pip install \/home\/liuyadong\/QueryDet-PyTorch\/torch-1.10.0&#043;cu113-cp38-cp38-linux_x86_64.whl<\/p>\n<p>pip install \/home\/liuyadong\/QueryDet-PyTorch\/torchvision-0.11.0&#043;cu113-cp38-cp38-linux_x86_64.whl<\/p>\n<p>\u5b89\u88c5dectron2<\/p>\n<table>\n<tbody>\n<tr>\n<td> python -m pip install detectron2 -f \\\\<br \/>\n  https:\/\/dl.fbaipublicfiles.com\/detectron2\/wheels\/cu113\/torch1.10\/index.html\n <\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u672c\u5730\u4e0b\u8f7d\u597d\u5b89\u88c5<\/p>\n<p>\u5b89\u88c5\u5b8c\u6210<\/p>\n<p>\u5b89\u88c5spconv<\/p>\n<p>pip install spconv-cu113&#061;&#061;2.3.6<\/p>\n<p>\u62a5\u9519Traceback (most recent call last): \u00a0 File &#034;train_coco.py&#034;, line 3, in &lt;module&gt; \u00a0 \u00a0 from detectron2.engine import launch \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/__init__.py&#034;, line 11, in &lt;module&gt; \u00a0 \u00a0 from .hooks import * \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/hooks.py&#034;, line 22, in &lt;module&gt; \u00a0 \u00a0 from detectron2.evaluation.testing import flatten_results_dict \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/evaluation\/__init__.py&#034;, line 2, in &lt;module&gt; \u00a0 \u00a0 from .cityscapes_evaluation import CityscapesInstanceEvaluator, CityscapesSemSegEvaluator \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/evaluation\/cityscapes_evaluation.py&#034;, line 11, in &lt;module&gt; \u00a0 \u00a0 from detectron2.data import MetadataCatalog \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/data\/__init__.py&#034;, line 2, in &lt;module&gt; \u00a0 \u00a0 from . import transforms \u00a0# isort:skip \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/data\/transforms\/__init__.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 from .transform import * \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/data\/transforms\/transform.py&#034;, line 36, in &lt;module&gt; \u00a0 \u00a0 class ExtentTransform(Transform): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/data\/transforms\/transform.py&#034;, line 46, in ExtentTransform \u00a0 \u00a0 def __init__(self, src_rect, output_size, interp&#061;Image.LINEAR, fill&#061;0): AttributeError: module &#039;PIL.Image&#039; has no attribute &#039;LINEAR&#039;<\/p>\n<\/p>\n<p>deepseek\u65b9\u6848<\/p>\n<p>\u964d\u7ea7 Pillow \u5230\u517c\u5bb9\u7248\u672c\u00a0 \u00a0\u5f53\u524d10.4.0<\/p>\n<p># \u5378\u8f7d\u5f53\u524d Pillow pip uninstall pillow -y<\/p>\n<p># \u5b89\u88c5 Pillow 9.0.1&#xff08;\u4ecd\u652f\u6301 Image.LINEAR&#xff09; pip install pillow&#061;&#061;9.0.1<\/p>\n<p>\u62a5\u9519\u6ca1CV2<\/p>\n<p>pip install\u00a0opencv-python<\/p>\n<p>\u62a5\u9519<\/p>\n<p>Command Line Args: Namespace(config_file&#061;&#039;configs\/coco\/retinanet_train.yaml&#039;, dist_url&#061;&#039;tcp:\/\/127.0.0.1:50158&#039;, eval_only&#061;False, machine_rank&#061;0, no_pretrain&#061;False, num_gpus&#061;2, num_machines&#061;1, opts&#061;[&#039;OUTPUT_DIR&#039;, &#039;work_dirs\/coco_retinanet&#039;], resume&#061;False) Traceback (most recent call last): \u00a0 File &#034;train_coco.py&#034;, line 13, in &lt;module&gt; \u00a0 \u00a0 launch( \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/launch.py&#034;, line 67, in launch \u00a0 \u00a0 mp.spawn( \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/multiprocessing\/spawn.py&#034;, line 230, in spawn \u00a0 \u00a0 return start_processes(fn, args, nprocs, join, daemon, start_method&#061;&#039;spawn&#039;) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/multiprocessing\/spawn.py&#034;, line 188, in start_processes \u00a0 \u00a0 while not context.join(): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/multiprocessing\/spawn.py&#034;, line 150, in join \u00a0 \u00a0 raise ProcessRaisedException(msg, error_index, failed_process.pid) torch.multiprocessing.spawn.ProcessRaisedException:\u00a0<\/p>\n<p>&#8212; Process 1 terminated with the following error: Traceback (most recent call last): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/multiprocessing\/spawn.py&#034;, line 59, in _wrap \u00a0 \u00a0 fn(i, *args) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/launch.py&#034;, line 126, in _distributed_worker \u00a0 \u00a0 main_func(*args) \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/train_tools\/coco_train.py&#034;, line 190, in start_train \u00a0 \u00a0 cfg &#061; setup(args) \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/train_tools\/coco_train.py&#034;, line 182, in setup \u00a0 \u00a0 cfg.merge_from_file(args.config_file) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/config\/config.py&#034;, line 46, in merge_from_file \u00a0 \u00a0 loaded_cfg &#061; self.load_yaml_with_base(cfg_filename, allow_unsafe&#061;allow_unsafe) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/fvcore\/common\/config.py&#034;, line 61, in load_yaml_with_base \u00a0 \u00a0 cfg &#061; yaml.safe_load(f) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/__init__.py&#034;, line 125, in safe_load \u00a0 \u00a0 return load(stream, SafeLoader) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/__init__.py&#034;, line 81, in load \u00a0 \u00a0 return loader.get_single_data() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/constructor.py&#034;, line 49, in get_single_data \u00a0 \u00a0 node &#061; self.get_single_node() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/composer.py&#034;, line 36, in get_single_node \u00a0 \u00a0 document &#061; self.compose_document() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/composer.py&#034;, line 55, in compose_document \u00a0 \u00a0 node &#061; self.compose_node(None, None) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/composer.py&#034;, line 84, in compose_node \u00a0 \u00a0 node &#061; self.compose_mapping_node(anchor) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/composer.py&#034;, line 127, in compose_mapping_node \u00a0 \u00a0 while not self.check_event(MappingEndEvent): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/parser.py&#034;, line 98, in check_event \u00a0 \u00a0 self.current_event &#061; self.state() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/yaml\/parser.py&#034;, line 438, in parse_block_mapping_key \u00a0 \u00a0 raise ParserError(&#034;while parsing a block mapping&#034;, self.marks[-1], yaml.parser.ParserError: while parsing a block mapping \u00a0 in &#034;configs\/coco\/retinanet_train.yaml&#034;, line 1, column 1 expected &lt;block end&gt;, but found &#039;&lt;scalar&gt;&#039; \u00a0 in &#034;configs\/coco\/retinanet_train.yaml&#034;, line 2, column 15<\/p>\n<p>\u8bad\u7ec3\u524d\u9762\u6b63\u5e38&#xff0c;\u540e\u9762\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"353\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc66668.png\" width=\"923\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"335\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc82ad2.png\" width=\"909\" \/><\/p>\n<p>\u91c7\u7528deepseek\u65b9\u6848<\/p>\n<p># \u964d\u7ea7 setuptools \u81f3\u517c\u5bb9\u7248\u672c pip install setuptools&#061;&#061;58.0.4<\/p>\n<p>\u5c06GPU\u6570\u91cf\u8bbe\u7f6e\u4e3a1<\/p>\n<p>\u7136\u540e\u8fd0\u884c\u8bad\u7ec3\u6210\u529f<\/p>\n<p>20\u5c0f\u65f6&#8230;&#8230;&#8230;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"360\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc9c677.png\" width=\"1226\" \/><\/p>\n<p>\u5988\u7684\u62a5\u9519RuntimeError: DataLoader worker (pid 1014901) is killed by signal: Segmentation fault.\u00a0<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"239\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dcc7376.png\" width=\"923\" \/>\u4fee\u6539visdrone-dataloader.py<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"119\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dcdde28.png\" width=\"444\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"171\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dce8167.png\" width=\"411\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"188\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59dd003e0.png\" width=\"411\" \/><\/p>\n<p>\u6062\u590d<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/retinanet_train.yaml &#8211;num-gpu 2 &#8211;resume OUTPUT_DIR work_dirs\/coco_retinanet<\/p>\n<p>\u663e\u5b58\u51cf\u534a\u00a0 11\u5c0f\u65f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"450\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59dd0cc3b.png\" width=\"1296\" \/><\/p>\n<p>\u4ece\u68c0\u67e5\u70b9\u8bad\u7ec3<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/retinanet_train.yaml &#8211;num-gpu 2 MODEL.WEIGHTS work_dirs\/coco_retinanet\/model_0064999.pth OUTPUT_DIR work_dirs\/coco_retinanet<\/p>\n<p>\u62a5\u9519<\/p>\n<p>Traceback (most recent call last): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/dataloader.py&#034;, line 990, in _try_get_data \u00a0 \u00a0 data &#061; self._data_queue.get(timeout&#061;timeout) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/multiprocessing\/queues.py&#034;, line 107, in get \u00a0 \u00a0 if not self._poll(timeout): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/multiprocessing\/connection.py&#034;, line 257, in poll \u00a0 \u00a0 return self._poll(timeout) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/multiprocessing\/connection.py&#034;, line 424, in _poll \u00a0 \u00a0 r &#061; wait([self], timeout) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/multiprocessing\/connection.py&#034;, line 931, in wait \u00a0 \u00a0 ready &#061; selector.select(timeout) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/selectors.py&#034;, line 415, in select \u00a0 \u00a0 fd_event_list &#061; self._selector.poll(timeout) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/_utils\/signal_handling.py&#034;, line 66, in handler \u00a0 \u00a0 _error_if_any_worker_fails() RuntimeError: DataLoader worker (pid 2297896) is killed by signal: Aborted.\u00a0<\/p>\n<p>The above exception was the direct cause of the following exception:<\/p>\n<p>Traceback (most recent call last): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 149, in train \u00a0 \u00a0 self.run_step() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/defaults.py&#034;, line 494, in run_step \u00a0 \u00a0 self._trainer.run_step() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 391, in run_step \u00a0 \u00a0 data &#061; next(self._data_loader_iter) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/data\/common.py&#034;, line 234, in __iter__ \u00a0 \u00a0 for d in self.dataset: \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/dataloader.py&#034;, line 521, in __next__ \u00a0 \u00a0 data &#061; self._next_data() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/dataloader.py&#034;, line 1186, in _next_data \u00a0 \u00a0 idx, data &#061; self._get_data() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/dataloader.py&#034;, line 1152, in _get_data \u00a0 \u00a0 success, data &#061; self._try_get_data() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/utils\/data\/dataloader.py&#034;, line 1003, in _try_get_data \u00a0 \u00a0 raise RuntimeError(&#039;DataLoader worker (pid(s) {}) exited unexpectedly&#039;.format(pids_str)) from e RuntimeError: DataLoader worker (pid(s) 2297896) exited unexpectedly<\/p>\n<\/p>\n<p>\u7981\u7528opencv\u7684\u591a\u7ebf\u7a0b\u518d\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"588\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59dd3df37.png\" width=\"1542\" \/> \u00a0\u00a0 \u00a0&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"445\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59dd9cc92.png\" width=\"882\" \/><\/p>\n<p>\u91cd\u65b0\u8bad\u7ec3<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/retinanet_train.yaml &#8211;num-gpu 1\u00a0&#8211;resume OUTPUT_DIR work_dirs\/coco_retinanet<\/p>\n<p>\u68c0\u67e5\u70b9\u5f00\u59cb\u00a0 2\u5f20\u5361<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/retinanet_train.yaml &#8211;num-gpu 2 MODEL.WEIGHTS work_dirs\/coco_retinanet\/model_0064999.pth OUTPUT_DIR work_dirs\/coco_retinanet<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"120\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59ddbbde6.png\" width=\"1234\" \/>10\u5c0f\u65f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"214\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59ddcfc62.png\" width=\"949\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"230\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012653-681d59dde4d76.png\" width=\"1221\" \/><\/p>\n<p>batch\u6539\u4e3a8\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"245\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012654-681d59de101d2.png\" width=\"406\" \/><\/p>\n<p>\u53ea\u89815\u5c0f\u65f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"247\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012654-681d59de1dd6d.png\" width=\"1249\" \/><\/p>\n<p>FloatingPointError: Loss became infinite or NaN at iteration&#061;982!<\/p>\n<p>\u8bad\u7ec3\u7ed3\u675f<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"451\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012654-681d59de3ec4f.png\" width=\"568\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"439\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012654-681d59de5777d.png\" width=\"701\" \/><\/p>\n<\/p>\n<\/p>\n<p>\u8bad\u7ec3\u7b2c\u4e8c\u6761<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/querydet_train.yaml &#8211;num-gpu 2 OUTPUT_DIR work_dirs\/coco_querydet<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1032\" src=\"2025-05-09wzrzmchcrrx.png\" width=\"1920\" \/><\/p>\n<\/p>\n<p>batch\u6539\u62108\u00a0 \u8fd8\u662f\u4e00\u6837<\/p>\n<p>\u8bbe\u7f6e\u5206\u914d32<\/p>\n<p>importosimport os os.environ[&#039;PYTORCH_CUDA_ALLOC_CONF&#039;] &#061; &#039;max_split_size_mb:32&#039;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1032\" src=\"2025-05-094vmnigtjh3a.png\" width=\"1920\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1032\" src=\"2025-05-0900xhtoc2geu.png\" width=\"1374\" \/><\/p>\n<p>\u540c\u65f6\u8bbe\u7f6e\u7ec8\u7aef<\/p>\n<p>export PYTORCH_CUDA_ALLOC_CONF&#061;&#039;max_split_size_mb:32&#039; \u00a0<\/p>\n<p>\u8bbe\u7f6eopencv\u00a0 train_coco.py<\/p>\n<p>\u8bad\u7ec3\u8fd8\u662f\u62a5\u9519<\/p>\n<p>export PYTORCH_CUDA_ALLOC_CONF&#061;&#039;max_split_size_mb:128&#039; \u00a0<\/p>\n<p>\u6e05\u7406<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"335\" src=\"2025-05-0931e0nu3uyni.png\" width=\"672\" \/><\/p>\n<p>batch\u65398\u00a0 \u53ef\u4ee5\u8dd1\u4e86<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"377\" src=\"2025-05-09dg2hpvkpbx4.png\" width=\"1340\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"390\" src=\"2025-05-09ijlzcxkymro.png\" width=\"1313\" \/><\/p>\n<p>\u7ec8\u4e8e\u627e\u5230num_works\u4e86\u00a0 \u4fee\u65396\u5904<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"966\" src=\"2025-05-09awbuhvbktew.png\" width=\"1681\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"791\" src=\"2025-05-09bnil1e1f3k0.png\" width=\"1588\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"890\" src=\"2025-05-09suu0s0kqqtg.png\" width=\"1298\" \/><\/p>\n<p>\u8bad\u7ec3\u8bd5\u8bd5<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/querydet_train.yaml &#8211;num-gpu 2 OUTPUT_DIR work_dirs\/coco_querydet <\/p>\n<p>\u5927\u529f\u544a\u6210<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"409\" src=\"2025-05-09ylivv2ks0sj.png\" width=\"1308\" \/><\/p>\n<p>\u62a5\u9519outofmem<\/p>\n<p>batch\u8bbe\u4e3a8\u00a0 17\u5c0f\u65f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"233\" src=\"2025-05-09kascvaj0dek.png\" width=\"1304\" \/><\/p>\n<p>\u5df2\u6740\u6b7b\u5988\u7684<\/p>\n<p>\u5c06num_works\u8bbe\u4e3a1\u8bd5\u8bd5\u00a0 \u6539detectron2\u7684\u9ed8\u8ba4default<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"162\" src=\"2025-05-091kzxwh1bxtb.png\" width=\"539\" \/><\/p>\n<p>10\u901f\u5ea6\u6700\u5feb<\/p>\n<p>\u6ce8\u91ca\u68c0\u67e5\u70b9\u7f6e\u96f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"204\" src=\"2025-05-09wyj34pvng0e.png\" width=\"872\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"525\" src=\"2025-05-09rjsmef2woin.png\" width=\"1313\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"506\" src=\"2025-05-095boer5ocblm.png\" width=\"1178\" \/><\/p>\n<p>\u8dd1\u5b8c<img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"583\" src=\"2025-05-09f3buk1jwder.png\" width=\"590\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"160\" src=\"2025-05-09d4013p2faqb.png\" width=\"1301\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"366\" src=\"2025-05-09jaxc23c0jxh.png\" width=\"708\" \/><\/p>\n<p>\u8bad\u7ec3\u7b2c\u4e09\u6761\u00a0 batch\u653916 num_works\u65392<\/p>\n<p>python train_visdrone.py &#8211;config-file configs\/visdrone\/retinanet_train.yaml &#8211;num-gpu 2 OUTPUT_DIR work_dirs\/visdrone_retinanet <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"478\" src=\"2025-05-09bxud1xaromb.png\" width=\"562\" \/><\/p>\n<p>\u628avisdrone dataloader num_workers\u6539\u4e86<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"555\" src=\"2025-05-09nnpkm15dcld.png\" width=\"914\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"210\" src=\"2025-05-09lxcz4rlbzoi.png\" width=\"297\" \/>\u8fd8\u662f8<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"329\" src=\"2025-05-09xcmyvmmrnor.png\" width=\"422\" \/>2<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"279\" src=\"2025-05-09hnnkeun2h4h.png\" width=\"1281\" \/><\/p>\n<p>\u8bad\u7ec3\u5b8c\u4e86 \u8bc4\u4f30bash eval_visdrone.sh \/path\/to\/visdrone_infer.json<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"344\" src=\"2025-05-09ebetxsqymu4.png\" width=\"859\" \/><\/p>\n<p>bash eval_visdrone.sh\u00a0work_dirs\/visdrone_retinanet\/visdrone_infer.json<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"82\" src=\"2025-05-09hnbwbwghugm.png\" width=\"550\" \/><\/p>\n<p>\u5b89\u88c5\u8bc4\u4f30\u5de5\u5177pip install -e .<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"455\" src=\"2025-05-09rx4f4dwuvxx.png\" width=\"1067\" \/><\/p>\n<p>\u5148\u8bad\u7ec3\u7b2c4\u6761<\/p>\n<p>python train_visdrone.py &#8211;config-file configs\/visdrone\/querydet_train.pyaml &#8211;num-gpu 2 OUTPUT_DIR work_dirs\/visdrone_querydet <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"251\" src=\"2025-05-09lczjtkaxhgb.png\" width=\"1321\" \/><\/p>\n<p>12\u534a\u5c0f\u65f6<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"239\" src=\"2025-05-09ek550y54lfm.png\" width=\"964\" \/><\/p>\n<p>&#8212; Process 0 terminated with the following error: Traceback (most recent call last): \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/torch\/multiprocessing\/spawn.py&#034;, line 59, in _wrap \u00a0 \u00a0 fn(i, *args) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/launch.py&#034;, line 126, in _distributed_worker \u00a0 \u00a0 main_func(*args) \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/train_tools\/visdrone_train.py&#034;, line 250, in start_train \u00a0 \u00a0 return trainer.train() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/defaults.py&#034;, line 484, in train \u00a0 \u00a0 super().train(self.start_iter, self.max_iter) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 149, in train \u00a0 \u00a0 self.run_step() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/defaults.py&#034;, line 494, in run_step \u00a0 \u00a0 self._trainer.run_step() \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 405, in run_step \u00a0 \u00a0 self._write_metrics(loss_dict, data_time) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 302, in _write_metrics \u00a0 \u00a0 SimpleTrainer.write_metrics(loss_dict, data_time, prefix) \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/detectron2\/engine\/train_loop.py&#034;, line 338, in write_metrics \u00a0 \u00a0 raise FloatingPointError( FloatingPointError: Loss became infinite or NaN at iteration&#061;665! loss_dict &#061; {&#039;loss_cls&#039;: 1.8113356828689575, &#039;loss_box_reg&#039;: 6.629820704460144, &#039;loss_query&#039;: nan}<\/p>\n<\/p>\n<p>\u91cd\u65b0\u8bad\u7ec3\u52694\u5c0f\u65f6\u5df2\u6740\u6b7b\u5988\u7684<\/p>\n<p>num_workers\u6539\u4e3a1\u8bd5\u8bd5<\/p>\n<p>\u4f7f\u7528gemini\u65b9\u6848\u8bd5\u8bd5&#xff0c;\u770b\u770b\u53c2\u6570\u80fd\u4e0d\u80fd\u7ee7\u7eed\u4f7f\u7528<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"492\" src=\"2025-05-09ofcvoybwyju.png\" width=\"793\" \/><\/p>\n<p>\u539f\u4ee3\u7801<\/p>\n<p>def __init__(self, cfg, resume&#061;False, reuse_ckpt&#061;False):<br \/>\n        &#034;&#034;&#034;<br \/>\n        Args:<br \/>\n            cfg (CfgNode):<br \/>\n        &#034;&#034;&#034;<br \/>\n        super(DefaultTrainer, self).__init__()<\/p>\n<p>        logger &#061; logging.getLogger(&#034;detectron2&#034;)<br \/>\n        if not logger.isEnabledFor(logging.INFO):  # setup_logger is not called for d2<br \/>\n            setup_logger()<br \/>\n        cfg &#061; DefaultTrainer.auto_scale_workers(cfg, comm.get_world_size())<\/p>\n<p>        # Assume these objects must be constructed in this order.<br \/>\n        model &#061; self.build_model(cfg)<\/p>\n<p>        ckpt &#061; DetectionCheckpointer(model)<br \/>\n        self.start_iter &#061; 0<br \/>\n        self.start_iter &#061; ckpt.resume_or_load(cfg.MODEL.WEIGHTS, resume&#061;resume).get(&#034;iteration&#034;, -1) &#043; 1<br \/>\n        self.iter &#061;self.start_iter<\/p>\n<p>        optimizer &#061; self.build_optimizer(cfg, model)<br \/>\n        data_loader &#061; self.build_train_loader(cfg)<\/p>\n<p>        # For training, wrap with DDP. But don&#039;t need this for inference.<br \/>\n        if comm.get_world_size() &gt; 1:<br \/>\n            model &#061; DistributedDataParallel(<br \/>\n                model, device_ids&#061;[comm.get_local_rank()], broadcast_buffers&#061;False<br \/>\n            )<br \/>\n        self._trainer &#061; (AMPTrainer if cfg.SOLVER.AMP.ENABLED else SimpleTrainer)(<br \/>\n            model, data_loader, optimizer<br \/>\n        )<\/p>\n<p>        self.scheduler &#061; self.build_lr_scheduler(cfg, optimizer)<br \/>\n        self.checkpointer &#061; DetectionCheckpointer(<br \/>\n            model,<br \/>\n            cfg.OUTPUT_DIR,<br \/>\n            optimizer&#061;optimizer,<br \/>\n            scheduler&#061;self.scheduler,<br \/>\n        )<br \/>\n        self.start_iter &#061; 0<br \/>\n        self.max_iter &#061; cfg.SOLVER.MAX_ITER<br \/>\n        self.cfg &#061; cfg<\/p>\n<p>        self.register_hooks(self.build_hooks()) <\/p>\n<p>\u6539\u540e\u4ee3\u7801<\/p>\n<p>def __init__(self, cfg, resume&#061;False, reuse_ckpt&#061;False): # \u6ce8\u610f\u8fd9\u91cc\u4f20\u5165 resume \u6807\u5fd7<br \/>\n        &#034;&#034;&#034;<br \/>\n        Args:<br \/>\n            cfg (CfgNode):<br \/>\n            resume (bool): Whether to resume from the checkpoint directory.<br \/>\n                           Passed from the command line args.resume.<br \/>\n        &#034;&#034;&#034;<br \/>\n        # super(DefaultTrainer, self).__init__() # \u8c03\u7528\u7236\u7c7b\u7684 __init__ \u4e0d\u662f\u6807\u51c6\u505a\u6cd5&#xff0c;\u901a\u5e38\u76f4\u63a5\u5199\u903b\u8f91<\/p>\n<p>        logger &#061; logging.getLogger(&#034;detectron2&#034;)<br \/>\n        # setup_logger is handled by default_setup, no need to call here usually<br \/>\n        # if not logger.isEnabledFor(logging.INFO):<br \/>\n        #     setup_logger()<br \/>\n        cfg &#061; DefaultTrainer.auto_scale_workers(cfg, comm.get_world_size())<\/p>\n<p>        # 1. \u6784\u5efa\u6a21\u578b<br \/>\n        model &#061; self.build_model(cfg)<br \/>\n        # 2. \u6784\u5efa\u4f18\u5316\u5668<br \/>\n        optimizer &#061; self.build_optimizer(cfg, model)<br \/>\n        # 3. \u6784\u5efa\u6570\u636e\u52a0\u8f7d\u5668<br \/>\n        data_loader &#061; self.build_train_loader(cfg)<\/p>\n<p>        # &#8212; \u5904\u7406\u5206\u5e03\u5f0f\u8bad\u7ec3 &#8212;<br \/>\n        if comm.get_world_size() &gt; 1:<br \/>\n            model &#061; DistributedDataParallel(<br \/>\n                model, device_ids&#061;[comm.get_local_rank()], broadcast_buffers&#061;False<br \/>\n            )<br \/>\n        # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>        # 4. \u521d\u59cb\u5316\u5e95\u5c42\u7684 Trainer (SimpleTrainer or AMPTrainer)<br \/>\n        # \u6ce8\u610f&#xff1a;\u8fd9\u91cc\u5148\u4e0d\u4f20\u9012 optimizer&#xff0c;\u56e0\u4e3a resume_or_load \u53ef\u80fd\u4f1a\u52a0\u8f7d\u4f18\u5316\u5668\u72b6\u6001\u8986\u76d6\u5b83<br \/>\n        self._trainer &#061; (AMPTrainer if cfg.SOLVER.AMP.ENABLED else SimpleTrainer)(<br \/>\n            model, data_loader, optimizer # \u4f18\u5316\u5668\u5728\u8fd9\u91cc\u4f20\u9012\u662f Detectron2 \u7684\u6807\u51c6\u505a\u6cd5<br \/>\n        )<\/p>\n<p>        # 5. \u6784\u5efa\u5b66\u4e60\u7387\u8c03\u5ea6\u5668<br \/>\n        self.scheduler &#061; self.build_lr_scheduler(cfg, optimizer)<\/p>\n<p>        # 6. \u6784\u5efa Checkpointer (\u5173\u8054\u6a21\u578b\u3001\u4f18\u5316\u5668\u3001\u8c03\u5ea6\u5668)<br \/>\n        self.checkpointer &#061; DetectionCheckpointer(<br \/>\n            model,<br \/>\n            cfg.OUTPUT_DIR,<br \/>\n            optimizer&#061;optimizer,<br \/>\n            scheduler&#061;self.scheduler,<br \/>\n        )<\/p>\n<p>        # 7. \u52a0\u8f7d\u68c0\u67e5\u70b9\u6216\u9884\u8bad\u7ec3\u6743\u91cd&#xff0c;\u5e76\u83b7\u53d6\u8d77\u59cb\u8fed\u4ee3\u6b21\u6570<br \/>\n        #    resume_or_load \u4f1a\u5904\u7406 resume&#061;True \u7684\u60c5\u51b5 (\u52a0\u8f7d\u6700\u65b0\u68c0\u67e5\u70b9)<br \/>\n        #    \u548c resume&#061;False \u7684\u60c5\u51b5 (\u52a0\u8f7d cfg.MODEL.WEIGHTS)<br \/>\n        #    \u5b83\u4f1a\u6b63\u786e\u5730\u52a0\u8f7d\u6a21\u578b\u3001\u4f18\u5316\u5668\u3001\u8c03\u5ea6\u5668\u72b6\u6001&#xff08;\u5982\u679c resume&#061;True \u4e14\u68c0\u67e5\u70b9\u5b58\u5728&#xff09;<br \/>\n        checkpoint_data &#061; self.checkpointer.resume_or_load(cfg.MODEL.WEIGHTS, resume&#061;resume)<\/p>\n<p>        # &#8212; \u5904\u7406\u5206\u5e03\u5f0f resume \u65f6\u7684\u540c\u6b65 &#8212;<br \/>\n        if resume and self.checkpointer.has_checkpoint():<br \/>\n             # checkpoint.get(&#034;iteration&#034;, -1) \u8fd4\u56de\u7684\u662f\u521a\u5b8c\u6210\u7684\u8fed\u4ee3&#xff0c;\u6240\u4ee5&#043;1<br \/>\n            self.start_iter &#061; checkpoint_data.get(&#034;iteration&#034;, -1) &#043; 1<br \/>\n        else:<br \/>\n            # \u5982\u679c\u4e0d\u662f resume \u6216\u6ca1\u6709\u68c0\u67e5\u70b9&#xff0c;\u5219\u4ece 0 \u5f00\u59cb<br \/>\n            self.start_iter &#061; 0<br \/>\n        # \u786e\u4fdd\u6240\u6709 rank \u7684 start_iter \u4e00\u81f4<br \/>\n        if comm.get_world_size() &gt; 1:<br \/>\n             self.start_iter &#061; comm.all_gather(self.start_iter)[0]<br \/>\n        # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>        # 8. \u8bbe\u7f6e\u6700\u5927\u8fed\u4ee3\u6b21\u6570<br \/>\n        self.max_iter &#061; cfg.SOLVER.MAX_ITER<br \/>\n        # 9. \u4fdd\u5b58\u914d\u7f6e<br \/>\n        self.cfg &#061; cfg<\/p>\n<p>        # 10. \u6ce8\u518c\u8bad\u7ec3\u94a9\u5b50 (Hooks)<br \/>\n        self.register_hooks(self.build_hooks())<\/p>\n<p>    # &#8212; \u4e0d\u518d\u9700\u8981\u5355\u72ec\u7684 resume_or_load \u65b9\u6cd5&#xff0c;\u903b\u8f91\u5df2\u5408\u5e76\u5230 __init__ &#8212;<br \/>\n    # def resume_or_load(self, resume&#061;True):<br \/>\n    #     &#8230; (\u53ef\u4ee5\u5220\u9664\u8fd9\u4e2a\u65b9\u6cd5) &#8230;<\/p>\n<p>    # &#8212; \u5176\u4ed6\u65b9\u6cd5\u4fdd\u6301\u4e0d\u53d8 &#8212; <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"571\" src=\"2025-05-09c5pt5xu5sfl.png\" width=\"1339\" \/><\/p>\n<p>\u62a5\u9519<img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"240\" src=\"2025-05-09dnwmj1i5nne.png\" width=\"952\" \/><\/p>\n<p>\u91c7\u7eb3\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"545\" src=\"2025-05-09wdepqhty0k1.png\" width=\"1430\" \/><\/p>\n<p>\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"155\" src=\"2025-05-09ned0iuz11qh.png\" width=\"1310\" \/><\/p>\n<p>\u91c7\u7eb3\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"552\" src=\"2025-05-093rwc25pnglh.png\" width=\"1436\" \/><\/p>\n<p>\u80fd\u6b63\u5e38\u8fd0\u884c&#xff0c;\u4f46\u662f\u901f\u5ea6\u5f88\u6162&#xff0c;\u800c\u4e14\u65f6\u95f4\u5f88\u957f&#xff0c;\u6bcf\u6b21\u8f93\u51fa\u4e862\u8f6e&#xff0c;\u4e4b\u524d\u90fd\u53ea\u8f93\u51fa\u4e00\u8f6e\u7684<\/p>\n<p>[04\/27 10:26:09 d2.utils.events]: \u00a0eta: 14:00:17 \u00a0iter: 30019 \u00a0total_loss: 0.8324 \u00a0loss_cls: 0.4716 \u00a0loss_box_reg: 0.3239 \u00a0loss_query: 0.02985 \u00a0time: 2.5858 \u00a0data_time: 0.0037 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:26:09 d2.utils.events]: \u00a0eta: 13:58:30 \u00a0iter: 30019 \u00a0total_loss: 0.8324 \u00a0loss_cls: 0.4716 \u00a0loss_box_reg: 0.3239 \u00a0loss_query: 0.02985 \u00a0time: 2.5831 \u00a0data_time: 0.0037 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:26:58 d2.utils.events]: \u00a0eta: 13:52:30 \u00a0iter: 30039 \u00a0total_loss: 0.4814 \u00a0loss_cls: 0.2563 \u00a0loss_box_reg: 0.1968 \u00a0loss_query: 0.02421 \u00a0time: 2.5382 \u00a0data_time: 0.0034 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:26:58 d2.utils.events]: \u00a0eta: 13:51:39 \u00a0iter: 30039 \u00a0total_loss: 0.4814 \u00a0loss_cls: 0.2563 \u00a0loss_box_reg: 0.1968 \u00a0loss_query: 0.02421 \u00a0time: 2.5372 \u00a0data_time: 0.0034 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:27:49 d2.utils.events]: \u00a0eta: 13:55:01 \u00a0iter: 30059 \u00a0total_loss: 0.5486 \u00a0loss_cls: 0.3166 \u00a0loss_box_reg: 0.2069 \u00a0loss_query: 0.02835 \u00a0time: 2.5330 \u00a0data_time: 0.0035 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:27:49 d2.utils.events]: \u00a0eta: 13:54:52 \u00a0iter: 30059 \u00a0total_loss: 0.5486 \u00a0loss_cls: 0.3166 \u00a0loss_box_reg: 0.2069 \u00a0loss_query: 0.02835 \u00a0time: 2.5324 \u00a0data_time: 0.0035 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:28:39 d2.utils.events]: \u00a0eta: 13:51:56 \u00a0iter: 30079 \u00a0total_loss: 0.4665 \u00a0loss_cls: 0.2634 \u00a0loss_box_reg: 0.1752 \u00a0loss_query: 0.02661 \u00a0time: 2.5200 \u00a0data_time: 0.0034 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:28:39 d2.utils.events]: \u00a0eta: 13:51:40 \u00a0iter: 30079 \u00a0total_loss: 0.4665 \u00a0loss_cls: 0.2634 \u00a0loss_box_reg: 0.1752 \u00a0loss_query: 0.02661 \u00a0time: 2.5194 \u00a0data_time: 0.0034 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:29:29 d2.utils.events]: \u00a0eta: 13:51:06 \u00a0iter: 30099 \u00a0total_loss: 0.4453 \u00a0loss_cls: 0.2529 \u00a0loss_box_reg: 0.1687 \u00a0loss_query: 0.02287 \u00a0time: 2.5201 \u00a0data_time: 0.0036 \u00a0lr: 0.001 \u00a0max_mem: 20413M [04\/27 10:29:29 d2.utils.events]: \u00a0eta: 13:50:50 \u00a0iter: 30099 \u00a0total_loss: 0.4453 \u00a0loss_cls: 0.2529 \u00a0loss_box_reg: 0.1687 \u00a0loss_query: 0.02287 \u00a0time: 2.5196 \u00a0data_time: 0.0036 \u00a0lr: 0.001 \u00a0max_mem: 20413M<\/p>\n<\/p>\n<p>\u628a\u95ee\u9898\u4e22\u7ed9gemini\u00a0 \u4ed6\u8bf4<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"119\" src=\"2025-05-09jlbaq2i3x03.png\" width=\"594\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"136\" src=\"2025-05-09sv20ytqmnlw.png\" width=\"656\" \/><\/p>\n<p>\u628a\u4e4b\u524d\u91c7\u7eb3\u7684\u6ce8\u91ca\u6389&#xff0c;\u7136\u540e\u91c7\u53d6gemini\u65b9\u6848<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"379\" src=\"2025-05-09wrsfseh4u0u.png\" width=\"1099\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"160\" src=\"2025-05-09to1prdrfzgp.png\" width=\"428\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"545\" src=\"2025-05-092dgmp1gtou3.png\" width=\"1432\" \/><\/p>\n<p>\u624b\u52a8\u6ce8\u518c\u540e&#xff0c;\u786e\u5b9e\u4e0d\u4f1a\u8f93\u51fa\u4e24\u6b21\u91cd\u590d\u7684\u4e86&#xff0c;\u4f46\u662f\u901f\u5ea6\u8fd8\u662f\u5f88\u6162<\/p>\n<p>\u91c7\u7528\u4ed6\u4e4b\u524d\u7684\u89e3\u51b3\u65b9\u6848\u8bd5\u8bd5<\/p>\n<p>\u539f\u4ee3\u7801<\/p>\n<p> def __init__(self, cfg, resume&#061;False, reuse_ckpt&#061;False): # \u6ce8\u610f\u8fd9\u91cc\u4f20\u5165 resume \u6807\u5fd7<br \/>\n        &#034;&#034;&#034;<br \/>\n        Args:<br \/>\n            cfg (CfgNode):<br \/>\n            resume (bool): Whether to resume from the checkpoint directory.<br \/>\n                           Passed from the command line args.resume.<br \/>\n        &#034;&#034;&#034;<br \/>\n        # super().__init__(cfg)  # \u6b63\u786e\u8c03\u7528\u7236\u7c7b\u521d\u59cb\u5316\u65b9\u6cd5<\/p>\n<p>        logger &#061; logging.getLogger(&#034;detectron2&#034;)<br \/>\n        # setup_logger is handled by default_setup, no need to call here usually<br \/>\n        # if not logger.isEnabledFor(logging.INFO):<br \/>\n        #     setup_logger()<br \/>\n        cfg &#061; DefaultTrainer.auto_scale_workers(cfg, comm.get_world_size())<\/p>\n<p>        # 1. \u6784\u5efa\u6a21\u578b<br \/>\n        model &#061; self.build_model(cfg)<br \/>\n        # 2. \u6784\u5efa\u4f18\u5316\u5668<br \/>\n        optimizer &#061; self.build_optimizer(cfg, model)<br \/>\n        # 3. \u6784\u5efa\u6570\u636e\u52a0\u8f7d\u5668<br \/>\n        data_loader &#061; self.build_train_loader(cfg)<\/p>\n<p>        # &#8212; \u5904\u7406\u5206\u5e03\u5f0f\u8bad\u7ec3 &#8212;<br \/>\n        if comm.get_world_size() &gt; 1:<br \/>\n            model &#061; DistributedDataParallel(<br \/>\n                model, device_ids&#061;[comm.get_local_rank()], broadcast_buffers&#061;False<br \/>\n            )<br \/>\n        # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>        # 4. \u521d\u59cb\u5316\u5e95\u5c42\u7684 Trainer (SimpleTrainer or AMPTrainer)<br \/>\n        # \u6ce8\u610f&#xff1a;\u8fd9\u91cc\u5148\u4e0d\u4f20\u9012 optimizer&#xff0c;\u56e0\u4e3a resume_or_load \u53ef\u80fd\u4f1a\u52a0\u8f7d\u4f18\u5316\u5668\u72b6\u6001\u8986\u76d6\u5b83<br \/>\n        self._trainer &#061; (AMPTrainer if cfg.SOLVER.AMP.ENABLED else SimpleTrainer)(<br \/>\n            model, data_loader, optimizer # \u4f18\u5316\u5668\u5728\u8fd9\u91cc\u4f20\u9012\u662f Detectron2 \u7684\u6807\u51c6\u505a\u6cd5<br \/>\n        )<\/p>\n<p>        # 5. \u6784\u5efa\u5b66\u4e60\u7387\u8c03\u5ea6\u5668<br \/>\n        self.scheduler &#061; self.build_lr_scheduler(cfg, optimizer)<\/p>\n<p>        # 6. \u6784\u5efa Checkpointer (\u5173\u8054\u6a21\u578b\u3001\u4f18\u5316\u5668\u3001\u8c03\u5ea6\u5668)<br \/>\n        self.checkpointer &#061; DetectionCheckpointer(<br \/>\n            model,<br \/>\n            cfg.OUTPUT_DIR,<br \/>\n            optimizer&#061;optimizer,<br \/>\n            scheduler&#061;self.scheduler,<br \/>\n        )<\/p>\n<p>        # 7. \u52a0\u8f7d\u68c0\u67e5\u70b9\u6216\u9884\u8bad\u7ec3\u6743\u91cd&#xff0c;\u5e76\u83b7\u53d6\u8d77\u59cb\u8fed\u4ee3\u6b21\u6570<br \/>\n        #    resume_or_load \u4f1a\u5904\u7406 resume&#061;True \u7684\u60c5\u51b5 (\u52a0\u8f7d\u6700\u65b0\u68c0\u67e5\u70b9)<br \/>\n        #    \u548c resume&#061;False \u7684\u60c5\u51b5 (\u52a0\u8f7d cfg.MODEL.WEIGHTS)<br \/>\n        #    \u5b83\u4f1a\u6b63\u786e\u5730\u52a0\u8f7d\u6a21\u578b\u3001\u4f18\u5316\u5668\u3001\u8c03\u5ea6\u5668\u72b6\u6001&#xff08;\u5982\u679c resume&#061;True \u4e14\u68c0\u67e5\u70b9\u5b58\u5728&#xff09;<br \/>\n        checkpoint_data &#061; self.checkpointer.resume_or_load(cfg.MODEL.WEIGHTS, resume&#061;resume)<\/p>\n<p>        # &#8212; \u5904\u7406\u5206\u5e03\u5f0f resume \u65f6\u7684\u540c\u6b65 &#8212;<br \/>\n        if resume and self.checkpointer.has_checkpoint():<br \/>\n             # checkpoint.get(&#034;iteration&#034;, -1) \u8fd4\u56de\u7684\u662f\u521a\u5b8c\u6210\u7684\u8fed\u4ee3&#xff0c;\u6240\u4ee5&#043;1<br \/>\n            self.start_iter &#061; checkpoint_data.get(&#034;iteration&#034;, -1) &#043; 1<br \/>\n        else:<br \/>\n            # \u5982\u679c\u4e0d\u662f resume \u6216\u6ca1\u6709\u68c0\u67e5\u70b9&#xff0c;\u5219\u4ece 0 \u5f00\u59cb<br \/>\n            self.start_iter &#061; 0<br \/>\n        # \u786e\u4fdd\u6240\u6709 rank \u7684 start_iter \u4e00\u81f4<br \/>\n        if comm.get_world_size() &gt; 1:<br \/>\n             self.start_iter &#061; comm.all_gather(self.start_iter)[0]<br \/>\n        # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>        # 8. \u8bbe\u7f6e\u6700\u5927\u8fed\u4ee3\u6b21\u6570<br \/>\n        self.max_iter &#061; cfg.SOLVER.MAX_ITER<br \/>\n        # 9. \u4fdd\u5b58\u914d\u7f6e<br \/>\n        self.cfg &#061; cfg<\/p>\n<p>        # &#8212; FIX: Manually initialize the _hooks list &#8212;<br \/>\n        self._hooks &#061; []<br \/>\n        # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>        # 10. \u6ce8\u518c\u8bad\u7ec3\u94a9\u5b50 (Hooks)<br \/>\n        self.register_hooks(self.build_hooks())<\/p>\n<p>    # &#8212; \u4e0d\u518d\u9700\u8981\u5355\u72ec\u7684 resume_or_load \u65b9\u6cd5&#xff0c;\u903b\u8f91\u5df2\u5408\u5e76\u5230 __init__ &#8212;<br \/>\n    # def resume_or_load(self, resume&#061;True):<br \/>\n    #     &#8230; (\u53ef\u4ee5\u5220\u9664\u8fd9\u4e2a\u65b9\u6cd5) &#8230;<\/p>\n<p>    # &#8212; \u5176\u4ed6\u65b9\u6cd5\u4fdd\u6301\u4e0d\u53d8 &#8212; <\/p>\n<p>\u4fee\u6539\u540e<\/p>\n<p>\u8fd0\u884c\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"150\" src=\"2025-05-09sfhunc253u2.png\" width=\"625\" \/><\/p>\n<p>\u7f29\u8fdb\u4e0d\u5bf9<\/p>\n<p>\u624b\u52a8\u4fee\u6539\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"321\" src=\"2025-05-09cgxqy24eqzs.png\" width=\"1243\" \/><\/p>\n<p>\u5e76\u4e14\u628a\u6ce8\u91ca\u6389\u7684\u6062\u590d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"509\" src=\"2025-05-09bo1fgli5atl.png\" width=\"1357\" \/><\/p>\n<p>\u8fd8\u662f\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"145\" src=\"2025-05-0954jp2egpgfz.png\" width=\"974\" \/><\/p>\n<p>\u91c7\u7528gemin\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"651\" src=\"2025-05-09dqnpmvsfatc.png\" width=\"1007\" \/><\/p>\n<p>\u6539\u4e4b\u524d<\/p>\n<p>    trainer &#061; Trainer(cfg, resume&#061;args.resume, reuse_ckpt&#061;args.no_pretrain)<br \/>\n    return trainer.train() <\/p>\n<p>\u6539\u540e<\/p>\n<p>    # 1. \u521b\u5efa Trainer \u5b9e\u4f8b&#xff0c;\u53ea\u4f20\u9012 cfg<br \/>\n    trainer &#061; Trainer(cfg)<\/p>\n<p>    # 2. \u5728\u521b\u5efa\u5b9e\u4f8b\u540e&#xff0c;\u8c03\u7528 resume_or_load \u65b9\u6cd5\u5904\u7406\u6062\u590d\u903b\u8f91<br \/>\n    #    \u5c06\u547d\u4ee4\u884c\u4f20\u5165\u7684 resume \u6807\u5fd7\u7528\u5728\u8fd9\u91cc&#xff01;<br \/>\n    trainer.resume_or_load(resume&#061;args.resume)<\/p>\n<p>    # 3. \u5f00\u59cb\u8bad\u7ec3<br \/>\n    return trainer.train() <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"190\" src=\"2025-05-09ca15ub4a32m.png\" width=\"455\" \/><\/p>\n<p>\u6539\u5b8c\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"293\" src=\"2025-05-09egoicsngqcq.png\" width=\"924\" \/><\/p>\n<\/p>\n<p>\u6062\u590d\u5230\u8bad\u7ec3\u5f88\u6162&#xff0c;\u4f46\u662f\u4e0d\u91cd\u590d\u8f93\u51fa\u90a3\u4e00\u6b65<\/p>\n<p>\u6539\u8bd5\u8bd5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"480\" src=\"2025-05-09oizdnf3uv2v.png\" width=\"708\" \/><\/p>\n<p>\u6062\u590dinit\u4ee3\u7801&#xff0c;\u53d6\u6d88\u6ce8\u91caresumeload<\/p>\n<p>\u4ece0\u5f00\u59cb\u8bad\u7ec3\u8fd8\u62a5\u9519oom<\/p>\n<p>\u8bd5\u4e00\u4e0b<img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"251\" src=\"2025-05-09dd33rcnasae.png\" width=\"749\" \/><\/p>\n<p>\u6539\u4e4b\u524d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"463\" src=\"2025-05-09i1sebjsgh5f.png\" width=\"749\" \/><\/p>\n<p>\u6539\u4e4b\u540e<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"478\" src=\"2025-05-090k3hrup5xas.png\" width=\"788\" \/><\/p>\n<p>\u6539visdrone_train.py\u00a0 \u6539\u4e4b\u524d\u548c\u539f\u539f\u539f\u4ee3\u7801\u4e00\u6837<\/p>\n<p>\u6539\u4e4b\u540e<\/p>\n<p>class Trainer(DefaultTrainer):<br \/>\n    &#034;&#034;&#034;<br \/>\n    \u7528\u4e8e VisDrone \u7684\u81ea\u5b9a\u4e49 Trainer \u7c7b&#xff0c;\u7ee7\u627f\u81ea DefaultTrainer\u3002<br \/>\n    \u91cd\u5199\u4e86\u6570\u636e\u52a0\u8f7d\u548c\u8bc4\u4f30\u65b9\u6cd5\u3002<br \/>\n    &#034;&#034;&#034;<\/p>\n<p>    # __init__ \u65b9\u6cd5\u7ee7\u627f\u81ea DefaultTrainer<br \/>\n    # resume_or_load \u65b9\u6cd5\u7ee7\u627f\u81ea DefaultTrainer<\/p>\n<p>    &#064;classmethod<br \/>\n    def build_evaluator(cls, cfg, dataset_name, output_folder&#061;None):<br \/>\n        &#034;&#034;&#034;<br \/>\n        \u4e3a VisDrone \u6570\u636e\u96c6\u6784\u5efa\u8bc4\u4f30\u5668\u3002<br \/>\n        \u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u4fdd\u5b58\u68c0\u6d4b\u7ed3\u679c\u7684 JSON \u6587\u4ef6\u3002<br \/>\n        \u53ef\u9009\u5730\u6dfb\u52a0 GPU \u65f6\u95f4\u8bc4\u4f30\u5668\u3002<br \/>\n        &#034;&#034;&#034;<br \/>\n        if output_folder is None:<br \/>\n            # \u9ed8\u8ba4\u8f93\u51fa\u6587\u4ef6\u5939\u4f4d\u4e8e\u4e3b\u8f93\u51fa\u76ee\u5f55\u4e0b<br \/>\n            output_folder &#061; os.path.join(cfg.OUTPUT_DIR, &#034;inference&#034;)<br \/>\n            os.makedirs(output_folder, exist_ok&#061;True) # \u786e\u4fdd\u6587\u4ef6\u5939\u5b58\u5728<\/p>\n<p>        evaluator_list &#061; []<br \/>\n        # \u4f7f\u7528 JsonEvaluator \u4fdd\u5b58 COCO JSON \u683c\u5f0f\u7684\u68c0\u6d4b\u7ed3\u679c&#xff0c;\u9002\u7528\u4e8e VisDrone \u7684\u8bc4\u4f30\u811a\u672c<br \/>\n        evaluator_list.append(JsonEvaluator(os.path.join(output_folder, &#039;visdrone_infer.json&#039;))) #<br \/>\n        if cfg.META_INFO.EVAL_GPU_TIME: #<br \/>\n            # \u5982\u679c\u914d\u7f6e\u4e86&#xff0c;\u6dfb\u52a0\u4e00\u4e2a\u8bc4\u4f30\u5668\u6765\u6d4b\u91cf GPU \u63a8\u7406\u65f6\u95f4<br \/>\n            evaluator_list.append(GPUTimeEvaluator(True, &#039;minisecond&#039;)) #<br \/>\n        # \u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u6307\u5b9a\u8bc4\u4f30\u5668\u7684 DatasetEvaluators \u5bf9\u8c61<br \/>\n        return DatasetEvaluators(evaluator_list)<\/p>\n<p>    &#064;classmethod<br \/>\n    def build_train_loader(cls, cfg):<br \/>\n        &#034;&#034;&#034;<br \/>\n        \u4f7f\u7528\u81ea\u5b9a\u4e49\u7684 VisDrone \u52a0\u8f7d\u5668\u6784\u5efa\u7528\u4e8e\u8bad\u7ec3\u7684\u6570\u636e\u52a0\u8f7d\u5668\u3002<br \/>\n        &#034;&#034;&#034;<br \/>\n        # \u4f7f\u7528 VisDrone \u8bad\u7ec3\u6570\u636e\u7684\u7279\u5b9a\u6570\u636e\u52a0\u8f7d\u5668\u5b9e\u73b0<br \/>\n        return build_train_loader(cfg) #<\/p>\n<p>    &#064;classmethod<br \/>\n    def build_test_loader(cls, cfg, dataset_name):<br \/>\n        &#034;&#034;&#034;<br \/>\n        \u4f7f\u7528\u81ea\u5b9a\u4e49\u7684 VisDrone \u52a0\u8f7d\u5668\u6784\u5efa\u7528\u4e8e\u6d4b\u8bd5\/\u9a8c\u8bc1\u7684\u6570\u636e\u52a0\u8f7d\u5668\u3002<br \/>\n        \u6ce8\u610f&#xff1a;\u5982\u679c\u914d\u7f6e\u5df2\u7ecf\u6307\u5b9a\u4e86\u6d4b\u8bd5\u6570\u636e\u96c6\u7684\u8be6\u7ec6\u4fe1\u606f&#xff0c;&#096;dataset_name&#096; \u53ef\u80fd\u4e0d\u662f\u5fc5\u9700\u7684\u3002<br \/>\n        &#034;&#034;&#034;<br \/>\n        # \u4f7f\u7528 VisDrone \u6d4b\u8bd5\/\u9a8c\u8bc1\u6570\u636e\u7684\u7279\u5b9a\u6570\u636e\u52a0\u8f7d\u5668\u5b9e\u73b0<br \/>\n        return build_test_loader(cfg) #<\/p>\n<p>    &#064;classmethod<br \/>\n    def test(cls, cfg, model, evaluators&#061;None):<br \/>\n        &#034;&#034;&#034;<br \/>\n        \u5728 VisDrone \u6d4b\u8bd5\u6570\u636e\u96c6\u4e0a\u8fd0\u884c\u63a8\u7406\u3002<br \/>\n        Args:<br \/>\n            cfg: Detectron2 \u914d\u7f6e\u5bf9\u8c61\u3002<br \/>\n            model: \u7528\u4e8e\u63a8\u7406\u7684\u5df2\u8bad\u7ec3\u6a21\u578b\u3002<br \/>\n            evaluators: \u53ef\u9009&#xff1b;\u5982\u679c\u4e3a None&#xff0c;\u5219\u4f7f\u7528 &#096;build_evaluator&#096; \u6784\u5efa\u7684\u8bc4\u4f30\u5668\u3002<br \/>\n        Returns:<br \/>\n             \u4e00\u4e2a\u7a7a\u5217\u8868&#xff0c;\u56e0\u4e3a\u7ed3\u679c\u7531 JsonEvaluator \u4fdd\u5b58\u5230\u6587\u4ef6\u4e2d\u3002<br \/>\n             &#xff08;Detectron2 \u7684\u6807\u51c6 test \u8fd4\u56de\u4e00\u4e2a\u5b57\u5178&#xff0c;\u4f46\u8fd9\u91cc\u6211\u4eec\u4e13\u6ce8\u4e8e\u6587\u4ef6\u8f93\u51fa&#xff09;\u3002<br \/>\n        &#034;&#034;&#034;<br \/>\n        logger &#061; logging.getLogger(__name__)<br \/>\n        # \u5047\u8bbe &#039;VisDrone_Test&#039; \u6216\u7c7b\u4f3c\u540d\u79f0\u662f\u6d4b\u8bd5\u6570\u636e\u96c6\u7684\u6ce8\u518c\u540d\u79f0<br \/>\n        # \u5982\u679c build_test_loader \u5b8c\u5168\u4f9d\u8d56\u4e8e cfg&#xff0c;\u5219\u6b64\u540d\u79f0\u53ef\u80fd\u4e0d\u4f1a\u76f4\u63a5\u4f7f\u7528<br \/>\n        dataset_name &#061; &#039;VisDrone_Test&#039; # \u5360\u4f4d\u7b26\u540d\u79f0&#xff0c;\u5b9e\u9645\u6570\u636e\u6765\u81ea cfg<\/p>\n<p>        # \u4f7f\u7528\u81ea\u5b9a\u4e49\u65b9\u6cd5\u6784\u5efa\u6d4b\u8bd5\u6570\u636e\u52a0\u8f7d\u5668<br \/>\n        data_loader &#061; cls.build_test_loader(cfg, dataset_name)<br \/>\n        # \u4f7f\u7528\u81ea\u5b9a\u4e49\u65b9\u6cd5\u6784\u5efa\u8bc4\u4f30\u5668<br \/>\n        if evaluators is None:<br \/>\n             evaluators &#061; cls.build_evaluator(cfg, dataset_name)<\/p>\n<p>        # \u4f7f\u7528 detectron2 \u7684\u5de5\u5177\u51fd\u6570\u8fd0\u884c\u63a8\u7406<br \/>\n        results &#061; inference_on_dataset(model, data_loader, evaluators)<br \/>\n        # \u6807\u51c6\u7684 detectron2 \u7ed3\u679c\u9a8c\u8bc1&#xff08;\u53ef\u9009&#xff0c;\u4f46\u662f\u597d\u7684\u5b9e\u8df5&#xff09;<br \/>\n        # verify_results(cfg, results) # \u5982\u679c\u9700\u8981\u53ef\u4ee5\u542f\u7528<\/p>\n<p>        # \u8fd4\u56de\u7a7a\u5217\u8868&#xff0c;\u56e0\u4e3a\u7ed3\u679c\u88ab JsonEvaluator \u4fdd\u5b58\u5230\u6587\u4ef6<br \/>\n        return []<\/p>\n<p># \u6ce8\u610f&#xff1a;default_argument_parser, setup, \u548c launch \u903b\u8f91\u901a\u5e38\u4f4d\u4e8e<br \/>\n# \u4f60\u7684\u4e3b\u811a\u672c&#xff08;\u4f8b\u5982 train_visdrone.py&#xff09;\u4e2d&#xff0c;\u800c\u4e0d\u662f\u901a\u5e38\u5728 Trainer \u5b9a\u4e49\u6587\u4ef6\u5185\u90e8\u3002 <\/p>\n<p>\u62a5\u9519oom \u8bad\u7ec3\u4ece1\u5f00\u59cb\u00a0<\/p>\n<p>\u6062\u590d\u5230\u5f88\u6162\u90a3\u4e00\u6b65\u00a0 \u9006\u5929<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"62\" src=\"2025-05-09hili0wimyyv.png\" width=\"479\" \/><\/p>\n<p>bc\u6539\u4e3a4 11\u5c0f\u65f6&#xff0c;\u8bad\u7ec3\u5b8c\u6210<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"292\" src=\"2025-05-09fuhqtyhxctv.png\" width=\"1308\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"335\" src=\"2025-05-09bjqjgayat0d.png\" width=\"1242\" \/><\/p>\n<p>\u6d4b\u8bd5<\/p>\n<p>python infer_coco.py &#8211;config-file configs\/coco\/retinanet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS  work_dirs\/coco_retinanet\/model_final.pth OUTPUT_DIR work_dirs\/model_test <\/p>\n<p>\u62a5\u9519Traceback (most recent call last): \u00a0 File &#034;infer_coco.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 from train_tools.coco_infer import default_argument_parser, start_train \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/train_tools\/coco_infer.py&#034;, line 45, in &lt;module&gt; \u00a0 \u00a0 from detectron2_backbone.config import add_backbone_config ModuleNotFoundError: No module named &#039;detectron2_backbone&#039;<\/p>\n<p>\u8fd0\u884c<br \/>\ngit clone https:\/\/github.com\/sxhxliang\/detectron2_backbone.git<br \/>\ncd detectron2_backbone<br \/>\npython setup.py build develop <\/p>\n<p>error: numpy 1.18.5 is installed but numpy&lt;2,&gt;&#061;1.20 is required by {&#039;matplotlib&#039;}<\/p>\n<p>pip install &#8211;upgrade &#034;numpy&gt;&#061;1.20,&lt;2.0&#034;<\/p>\n<p>\u63a8\u7406\u7ed3\u675f\u00a0 \u548c\u7b2c\u4e00\u6b21\u8bad\u7ec3\u4e00\u6837<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"807\" src=\"2025-05-09egder3qqtlo.png\" width=\"923\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"311\" src=\"2025-05-09jtqf5lr210q.png\" width=\"774\" \/><\/p>\n<p>\u8fd0\u884c<\/p>\n<p>python infer_coco.py &#8211;config-file configs\/coco\/querydet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS work_dirs\/coco_querydet\/model_final.pth OUTPUT_DIR work_dirs\/model_test <\/p>\n<p>\u62a5\u9519<img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"233\" src=\"2025-05-094izqa4rulzz.png\" width=\"878\" \/><\/p>\n<p>\u6dfb\u52a0<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"568\" src=\"2025-05-09jady1rsfka3.png\" width=\"811\" \/><\/p>\n<p>\u63a8\u7406\u7ed3\u675f<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"866\" src=\"2025-05-09e05svblhlwf.png\" width=\"932\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"260\" src=\"2025-05-09f324oxfoupe.png\" width=\"734\" \/><\/p>\n<p>666<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"378\" src=\"2025-05-09xuyn3rwvisa.png\" width=\"667\" \/><\/p>\n<p>\u9700\u8981\u91cd\u65b0\u8bad\u7ec3<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"607\" src=\"2025-05-09angj3nyd3lf.png\" width=\"781\" \/><\/p>\n<p>\u8df3\u8fc7CSQ<img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"45\" src=\"2025-05-09gzn2ytw2uhj.png\" width=\"241\" \/><\/p>\n<p>\u7b2c\u4e09\u6761<\/p>\n<p>python infer_coco.py &#8211;config-file configs\/visdrone\/retinanet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS  work_dirs\/visdrone_retinanet\/model_final.pth OUTPUT_DIR work_dirs\/model_test <\/p>\n<p>\u9006\u5929<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"786\" src=\"2025-05-09253njrd4unl.png\" width=\"1199\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"345\" src=\"2025-05-09ggus2r0vhh5.png\" width=\"747\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"244\" src=\"2025-05-09wygmjdamadv.png\" width=\"742\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"96\" src=\"2025-05-090pldnheflwt.png\" width=\"433\" \/><\/p>\n<p>\u4fee\u6539\u6d4b\u8bd5\u547d\u4ee4<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-VISdrone&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>\u8bc4\u4f30\u57fa\u7ebf\u6a21\u578bretinanet<\/p>\n<p>python infer_visdrone.py &#8211;config-file configs\/visdrone\/retinanet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS \u00a0work_dirs\/visdrone_retinanet\/model_final.pth OUTPUT_DIR work_dirs\/model_test<\/p>\n<p>\u62a5\u9519\u627e\u4e0d\u5230<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"245\" src=\"2025-05-09za0aqpkbcgo.png\" width=\"986\" \/><\/p>\n<p>\u6539\u7edd\u5bf9\u8def\u5f84<\/p>\n<p>python infer_visdrone.py &#8211;config-file configs\/visdrone\/retinanet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS \/home\/liuyadong\/QueryDet-PyTorch\/work_dirs\/visdrone_retinanet\/model_final.pth OUTPUT_DIR work_dirs\/model_test<\/p>\n<p>\u53ef\u4ee5\u4e86<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"289\" src=\"2025-05-093chhashrsk4.png\" width=\"1243\" \/><\/p>\n<p>\u8fd0\u884cbash eval_visdrone.sh work_dirs\/model_test\/visdrone_infer.json\u8bc4\u4f30<\/p>\n<p>\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"309\" src=\"2025-05-093evutl4i2tr.png\" width=\"1319\" \/><\/p>\n<p>\u4fee\u6539\u8fd9\u91cc<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"502\" src=\"2025-05-09ojndcj4ee3j.png\" width=\"1121\" \/><\/p>\n<p>\u8bc4\u4f30\u7ed3\u675f<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"309\" src=\"2025-05-095wyf01on0jd.png\" width=\"611\" \/><\/p>\n<p>\u8bc4\u4f30querydet visdrone<\/p>\n<p>python infer_visdrone.py &#8211;config-file configs\/visdrone\/querydet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS work_dirs\/visdrone_querydet\/model_final.pth OUTPUT_DIR work_dirs\/model_test <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"96\" src=\"2025-05-09qqbxjv10uha.png\" width=\"660\" \/><\/p>\n<p>\u8bc4\u4f30bash eval_visdrone.sh work_dirs\/model_test\/visdrone_infer.json<\/p>\n<p>\u57fa\u7ebf\u6a21\u578b\u7ed3\u679c\u548cquerydet\u7ed3\u679c\u90fd\u6bd4\u8bba\u6587\u597d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"309\" src=\"2025-05-09cjrktqrohri.png\" width=\"610\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"350\" src=\"2025-05-09dky35wgfbyg.png\" width=\"641\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"379\" src=\"2025-05-09ctgiqqk523o.png\" width=\"743\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"609\" src=\"2025-05-090y5q4wvwbif.png\" width=\"760\" \/><\/p>\n<p>\u8bc4\u4f30\u4e00\u4e0b\u52a0CSQ\u7684vis<\/p>\n<p>export SPCONV_FILTER_HWIO&#061;&#034;1&#034;; python infer_visdrone.py &#8211;config-file configs\/visdrone\/querydet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS work_dirs\/visdrone_querydet\/model_final.pth OUTPUT_DIR work_dirs\/model_test MODEL.QUERY.QUERY_INFER True <\/p>\n<p>\u62a5\u9519Traceback (most recent call last): \u00a0 File &#034;infer_visdrone.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 from train_tools.visdrone_infer import default_argument_parser, start_train \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/train_tools\/visdrone_infer.py&#034;, line 47, in &lt;module&gt; \u00a0 \u00a0 from models.querydet.detector import RetinaNetQueryDet \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/models\/querydet\/detector.py&#034;, line 38, in &lt;module&gt; \u00a0 \u00a0 import models.querydet.qinfer as qf \u00a0 File &#034;\/home\/liuyadong\/QueryDet-PyTorch\/models\/querydet\/qinfer.py&#034;, line 4, in &lt;module&gt; \u00a0 \u00a0 import spconv.pytorch as spconv \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/spconv\/__init__.py&#034;, line 15, in &lt;module&gt; \u00a0 \u00a0 from . import build as _build \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/spconv\/build.py&#034;, line 21, in &lt;module&gt; \u00a0 \u00a0 from .constants import PACKAGE_NAME, PACKAGE_ROOT, DISABLE_JIT, SPCONV_INT8_DEBUG \u00a0 File &#034;\/home\/liuyadong\/.conda\/envs\/querydet\/lib\/python3.8\/site-packages\/spconv\/constants.py&#034;, line 30, in &lt;module&gt; \u00a0 \u00a0 raise NotImplementedError(&#034;SPCONV_FILTER_HWIO is deprecated. use SPCONV_SAVED_WEIGHT_LAYOUT instead.&#034;) NotImplementedError: SPCONV_FILTER_HWIO is deprecated. use SPCONV_SAVED_WEIGHT_LAYOUT instead.<\/p>\n<p>\u5148\u53d6\u6d88<\/p>\n<p>unset SPCONV_FILTER_HWIO<\/p>\n<p>\u5728\u8fd0\u884c<\/p>\n<p>export SPCONV_SAVED_WEIGHT_LAYOUT&#061;&#034;RSCK&#034;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"394\" src=\"2025-05-09qnnk3otzwa1.png\" width=\"791\" \/><\/p>\n<p>python infer_visdrone.py &#8211;config-file configs\/visdrone\/querydet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS work_dirs\/visdrone_querydet\/model_final.pth OUTPUT_DIR work_dirs\/model_test_csq MODEL.QUERY.QUERY_INFER True<\/p>\n<p>\u62a5\u9519<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"403\" src=\"2025-05-09e3ofsedstj4.png\" width=\"1298\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"659\" src=\"2025-05-09am4e5gctt15.png\" width=\"800\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"388\" src=\"2025-05-09bms0hgtnvvn.png\" width=\"1192\" \/><\/p>\n<p>\u8bc4\u4f30FPS<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"274\" src=\"2025-05-09lamhdejyxsw.png\" width=\"1246\" \/><\/p>\n<p>AP \u8fd0\u884cbash eval_visdrone.sh work_dirs\/model_test_csq\/visdrone_infer.json<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"311\" src=\"2025-05-09wuab4omwjv0.png\" width=\"597\" \/><\/p>\n<p>\u7ed3\u679c\u5206\u6790<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"551\" src=\"2025-05-09zmudpzojjwh.png\" width=\"805\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"662\" src=\"2025-05-09goqcqgyosxd.png\" width=\"748\" \/><\/p>\n<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>\u63a5\u4e0b\u6765&#xff0c;\u91cd\u65b0\u8bad\u7ec3COCO\u00a0 \u5e26query\u7684\u00a0 \u4e4b\u524d\u8bad\u7ec3\u7ed3\u679c\u6709\u95ee\u9898<\/p>\n<p>batch&#061;4\u00a0 num_workers&#061;2\u00a0\u00a0<\/p>\n<p>python train_coco.py &#8211;config-file configs\/coco\/querydet_train.yaml &#8211;num-gpu 2 OUTPUT_DIR work_dirs\/coco_querydet <\/p>\n<p>8\u5c0f\u65f6 batch\u65398\u8bd5\u8bd5\u00a0 16\u5c0f\u65f6&#8230;.<\/p>\n<p>\u65396\u8bd5\u8bd5\u00a0 12\u5c0f\u65f6&#8230;.<\/p>\n<p>\u8fd8\u662f\u65394<\/p>\n<p>\u8dd1\u5b8c\u4e86<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"643\" src=\"2025-05-09y2vxakuizzu.png\" width=\"1032\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"434\" src=\"2025-05-091was2j04c55.png\" width=\"983\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"597\" src=\"2025-05-09iylgoa1nmon.png\" width=\"757\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"500\" src=\"2025-05-09ndkobiu025b.png\" width=\"807\" \/><\/p>\n<p>\u770b\u770b\u5e26CSQ\u7684<\/p>\n<p>python infer_coco.py &#8211;config-file configs\/coco\/querydet_test.yaml &#8211;num-gpu 2 &#8211;eval-only MODEL.WEIGHTS work_dirs\/coco_querydet\/model_final.pth OUTPUT_DIR work_dirs\/model_test MODEL.QUERY.QUERY_INFER True  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"682\" src=\"2025-05-09xs3xpndpfvp.png\" width=\"910\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"293\" src=\"2025-05-09ximk0ue4ycr.png\" width=\"818\" \/><\/p>\n<p>\u5bc4<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"363\" src=\"2025-05-09jz3wbdzpsgk.png\" width=\"815\" \/><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb977\u6b21\uff0c\u70b9\u8d5e27\u6b21\uff0c\u6536\u85cf28\u6b21\u3002querydet\u590d\u73b0\u65e5\u5fd7<\/p>\n","protected":false},"author":2,"featured_media":36318,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[81,190],"topic":[],"class_list":["post-36338","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-python","tag-190"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/36338.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb977\u6b21\uff0c\u70b9\u8d5e27\u6b21\uff0c\u6536\u85cf28\u6b21\u3002querydet\u590d\u73b0\u65e5\u5fd7\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/36338.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-09T01:26:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc28458.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/36338.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/36338.html\",\"name\":\"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-05-09T01:26:55+00:00\",\"dateModified\":\"2025-05-09T01:26:55+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/36338.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/36338.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/36338.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/36338.html","og_locale":"zh_CN","og_type":"article","og_title":"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb977\u6b21\uff0c\u70b9\u8d5e27\u6b21\uff0c\u6536\u85cf28\u6b21\u3002querydet\u590d\u73b0\u65e5\u5fd7","og_url":"https:\/\/www.wsisp.com\/helps\/36338.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-05-09T01:26:55+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/05\/20250509012652-681d59dc28458.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"20 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/36338.html","url":"https:\/\/www.wsisp.com\/helps\/36338.html","name":"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-05-09T01:26:55+00:00","dateModified":"2025-05-09T01:26:55+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/36338.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/36338.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/36338.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"querydet\u670d\u52a1\u5668\u590d\u73b0\u8bb0\u5f55"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/36338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=36338"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/36338\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/36318"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=36338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=36338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=36338"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=36338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}