提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
尝试一下用mmyolo在最新的1.2.0版本的mmpose中进行自顶向下的估计。
一、在MMpose中下载MMyolo
mim install “mmyolo”
二、下载权重及模型,以YOLOv5s为例
放到MMpose任意位置当中
放入到MMpose中的demo当中
三、在MMyolo中下载default_runtime和det_p5_tta
放入到MMpose config/_base_当中,把MMyolo下载到的default_runtime改一下名称(我这里改为default_runtime2)
四、修改模型的路径
回到刚刚下载的yolov5模型
在yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py文件当中修改_base_路径
_base_ = '你自己的路径/demo/mmyolo/yolov5_s-v61_syncbn_8xb16-300e_coco.py'
在yolov5_s-v61_syncbn_8xb16-300e_coco.py文件当中修改_base_路径
_base_ = ['你自己的路径/configs/_base_/default_runtime2.py',
'你自己的路径/configs/_base_/det_p5_tta.py']
五、在topdown_demo_with_mmdet.py中运行
首先引入
from mmengine.registry import init_default_scope
在process_one_image中加入代码
def process_one_image(args,
img,
detector,
pose_estimator,
visualizer=None,
show_interval=0):
"""Visualize predicted keypoints (and heatmaps) of one image."""
# predict bbox
init_default_scope(detector.cfg.get('default_scope', 'mmyolo')) # 新加的
det_result = inference_detector(detector, img)
pred_instance = det_result.pred_instances.cpu().numpy()
bboxes = np.concatenate(
(pred_instance.bboxes, pred_instance.scores[:, None]), axis=1)
bboxes = bboxes[np.logical_and(pred_instance.labels == args.det_cat_id,
pred_instance.scores > args.bbox_thr)]
bboxes = bboxes[nms(bboxes, args.nms_thr), :4]
# predict keypoints
pose_results = inference_topdown(pose_estimator, img, bboxes)
data_samples = merge_data_samples(pose_results)
# show the results
if isinstance(img, str):
img = mmcv.imread(img, channel_order='rgb')
elif isinstance(img, np.ndarray):
img = mmcv.bgr2rgb(img)
if visualizer is not None:
visualizer.add_datasample(
'result',
img,
data_sample=data_samples,
draw_gt=False,
draw_heatmap=args.draw_heatmap,
draw_bbox=args.draw_bbox,
show_kpt_idx=args.show_kpt_idx,
skeleton_style=args.skeleton_style,
show=args.show,
wait_time=show_interval,
kpt_thr=args.kpt_thr)
# if there is no instance detected, return None
return data_samples.get('pred_instances', None)
这样就可以用YOLOv5模型做自顶向下的人姿态估计了
六、效果
上图是用FaterRCNN得到的检测框,下图使用YOLOv5得到的检测框