TypeError: load() missing 1 required positional argument: 'Loader'
TypeError: load() missing 1 required positional argument: 'Loader'
我正在尝试 运行 这个 github 回购 link: https://github.com/HowieMa/DeepSORT_YOLOv5_Pytorch
通过 pip install -r requirements.txt 安装要求后。
我 运行 在 python 3.8 虚拟环境中,在 dji 流形 2g 上 运行 在 Nvidia jetson tx2 上 运行s。
以下为终端输出
$ python main.py --cam 0 --display
Namespace(agnostic_nms=False, augment=False, cam=0, classes=[0], conf_thres=0.5, config_deepsort='./configs/deep_sort.yaml', device='', display=True, display_height=600, display_width=800, fourcc='mp4v', frame_interval=2, img_size=640, input_path='input_480.mp4', iou_thres=0.5, save_path='output/', save_txt='output/predict/', weights='yolov5/weights/yolov5s.pt')
Initialize DeepSORT & YOLO-V5
Using CPU
Using webcam 0
Traceback (most recent call last):
File "main.py", line 259, in <module>
with VideoTracker(args) as vdo_trk:
File "main.py", line 53, in __init__
cfg.merge_from_file(args.config_deepsort)
File "/home/dji/Desktop/targetTrackers/howieMa/DeepSORT_YOLOv5_Pytorch/utils_ds/parser.py", line 23, in merge_from_file
self.update(yaml.load(fo.read()))
TypeError: load() missing 1 required positional argument: 'Loader'
我在 github 上找到了一些建议,比如这里 ,
这建议将 yaml.load 更改为 yaml.safe_load
这是要修改的代码块:
class YamlParser(edict):
"""
This is yaml parser based on EasyDict.
"""
def __init__(self, cfg_dict=None, config_file=None):
if cfg_dict is None:
cfg_dict = {}
if config_file is not None:
assert(os.path.isfile(config_file))
with open(config_file, 'r') as fo:
cfg_dict.update(yaml.load(fo.read()))
super(YamlParser, self).__init__(cfg_dict)
def merge_from_file(self, config_file):
with open(config_file, 'r') as fo:
self.update(yaml.load(fo.read()))
def merge_from_dict(self, config_dict):
self.update(config_dict)
但是,将 yaml.load 更改为 yaml.safe_load 反而会导致我出现此错误
$ python main.py --cam 0 --display
Namespace(agnostic_nms=False, augment=False, cam=0, classes=[0], conf_thres=0.5, config_deepsort='./configs/deep_sort.yaml', device='', display=True, display_height=600, display_width=800, fourcc='mp4v', frame_interval=2, img_size=640, input_path='input_480.mp4', iou_thres=0.5, save_path='output/', save_txt='output/predict/', weights='yolov5/weights/yolov5s.pt')
Initialize DeepSORT & YOLO-V5
Using CPU
Using webcam 0
Done..
Camera ...
Done. Create output file output/results.mp4
Illegal instruction (core dumped)
有没有人遇到过类似的事情?谢谢!
试试这个:
yaml.load(fo.read(), Loader=yaml.FullLoader)
似乎 pyyaml>=5.1 需要一个 Loader
参数。
如果需要FullLoader
,也可以用“糖”法,yaml.full_load()
.
并且从pyyaml>=5.4开始,它没有发现任何严重漏洞,pyyaml status。
更多关于 yaml.load(input)
here。
我正在尝试 运行 这个 github 回购 link: https://github.com/HowieMa/DeepSORT_YOLOv5_Pytorch 通过 pip install -r requirements.txt 安装要求后。 我 运行 在 python 3.8 虚拟环境中,在 dji 流形 2g 上 运行 在 Nvidia jetson tx2 上 运行s。
以下为终端输出
$ python main.py --cam 0 --display
Namespace(agnostic_nms=False, augment=False, cam=0, classes=[0], conf_thres=0.5, config_deepsort='./configs/deep_sort.yaml', device='', display=True, display_height=600, display_width=800, fourcc='mp4v', frame_interval=2, img_size=640, input_path='input_480.mp4', iou_thres=0.5, save_path='output/', save_txt='output/predict/', weights='yolov5/weights/yolov5s.pt')
Initialize DeepSORT & YOLO-V5
Using CPU
Using webcam 0
Traceback (most recent call last):
File "main.py", line 259, in <module>
with VideoTracker(args) as vdo_trk:
File "main.py", line 53, in __init__
cfg.merge_from_file(args.config_deepsort)
File "/home/dji/Desktop/targetTrackers/howieMa/DeepSORT_YOLOv5_Pytorch/utils_ds/parser.py", line 23, in merge_from_file
self.update(yaml.load(fo.read()))
TypeError: load() missing 1 required positional argument: 'Loader'
我在 github 上找到了一些建议,比如这里
这是要修改的代码块:
class YamlParser(edict):
"""
This is yaml parser based on EasyDict.
"""
def __init__(self, cfg_dict=None, config_file=None):
if cfg_dict is None:
cfg_dict = {}
if config_file is not None:
assert(os.path.isfile(config_file))
with open(config_file, 'r') as fo:
cfg_dict.update(yaml.load(fo.read()))
super(YamlParser, self).__init__(cfg_dict)
def merge_from_file(self, config_file):
with open(config_file, 'r') as fo:
self.update(yaml.load(fo.read()))
def merge_from_dict(self, config_dict):
self.update(config_dict)
但是,将 yaml.load 更改为 yaml.safe_load 反而会导致我出现此错误
$ python main.py --cam 0 --display
Namespace(agnostic_nms=False, augment=False, cam=0, classes=[0], conf_thres=0.5, config_deepsort='./configs/deep_sort.yaml', device='', display=True, display_height=600, display_width=800, fourcc='mp4v', frame_interval=2, img_size=640, input_path='input_480.mp4', iou_thres=0.5, save_path='output/', save_txt='output/predict/', weights='yolov5/weights/yolov5s.pt')
Initialize DeepSORT & YOLO-V5
Using CPU
Using webcam 0
Done..
Camera ...
Done. Create output file output/results.mp4
Illegal instruction (core dumped)
有没有人遇到过类似的事情?谢谢!
试试这个:
yaml.load(fo.read(), Loader=yaml.FullLoader)
似乎 pyyaml>=5.1 需要一个 Loader
参数。
如果需要FullLoader
,也可以用“糖”法,yaml.full_load()
.
并且从pyyaml>=5.4开始,它没有发现任何严重漏洞,pyyaml status。
更多关于 yaml.load(input)
here。