位置: IT常识 - 正文

ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目(行人重识别map)

编辑:rootadmin
ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目

推荐整理分享ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目(行人重识别map),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:reid行人重识别算法,reid行人重识别,reid行人重识别,行人重识别代码实现,reid行人重识别,reid行人重识别算法,reid行人重识别,reranking行人重识别,内容如对您有帮助,希望把文章链接给更多的朋友!

利用ReID和目标检测对视频进行检测,可以对视频中的人进行重识别,支持更换数据集可以做车辆重识别等。可应用于图像、视频检索,行人跟踪等

在以前学习ReID的时候,是跟着下面视频学习的,该论文和代码也可以参考GitHub - michuanhaohao/ReID_tutorial_slides: 《深度学习与行人重识别》课程课件《深度学习和行人重识别》浙江大学罗浩博士_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Pg4y1q7sN?from=search&seid=12319613973768358764&spm_id_from=333.337.0.0

理论部分这里不在叙述,视频中讲解的很清楚,可以跟着视频学习,这里只讲代码的使用。

上述代码可以进行正常的训练,但没有视频或者图像检测代码,然后在查找相关资料的时候,发现这篇文章中是用yolov3和ReID进行了结合,但这篇文章中没有训练代码https://zhuanlan.zhihu.com/p/82398949

为此,对上述两个项目的代码进行了整合,感谢上述两位博主的贡献。对代码稍加了一点修改,同时我也训练了se_renext50网络,可以正常检测。可对视频或者图像进行检索,效果如下【可以看出即便遮挡以后,也可以继续检索】:

目录

训练 

检测


训练 

步骤1:

config文件夹:

        defaults.py中(一些默认配置)

GPU设置:

        _C.MODEL.DEVICE = "cuda" 是否使用GPU

        _C.MODEL.DEVICE_ID = '0' GPU ID

网络设置:

         _C.MODEL.NAME = 'resnet50_ibn_a'

        _C.MODEL.PRETRAIN_PATH =r'./pretrained.pth' # 预权重路径(选择的权重要和上面你的模型对应上)

超参设置:

         _C.SOLVER.OPTIMIZER_NAME = "Adam"  # 选择优化器         _C.SOLVER.MAX_EPOCHS = 120 # 训练最大epoch数         _C.SOLVER.BASE_LR = 3e-4  # 初始学习率

步骤2:

configs文件夹:

        softmax_triplet_with_center.yml中

        softmax_triplet.yml中#(本代码训练用的这个损失函数)

MODEL:

        PRETRAIN_PATH: # 预训练权重(这个权重我是放在ReID/weights/r50_ibn_2.pth,这个可以根据自己实际情况更改)

SOLVER:

        OPTIMIZER_NAME: 'Adam' # 优化器

        MAX_EPOCHS: 120 # 最大epoch

        BASE_LR: 0.00035 # 初始学习率

ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目(行人重识别map)

主要设置权重保存周期和记录log和eval周期【我设置的是1,这样每轮都会保存一次日志、权重,每轮都计算一次mAP和rank】

        CHECKPOINT_PERIOD: 1

        LOG_PERIOD: 1

        EVAL_PERIOD: 1

OUTPUT_DIR:r'./logs'  # 输出路径

步骤3:

data文件夹用来存放Market1501数据集

步骤4:

输入命令开始训练:

