问题一
/opt/anaconda3/envs/pcdet/bin/python3.7: No module named pytest tests/CMakeFiles/pytest.dir/build.make:73: recipe for target 'tests/CMakeFiles/pytest' failed make[3]: *** [tests/CMakeFiles/pytest] Error 1 CMakeFiles/Makefile2:352: recipe for target 'tests/CMakeFiles/pytest.dir/all' failed make[2]: *** [tests/CMakeFiles/pytest.dir/all] Error 2 CMakeFiles/Makefile2:415: recipe for target 'tests/CMakeFiles/check.dir/rule' failed make[1]: *** [tests/CMakeFiles/check.dir/rule] Error 2 Makefile:261: recipe for target 'check' failed make: *** [check] Error 2
你的错误日志显示你的Python环境中缺少 pytest
模块,这是导致构建失败的直接原因。你可以通过以下命令来安装 pytest
:
bashCopy code
pip install pytest
然后,你还需要注意其他几点可能的错误:
-
如果你在一个Python虚拟环境中工作,并且在开始工作之前已经激活了这个环境,那么你应该确保
pytest
是在这个虚拟环境中安装的。你可以用which python
查看你当前正在使用哪个Python解释器。 -
如果你正在尝试构建一个C++项目,并且这个项目的一部分是Python扩展,那么 Makefile 所使用的Python解释器应该和你安装
pytest
的Python解释器是同一个。 -
确保Python解释器的路径正确。在你的错误信息中,Python解释器的路径是
/opt/anaconda3/envs/pcdet/bin/python3.7
。你可以通过在命令行运行这个路径来确保它可以正确的启动Python解释器。
进行上述操作之后,你应该可以解决问题并成功的运行 make check
命令了
Traceback (most recent call last):
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py", line 479, in <module>
create_kitti_infos(
File "/home/OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py", line 459, in create_kitti_infos
kitti_infos_test = dataset.get_infos(num_workers=workers, has_label=False, count_inside_pts=False)
File "/home/OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py", line 222, in get_infos
return list(infos)
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/concurrent/futures/_base.py", line 609, in result_iterator
yield fs.pop().result()
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/concurrent/futures/_base.py", line 439, in result
return self.__get_result()
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/concurrent/futures/_base.py", line 391, in __get_result
raise self._exception
File "/opt/anaconda3/envs/lppcdet/lib/python3.9/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py", line 159, in process_single_scene
image_info = {'image_idx': sample_idx, 'image_shape': self.get_image_shape(sample_idx)}
File "/home/OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py", line 85, in get_image_shape
assert img_file.exists()
AssertionError
AttributeError: module 'spconv' has no attribute 'SparseModule'
ModuleNotFoundError: No module named 'spconv.core_cc'
cuda10.2可以成功安装对应的pytorch
pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu102
安装spconv
pip install spconv-cu102 |
安装完成后import spconv.pytorch as spconv看是否安装成功
ModuleNotFoundError: No module named 'cv2'
pip install opencv-python
ModuleNotFoundError: No module named 'av2'
pip install av2
问题二
KORNIA与torch 版本
解决:pip install kornia==0.5.8
KORNIA 0.58对应torch 1.7
以上对应1.8
可以多下载几个多次安装,直到支持。
问题三:
问题四:创建和删除超链接
rm /你想删除的超链接路径
ln -s /path/to/original /path/to/link
问题五:GPU训练
单GPU训练
CUDA_VISIBLE_DEVICES=0 python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml
多GPU训练
CUDA_VISIBLE_DEVICES=4,5,6,7 python -m torch.distributed.launch --nproc_per_node=4 train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --launcher pytorch
问题六:训练之前的数据处理
0、原版文件
git clone https://github.com/open-mmlab/OpenPCDet.git
1、安装
python setup.py develop
2、数据预处理
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
3、开始训练
python train.py --cfg_file ./cfgs/kitti_models/pv_rcnn.yaml --batch_size 1 --epochs 50
问题七:AttributeError: module 'spconv' has no attribute 'SparseModule'
打开 OpenPCDet/pcdet/models/backbones_3d/spconv_backbone.py
更改如下
问题八:ModuleNotFoundError: No module named 'thop'
pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git
问题九:AttributeError: module 'pcdet.ops.pointnet2.pointnet2_stack.pointnet2_modules' has no attribute 'build_local_aggregation_module'
在ops.pointnet2.pointnet2_stack.pointnet2_modules文件里面添加
def build_local_aggregation_module(input_channels, config):
local_aggregation_name = config.get('NAME', 'StackSAModuleMSG')
if local_aggregation_name == 'StackSAModuleMSG':
mlps = config.MLPS
for k in range(len(mlps)):
mlps[k] = [input_channels] + mlps[k]
cur_layer = StackSAModuleMSG(
radii=config.POOL_RADIUS, nsamples=config.NSAMPLE, mlps=mlps, use_xyz=True, pool_method='max_pool',
)
num_c_out = sum([x[-1] for x in mlps])
# elif local_aggregation_name == 'VectorPoolAggregationModuleMSG':
# cur_layer = VectorPoolAggregationModuleMSG(input_channels=input_channels, config=config)
# num_c_out = config.MSG_POST_MLPS[-1]
else:
raise NotImplementedError
return cur_layer, num_c_out
问题十:报错
Traceback (most recent call last):
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train.py", line 230, in <module>
main()
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train.py", line 175, in main
train_model(
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train_utils/train_utils.py", line 180, in train_model
accumulated_iter = train_one_epoch(
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train_utils/train_utils.py", line 33, in train_one_epoch
batch = next(dataloader_iter)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 517, in __next__
data = self._next_data()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1182, in _next_data
idx, data = self._get_data()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1138, in _get_data
success, data = self._try_get_data()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 986, in _try_get_data
data = self._data_queue.get(timeout=timeout)
KeyboardInterrupt
epochs: 0%| | 0/50 [00:00<?, ?it/s]
Traceback (most recent call last):
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train.py", line 230, in <module>
main()
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train.py", line 175, in main
train_model(
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train_utils/train_utils.py", line 180, in train_model
accumulated_iter = train_one_epoch(
File "/media/ubuntu/F/lp/F盘原版程序/SA-Det3D-main/OpenPCDet/tools/train_utils/train_utils.py", line 16, in train_one_epoch
dataloader_iter = iter(train_loader)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 355, in __iter__
return self._get_iterator()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 301, in _get_iterator
return _MultiProcessingDataLoaderIter(self)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 914, in __init__
w.start()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/context.py", line 277, in _Popen
return Popen(process_obj)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/popen_fork.py", line 19, in __init__
self._launch(process_obj)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/popen_fork.py", line 66, in _launch
self.pid = os.fork()
KeyboardInterrupt
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/util.py", line 357, in _exit_function
p.join()
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/process.py", line 147, in join
assert self._parent_pid == os.getpid(), 'can only join a child process'
AssertionError: can only join a child process
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/popen_fork.py", line 27, in poll
pid, sts = os.waitpid(self.pid, flag)
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/site-packages/torch/utils/data/_utils/signal_handling.py", line 66, in handler
_error_if_any_worker_fails()
RuntimeError: DataLoader worker (pid 19370) is killed by signal: Terminated.
Exception ignored in: <Finalize object, dead>
Traceback (most recent call last):
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/util.py", line 224, in __call__
File "/home/ubuntu/anaconda3/envs/pcdet/lib/python3.9/multiprocessing/queues.py", line 196, in _finalize_join
TypeError: 'NoneType' object is not callable
解决: parser.add_argument('--workers', type=int, default=4, help='number of workers for dataloader')这句话中的default=4改成default=0
就能解决
问题:安装TED时候报错
问题: 1、ModuleNotFoundError: No module named 'skimage'
2、ModuleNotFoundError: No module named 'prefetch_generator'
解决:1、pip install scikit-image
2、pip install prefetch_generator
问题:'BatchNorm2d' object has no attribute 'total_ops'
解决:换一个total_ops版本比如total_ops==1
问题:备份的代码总是调用源代码,这时候需要重新跑一下python setup.py develop就好了