初衷是供自己记录使用
环境:
Windows:
复现经典目标跟踪算法ByteTrack之路:调通第一个demo_bytetrack复现-CSDN博客
由于之前一直都是在windows上跑模型,所以先是依据上述链接配了windows上的环境,注意在使用上述方法配置环境时,在安装cython_bbox时候,不需要更改setup.py文件,因为内部其实已经改好了。记得首先需要安装pytorch三件套,再使用requiremets.txt安装剩余包,避免直接使用requiremets.txt导致安装cpu版本pytorch,在使用pytorch安装命令时,可以去官网找命令进行安装,我使用的如下命令,在手机热点情况下大概3-4M/s。
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
在配置安装pycocotools和cython_bbox时候,需要有C++的编译器,可以下载VS,进行环境变量cl.exe的配置,可以参考该文章在Windows命令行中使用cl.exe——如何设置环境变量_为什么设置了cl.exe的环境变量,-CSDN博客
但是在3090上配环境时,却出现pycocotools和cython_bbox不兼容的情况,配置其中一个,另一个就会自动被卸载,配好了这一个,另一个又会被卸载,到如今也不知道怎么回事,最后使用之前在其他低于3090显卡上成功配置好的环境拷贝过去进行重新安装pytorch解决的,当然也不需要重新安装,我是因为之前版本pytorch等级太低,3090的cuda不兼容,需要升高pytorch等级。
Linux:
后来在服务器上配环境,由于是linux系统,所以需要重新配环境,好像不能通过直接拷贝虚拟环境?试过一次发现不太行,有机会再试试。
和windows类似,先配pytorch三件套
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
再配requiremets.txt
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
但是在这儿出现了意外,requiremets.txt中默认的“onnx==1.8.1”安装出错
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for onnx
Failed to build onnx
ERROR: Could not build wheels for onnx, which is required to install pyproject.toml-based projects
该情况需要降低python版本至3.9以下,我降到3.8就行了,因为python版本与onnx==1.8.1不兼容,除非升级onnx,但为了保证包等级的一致性,选择降低python,然后按照requiremets.txt安装。
接着安装github上面步骤进行
python3 setup.py develop # 安装yolox
pip3 install cython # 安装cython
由于服务器不能连接外网,故该命令
pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
运行不了,使用如下命令
conda install -c conda-forge pycocotools # 安装pycocotools
接着运行
pip install cython_bbox # 安装cython_bbox
在我第一次运行该命令时也会报错,升级了cython的版本就好了,但是第二次配没升级cython又没报错,不懂为啥
训练:
官方数据训练:
直接按照README.md进行数据集的转换和合成以及训练
自定义数据训练:
参考yolox+ByteTrack 自定义数据集训练_bytetrack训练自己的数据集-CSDN博客链接进行修改相应文件,注意your_exp_file文件的网络的宽高和相应权重的smlx等级是对应的,注意匹配,不然可能会报错,图像尺寸大小和权重等级影响batchsize,注意避免,不要爆显存;注意一定要将annotation的转换文件中的图片尺寸参数加在里面,在convert文件中不要删掉,不然会导致AP为0。
测试评估:
我遇到的一些问题:
your_exp_file文件:注意修改self.val_ann,该annotation文件在训练时候充当验证集,在评估时充当测试集,故如有必要需要进行更改;要保证所选用的baseline所使用的数据集与测试时选用的数据集一样才能评估,不然输出会出bug。
track文件:
1、
注意修改如图所示位置的gt文件路径,修改为所参考的baseline,比如真值文件。*表示通配符,筛选出符号该路径的所有文件;
2、
根据实际路径,修改代码,Path(f).parts[-3]意为该路径的倒数第三个子文件夹名字,我们需要得到具有标志的文件名,比如序号01, 02等,在我的路径中,为xx/xx/xx/01.txt、xx/xx/xx/02.txt……,故我需要取出最后一个文件名,然后使用splitext将文件名和txt分开,再使用[0]得到文件名,与跟踪的输出文件名对齐,因为官方代码就是拿到这个标志性的文件名。此外,还需要根据自己的输出txt文件更改min_confidence参数。
另外,后续还需要将gt和ts文件进行评估,还需要将gt格式转化为与ts相似的格式,这需要修改txt文件。这一步需要放在第一点注意之前。