对象以CVPR2021中论文的开源代码为例
论文题目为:
Track to Detect and Segment: An Online Multi-Object Tracker
代码链接:
https://github.com/JialianW/TraDeS.git
代码的环境安装链接可参考:
https://blog.csdn.net/qq_42962681/article/details/115906491?spm=1001.2014.3001.5501
在GitHub中的代码,大多数都是在cmd终端上运行的,很少有直接在pycharm中直接运行(以demo.py为例,直接运行demo.py,就可运行出结果),这对我这样的初学者去理解、修改代码造成了很大的困难,因此为了在pycharm中直接运行并调试参数,找到下方方法,此贴用以记录自己的学习历程。如下面代码所示:
在cmd终端,转到demo.py所在的文件夹下:
cd TraDeS_ROOT/src/
运行下面代码:
python demo.py tracking --dataset mot --load_model ../models/mot_half.pth --demo ../videos/mot_mini.mp4 --pre_hm --ltrb_amodal --pre_thresh 0.5 --track_thresh 0.4 --inference --clip_len 3 --trades --save_video --resize_video --input_h 544 --input_w 960
作为一个编程小白,pycharm都没完全明白,直接在终端运行,虽然能跑出结果,但是理解和更改参数却是无法下手。因此,为了能在pycharm中直接运行(以便能弄清代码和参数更改),通过查资料和GitHub上问题的回答以及自己的尝试,得到以下两种方法。
一、在pycharm中直接添加运行代码
1.点击所要运行的主程序 demo.py
2.点击“Run” 菜单下的“ Edit configuration”
3.点击右上角的“+”,选择“python”
4.之后在右方填入相关信息
Name:填写要运行的代码文件 这里为demo.py
Script path :找到demo.py所在文件夹下的路径
Parameters:输入上方cmd终端下的代码
Python interpreter: 为自己创建的环境
5.配置好后就可直接运行demo.py了
二、更改opts.py文件中的参数,运行程序
这种方法需要了解一下argparse
模块,并熟悉argparse
的用法。argparse
是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse
将会从 sys.argv
中解析出这些参数,并自动生成帮助和使用信息。
F:test\TraDeS-master\src\lib\opts.py
2.以下方代码为例,在opts.py中进行修改。
python demo.py tracking --dataset mot --load_model ../models/mot_half.pth --demo ../videos/mot_mini.mp4 --pre_hm --ltrb_amodal --pre_thresh 0.5 --track_thresh 0.4 --inference --clip_len 3 --trades --save_video --resize_video --input_h 544 --input_w 960
1)对于tracking
,更改参数default
和修改--task'
,详细代码如下图:
self.parser.add_argument('task', default='',
help='ctdet | ddd | multi_pose '
'| tracking or combined with ,')
(line 14 in opts.py)
更改为:
self.parser.add_argument('--task',default='tracking',
help='ctdet | ddd | multi_pose '
'| tracking or combined with ,')
这里的修改我用时最长,当时对argparse
模块了解的不深入,以为简单的修改default
就行,这样运行demo.py就会出现demo.py: error: the following arguments are required: task
的报错。
self.parser.add_argument('--load_model', default='',
help='path to pretrained model')
(line 34 in opts.py)
更改为:
self.parser.add_argument('--load_model', default='../models/mot_half.pth',
help='path to pretrained model')
self.parser.add_argument('--pre_hm', action='store_true')
(line 214 in opts.py)
更改为:
self.parser.add_argument('--pre_hm', action='store_false')
将所有指定的参数修改完后,就可直接运行demo.py了
这个问题前前后后折腾了我好几天,一度想放弃挣扎,但是终究慢慢的摸索出来了,前路漫漫,要学的还很多,加油!