songwsx/person_search_demo

About GPU and CPU

Closed this issue · 2 comments

你好我的笔记本没有GPU但是我想测试您的代码,在运行python search.py时报错如下:
$ python search.py
Namespace(cfg='cfg/yolov3.cfg', conf_thres=0.1, data='data/coco.data', dist_thres=1.0, fourcc='mp4v', half=False, images='data/samples', img_size=416, nms_thres=0.4, output='output', query='query', webcam=False, weights='weights/yolov3.weights')
Using CPU

Dataset statistics:

subset | # ids | # images | # cameras

query | 1 | 2 | 2

Traceback (most recent call last):
File "search.py", line 226, in
output=opt.output)
File "search.py", line 38, in detect
reidModel.load_param(reidCfg.TEST.WEIGHT)
File "D:\person_search_demo-master\reid\modeling\baseline.py", line 63, in load_param
param_dict = torch.load(trained_path)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 386, in load
return _load(f, map_location, pickle_module, **pickle_load_args)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 573, in _load
result = unpickler.load()
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 536, in persistent_load
deserialized_objects[root_key] = restore_location(obj, location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 119, in default_restore_location
result = fn(storage, location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 95, in _cuda_deserialize
device = validate_cuda_device(location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 79, in validate_cuda_device
raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

该怎么解决,新手求教!不胜感激!

你好我的笔记本没有GPU但是我想测试您的代码,在运行python search.py时报错如下:
$ python search.py
Namespace(cfg='cfg/yolov3.cfg', conf_thres=0.1, data='data/coco.data', dist_thres=1.0, fourcc='mp4v', half=False, images='data/samples', img_size=416, nms_thres=0.4, output='output', query='query', webcam=False, weights='weights/yolov3.weights')
Using CPU

Dataset statistics:

subset | # ids | # images | # cameras

query | 1 | 2 | 2

Traceback (most recent call last):
File "search.py", line 226, in
output=opt.output)
File "search.py", line 38, in detect
reidModel.load_param(reidCfg.TEST.WEIGHT)
File "D:\person_search_demo-master\reid\modeling\baseline.py", line 63, in load_param
param_dict = torch.load(trained_path)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 386, in load
return _load(f, map_location, pickle_module, **pickle_load_args)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 573, in _load
result = unpickler.load()
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 536, in persistent_load
deserialized_objects[root_key] = restore_location(obj, location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 119, in default_restore_location
result = fn(storage, location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 95, in _cuda_deserialize
device = validate_cuda_device(location)
File "C:\ProgramData\Anaconda3\lib\site-packages\torch\serialization.py", line 79, in validate_cuda_device
raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

该怎么解决,新手求教!不胜感激!
image
其实报错提示已经告诉你怎么改了,把reID模型加载参数的函数加上map_location='cpu'就行了

秒回啊,感谢!我会好好学习你的代码的!!!!