tools/train.py --config_file='configs/softmax_triplet.yml' MODEL.DEVICE_ID "('0')" DATASETS.NAMES "('market1501')" DATASETS.ROOT_DIR "(r'./data')" OUTPUT_DIR "('E:/ReID/logs')"=> Market1501 loadedDataset statistics: ---------------------------------------- subset | # ids | # images | # cameras ---------------------------------------- train | 751 | 12936 | 6 query | 750 | 3368 | 6 gallery | 751 | 15913 | 6 ----------------------------------------Loading pretrained ImageNet model......2022-02-18 16:17:54,983 reid_baseline.train INFO: Epoch[1] Iteration[1/1484] Loss: 7.667, Acc: 0.000, Base Lr: 3.82e-052022-02-18 16:17:55,225 reid_baseline.train INFO: Epoch[1] Iteration[2/1484] Loss: 7.671, Acc: 0.000, Base Lr: 3.82e-052022-02-18 16:17:55,436 reid_baseline.train INFO: Epoch[1] Iteration[3/1484] Loss: 7.669, Acc: 0.003, Base Lr: 3.82e-052022-02-18 16:17:55,646 reid_baseline.train INFO: Epoch[1] Iteration[4/1484] Loss: 7.663, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:55,856 reid_baseline.train INFO: Epoch[1] Iteration[5/1484] Loss: 7.663, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:56,069 reid_baseline.train INFO: Epoch[1] Iteration[6/1484] Loss: 7.658, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:56,277 reid_baseline.train INFO: Epoch[1] Iteration[7/1484] Loss: 7.654, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:56,490 reid_baseline.train INFO: Epoch[1] Iteration[8/1484] Loss: 7.660, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:56,699 reid_baseline.train INFO: Epoch[1] Iteration[9/1484] Loss: 7.653, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:56,906 reid_baseline.train INFO: Epoch[1] Iteration[10/1484] Loss: 7.651, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:57,110 reid_baseline.train INFO: Epoch[1] Iteration[11/1484] Loss: 7.645, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:57,316 reid_baseline.train INFO: Epoch[1] Iteration[12/1484] Loss: 7.643, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:57,526 reid_baseline.train INFO: Epoch[1] Iteration[13/1484] Loss: 7.644, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:57,733 reid_baseline.train INFO: Epoch[1] Iteration[14/1484] Loss: 7.638, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:57,942 reid_baseline.train INFO: Epoch[1] Iteration[15/1484] Loss: 7.634, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:58,148 reid_baseline.train INFO: Epoch[1] Iteration[16/1484] Loss: 7.630, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:58,355 reid_baseline.train INFO: Epoch[1] Iteration[17/1484] Loss: 7.634, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:58,564 reid_baseline.train INFO: Epoch[1] Iteration[18/1484] Loss: 7.627, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:58,770 reid_baseline.train INFO: Epoch[1] Iteration[19/1484] Loss: 7.629, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:58,980 reid_baseline.train INFO: Epoch[1] Iteration[20/1484] Loss: 7.624, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:59,186 reid_baseline.train INFO: Epoch[1] Iteration[21/1484] Loss: 7.619, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:59,397 reid_baseline.train INFO: Epoch[1] Iteration[22/1484] Loss: 7.614, Acc: 0.002, Base Lr: 3.82e-052022-02-18 16:17:59,605 reid_baseline.train INFO: Epoch[1] Iteration[23/1484] Loss: 7.608, Acc: 0.002, Base Lr: 3.82e-05··············································

 训练好以后会在logs文件中保存训练好的权重

注:

我使用的是softmax_triplet.yml,如果你用这个,只需要将该文件中的  PRETRAIN_PATH 预权重更改成你路径即可,由于我选择的是resnet50_ibn_a模型(模型的选择在ReID/config/defaults.py/中的_C.MODEL.NAME修改),因此PRETRAIN_PATH填写的是r50_ibn_2.pth权重,如果你选择的是resnet50网络,那么你的预权重也应该选择对应的权重【附上一些权重的官方链接】。代码里其实有自动下载权重地方,但有些人从pytorch官网下会导致网不好,如果通过自带url你能下载下来,权重会默认存在C盘下。所以我把代码改了一下,自己下载下来以后放自己项目中,加载的时候直接在配置文件中修改路径就行了。

'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth','resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth','resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',检测

进入person_search文件夹

检测图片:

将待检测图像放入query文件夹,在data/sampes/下放入需要检测图像或者视频【注意这里的待检测和query图像是不一样的,就好比你要从一堆图片或者视频中找一个人,你现在有了这个人的照片,就放入query中,那么程序就可以从sampers文件下的一堆图或者视频中检索到这个人】,

设置search.py。images是需要检测的图或者视频,dist_thres是ReID度量匹配中计算两个样本之间的距离,小于这个距离就说明相似度很高,这个需要根据不同的视频手动调试一下。

