网站标题在哪里修改,中国建筑装饰网唐迪夫,网页设计版权信息代码,别的网站可以做弹幕文章目录
环境前言项目复现特征提取工程下载参考资料
环境
ubuntu 18.04 64位yolov5deepsortfastreid
前言
基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目#xff0c;结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主… 文章目录
环境前言项目复现特征提取工程下载参考资料
环境
ubuntu 18.04 64位yolov5deepsortfastreid
前言
基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主要实例也是非常的实用包括行人流量的统计、人群中特定目标的查找与跟踪。
项目复现
首先创建个全新的虚拟环境
conda create -n pytorch1.6 python3.7
conda activate pytorch1.6
然后安装下其它的依赖包
# 如果没有gpu的话就按照requirements.txt安装即可
pip install torch1.6.0cu101 torchvision0.7.0cu101 -f https://download.pytorch.org/whl/torch_stable.html
# 编辑requirements.txt注释掉torch和torchvision
pip install -r requirements.txt
# 使用cython加速
pip install cython
cd fast_reid/fastreid/evaluation/rank_cylib
make all
cd ../../../../
先来跑个行人计数的demo
python person_count.py 如果你在运行过程中出现下面的错误
2021-07-13 14:22:20 [INFO]: Loading weights from ./deep_sort/deep/checkpoint/ckpt.t7... Done!
Traceback (most recent call last):File person_count.py, line 244, in moduleyolo_reid.deep_sort()File person_count.py, line 121, in deep_sortbbox_xywh, cls_conf, cls_ids, xy self.person_detect.detect(video_path, img, ori_img, vid_cap)File /home/xugaoxiang/Works/Yolov5-Deepsort-Fastreid/person_detect_yolov5.py, line 95, in detectpred self.model(img, augmentself.augment)[0]File /home/xugaoxiang/anaconda3/envs/pytorch1.6/lib/python3.7/site-packages/torch/nn/modules/module.py, line 722, in _call_implresult self.forward(*input, **kwargs)File /home/xugaoxiang/Works/Yolov5-Deepsort-Fastreid/models/yolo.py, line 111, in forwardreturn self.forward_once(x, profile) # single-scale inference, trainFile /home/xugaoxiang/Works/Yolov5-Deepsort-Fastreid/models/yolo.py, line 131, in forward_oncex m(x) # run
这个就是模型的问题建议使用源码中自带的 shell 脚本进行下载
sh weights/download_weights.sh
另外依赖模块 apex不可以通过 pip install apex 来安装否则会报错 如果安装的 pyyaml 版本较高的话会出现下面的错误 只需要将 utils/parses.py 中的
self.update(yaml.load(fo.read())) 改为
self.update(yaml.safe_load(fo.read())) 我们来看看这个行人流量统计的基本原理
首先作者将 yolov5 的目标检测封装成了一个类 Person_detect通过它的 detect 方法可以检测到视频中的每一个行人目标
然后在画面中设定一条基准线给定线条两端的坐标即可
line [(0, int(0.48 * ori_img.shape[0])), (int(ori_img.shape[1]), int(0.48 * ori_img.shape[0]))]
cv2.line(ori_img, line[0], line[1], (0, 255, 255), 4)
接着创建跟踪器开始对 yolov5 检测出的每一个目标进行跟踪。这里以目标预测框的中心点为基准下图是它的计算方法 如果前后帧的中心点所连成的直线和预先设定的基准线相交则判定为越线但是这里还有个方向的问题向上还是向下来看另一张图 作者利用了三角形的正切与反正切原理使用 math 模块中的 degrees 方法来判断如果这个角度 0说明是向上走反之则为向下走
def vector_angle(midpoint, previous_midpoint):x midpoint[0] - previous_midpoint[0]y midpoint[1] - previous_midpoint[1]return math.degrees(math.atan2(y, x))
看完行人计数的示例我们再来看看特定目标的重识别示例
python person_search_reid.py
报错了
Fusing layers...
Traceback (most recent call last):File person_search_reid.py, line 120, in moduleyolo_reid yolo_reid(cfg, args, pathargs.video_path)File person_search_reid.py, line 35, in __init__self.deepsort build_tracker(cfg, args.sort, use_cudause_cuda)File /home/xugaoxiang/Works/Yolov5-Deepsort-Fastreid/deep_sort/__init__.py, line 18, in build_trackermax_agecfg.DEEPSORT.MAX_AGE, n_initcfg.DEEPSORT.N_INIT, nn_budgetcfg.DEEPSORT.NN_BUDGET, use_cudause_cuda)File /home/xugaoxiang/Works/Yolov5-Deepsort-Fastreid/deep_sort/deep_reid.py, line 29, in __init__self.extractor Reid_feature()File ./fast_reid/demo/demo.py, line 84, in __init__cfg setup_cfg(args)File ./fast_reid/demo/demo.py, line 35, in setup_cfgcfg.merge_from_file(args.config_file)File ./fast_reid/fastreid/config/config.py, line 107, in merge_from_filecfg_filename, allow_unsafeallow_unsafeFile ./fast_reid/fastreid/config/config.py, line 50, in load_yaml_with_basewith PathManager.open(filename, r) as f:File ./fast_reid/fastreid/utils/file_io.py, line 357, in openpath, mode, bufferingbuffering, **kwargsFile ./fast_reid/fastreid/utils/file_io.py, line 251, in _open
然后再次运行脚本 person_search_reid.py可以得到 可以看到由于事先已经提了2位行人( a1111111111 和 b222222222222 )的特征所以画面中能够识别出这2个人并进行跟踪。默认特征文件保存在 fast_reid/query 下
如果你也想要制作一个特征文件可以按照下面的步骤进行
特征提取
首先需要截取目标人物的图片存放在某个以特定目标命名的文件夹下如我这里的 xugaoxiang.com这样后面进行识别的时候就显示 xugaoxiang.com 这个名字了。把这个文件夹拷贝到 fast_reid/query 目录下目录结构如下
(pytorch1.6) xugaoxiang1070Ti:~/Works/Yolov5-Deepsort-Fastreid/fast_reid/query$ tree
.
├── names.npy
├── query_features.npy
└── xugaoxiang.com├── 10.png├── 11.png├── 12.png├── 13.png├── 14.png├── 15.png├── 1.png├── 2.png├── 3.png├── 4.png├── 5.png├── 6.png├── 7.png├── 8.png└── 9.png
接下来执行
cd fast_reid/demo
python person_bank.py
执行完毕后query 目录下的 query_features.npy 和 names.npy 就被更新了
最后找个包含目标的视频测试下效果 QQ767172261