def detect(cfg, data, weights, images='data/samples', # input folder output='output', # output folder fourcc='mp4v', # video codec img_size=416, conf_thres=0.5, nms_thres=0.5, dist_thres=1.0, # 距离阈值 save_txt=False, save_images=True):

运行search.py

最终检索的结果会输出到output中【注意:如果在query中放入图片,命名格式需要和market1501一样】

检测视频:

query_get.py 中先设置好视频路径

运行后,按空格键(按帧)继续播放视频,按鼠标左键截图(图像会自动保存并自动命名到query文件下)

同样,将待检测视频放入data/samples中,设置好参数后运行search.py,会将检测后的结果输出到person_search/output文件中。

--------------------------------------------------------------------------------------------------------------------------------

【原代码修改说明】

engine文件夹: trainer.py主要是定义一些训练函数 在原代码的基础上增加了保存网络权重,原代码的权重是将优化器等参数设置都保存成权重,加载到原网络中是不需要这些的,会报keys错误,所以我直接保存网络权重,方便加载

modeling文件夹 baseline.py 如果对主干网络进行修改【方便以后魔改网络】,再加载权重的时候会报keys错误,所以增加了如下代码可以解决该问题 pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict.keys() == pretrained_dict.keys()}

代码和权重百度云:https://pan.baidu.com/s/1p5C5mCVxGK61_eYc7HHpHA  提取码:yypn 

或者访问github:https://github.com/YINYIPENG-EN/ReID.githttps://github.com/YINYIPENG-EN/ReID.git

这里还要再强调一下!!!训练中的ReID/config/defaults.py和person_search/reid/config/defaults.py配置文件有些不一样,在运行search.py文件中一定要注意一下,不然会报错!

本文链接地址:https://www.jiuchutong.com/zhishi/298348.html 转载请保留说明!

上一篇:“export ‘default‘ (imported as ‘VueRouter‘) was not found in ‘vue-router‘报错分析(defaultpool)

下一篇:css 实现太极效果(简单的css特效)

  • 红米note11pro屏幕多大(红米note11pro屏幕怎么样)

    红米note11pro屏幕多大(红米note11pro屏幕怎么样)

  • ipad2021怎么分屏一半而不是悬浮(ipad2021怎么分屏操作)

    ipad2021怎么分屏一半而不是悬浮(ipad2021怎么分屏操作)

  • 苹果11怎么所有都静音了(苹果11全部设置)

    苹果11怎么所有都静音了(苹果11全部设置)

  • 怎么看q龄多长时间了(咋个看q龄)

    怎么看q龄多长时间了(咋个看q龄)

  • 小爱同学支持哪些手机(小爱同学支持哪些家电)

    小爱同学支持哪些手机(小爱同学支持哪些家电)

  • WPS图片怎么居中(wps图片怎么居中在整个页面最中间)

    WPS图片怎么居中(wps图片怎么居中在整个页面最中间)

  • 微信群同时拉人按什么排序(微信群拉人怎么设置同意或不同意)

    微信群同时拉人按什么排序(微信群拉人怎么设置同意或不同意)

  • 充电器上面的金属片变黑了(充电器上面的金属片有小坑)

    充电器上面的金属片变黑了(充电器上面的金属片有小坑)

  • 小米9最高支持多少w(小米9最高支持多少瓦快充)

    小米9最高支持多少w(小米9最高支持多少瓦快充)

  • hifi音质是什么意思(hifi音质是什么格式)

    hifi音质是什么意思(hifi音质是什么格式)

  • 手机可以登两个微信吗(手机可以登两个千牛账号吗)

    手机可以登两个微信吗(手机可以登两个千牛账号吗)

  • 京东618购物节什么时间开始(京东618活动时间)

    京东618购物节什么时间开始(京东618活动时间)

  • iphonese2是双卡双待么(苹果se2是双卡双待)

    iphonese2是双卡双待么(苹果se2是双卡双待)

  • 华为mate30手机丢了怎么定位找回(华为mate30手机丢了怎么找回)

    华为mate30手机丢了怎么定位找回(华为mate30手机丢了怎么找回)

  • oppoa11x是闪充吗(oppoa11x有闪充吗)

    oppoa11x是闪充吗(oppoa11x有闪充吗)

  • 手环离线支付原理(手环离线支付原理视频)

    手环离线支付原理(手环离线支付原理视频)

  • 手机截不了屏怎么回事(手机截不了屏咋办)

    手机截不了屏怎么回事(手机截不了屏咋办)

  • 视频源格式错误怎么解决(视频源格式错误怎么办qq浏览器)

    视频源格式错误怎么解决(视频源格式错误怎么办qq浏览器)

  • 手机屏幕有划痕还能贴膜吗(手机屏幕有划痕怎么修复)

    手机屏幕有划痕还能贴膜吗(手机屏幕有划痕怎么修复)

  • 天马屏是什么意思(天马屏优缺点)

    天马屏是什么意思(天马屏优缺点)

  • 视频1080p是什么意思(视频1080p是什么分辨率)

    视频1080p是什么意思(视频1080p是什么分辨率)

  • bkk一al00是什么型号(bkk一al00是什么手机)

    bkk一al00是什么型号(bkk一al00是什么手机)

  • 小爱音箱怎么改唤醒词(小爱音箱怎么改音乐播放源)

    小爱音箱怎么改唤醒词(小爱音箱怎么改音乐播放源)

  • 360手机开机是新闻资讯怎么解除(360手机开不了机一直就显示360怎么回事?)

    360手机开机是新闻资讯怎么解除(360手机开不了机一直就显示360怎么回事?)

  • 不怕分手你才不会分手(分手我不怕)

    不怕分手你才不会分手(分手我不怕)

  • vue3和vue2 的区别,vue3和vu2到底哪个好呢?(vue2跟vue3)

    vue3和vue2 的区别,vue3和vu2到底哪个好呢?(vue2跟vue3)

  • 利用织梦(dedecms)如何仿站(如何用织梦在本地搭建网站)

    利用织梦(dedecms)如何仿站(如何用织梦在本地搭建网站)

  • 劳动合同扣税太狠了吧
  • 股东权益合计在报表哪里看
  • 以前年度多缴的税款退回现金流量
  • 一般纳税人废业怎么办
  • 其他应付款款
  • 审计人员的差旅费放在哪核算
  • 销项发票采集不出来怎么回事
  • 专票抵扣是税额吗
  • 源泉扣缴税率是多少
  • 税控盘产生的费用可以抵扣吗
  • 固定资产折旧计入成本还是费用
  • 列入工资的补贴是什么
  • 购进电费管理费会计分录
  • 银行承兑汇票贴现
  • 收到红字发票后怎么做账
  • 资产负债表日后调整事项会计处理
  • 企业旅行社名字怎么取
  • 鸿蒙系统支持第三方相机吗
  • win11系统怎么投屏
  • 企业发放职工薪酬属于资金的运用
  • lsm.exe是什么程序
  • 银行汇票属于银行存款吗
  • react的前端
  • react 刷新
  • grid-column
  • 使用php进行mysql数据库编程的基本步骤
  • vue treegrid
  • php读写xml
  • 预缴2%
  • etc充值卡发票可以入账吗
  • 企业所得税汇算清缴时间
  • 电子发票如何发邮箱给别人
  • 差旅费报销金额大于实际发生金额
  • 一般计税和简易计税可以合并征税吗
  • 商业折扣影响销售成本吗
  • 企业当年实现的利润属于哪类会计科目
  • 个体工商户营业执照注销流程
  • 企业所得税季度申报表怎么填
  • 印花税怎么用
  • 房地产企业增值税预征率
  • 分支机构注销后往来账如何处理?
  • 中级财务会计计算题
  • 其他应付款如何清零
  • 政府扶持资金的优缺点
  • 股权转让如何计算股权原值
  • 私车公用涉及的税种有哪些
  • 外汇汇兑损益财务处理
  • 设计费可以一次支付吗
  • 按工人工资比例结转制造费用会计科目
  • 以前年度损益调整结转到哪里
  • 产权转移书据纳税义务时间
  • 解除职工劳动关系补偿
  • 公司市场部职能
  • 外卖占比总营业额怎么算
  • 什么是增资扩股协议
  • MySQL 5.7.14 net start mysql 服务无法启动-“NET HELPMSG 3534” 的奇怪问题
  • Windows任务栏中的活动程序间不能切换对吗
  • centos安装位置选择
  • fedora安装xorg
  • windowxp一直在windowxp界面
  • win7系统连接wifi无法连接到internet
  • 笔记本用linux系统
  • vim 多窗口启动以及相互切换
  • office解压后如何安装
  • win7怎么更改系统字体大小
  • ecmascript6入门
  • android ndk cmake
  • 批处理模式的例子
  • 生成0-100的随机数,直到生成88为止,停止循环
  • linux命令统计
  • js怎么获取复选框选中的值
  • c#委托实现的步骤
  • 一款简单的网络版多媒体课件制作软件是什么
  • 火狐浏览器不支持弹出对话框操作
  • 置顶聊天折叠怎么关闭
  • 广东电子税务局手机版
  • 增值税是要上交给国家的吗?
  • 酒店退房不到退房时间
  • 本期应纳的增值税
  • 包装种类代码表集装箱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设