本专栏用于记录关于深度学习的笔记,不光方便自己复习与查阅,同时也希望能给您解决一些关于深度学习的相关问题,并提供一些微不足道的人工神经网络模型设计思路。
专栏地址:「深度学习一遍过」必修篇
目录
项目 GitHub 地址
项目结果展示

项目代码
utils.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
# ------------------------------------------------- #
# 作者:赵泽荣
# 时间:2021年9月26日(农历八月二十)
# 个人站点:1.https://zhao302014.github.io/
# 2.https://blog.youkuaiyun.com/IT_charge/
# 个人GitHub地址:https://github.com/zhao302014
# ------------------------------------------------- #
import cv2
import torch
import numpy as np
import torchvision
'''
创建一个“人体姿态估计器”类
'''
class ConvolutionalPoseMachine(object):
def __init__(self, pretrained=False):
# 是否使用 maskrcnn_resnet50_fpn 预训练模型,true 为使用,false 为不使用,默认为 false
self._maskrcnn = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=pretrained)
# 是否使用 keypointrcnn_resnet50_fpn 预训练模型,true 为使用,false 为不使用,默认为 false
self._keypointrcnn = torchvision.models.detection.keypointrcnn_resnet50_fpn(pretrained=pretrained)
# 是否使用 fasterrcnn_resnet50_fpn 预训练模型,true 为使用,false 为不使用,默认为 false
self._fasterrcnn = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=pretrained)
# 如果 GPU 存在,则转为 cuda 运行
if torch.cuda.is_available():
self._maskrcnn = self._maskrcnn.cuda()
self._keypointrcnn = self._keypointrcnn.cuda()
self._fasterrcnn = self._fasterrcnn.cuda()
# 将模型转为验证模式
self._maskrcnn.eval()
self._keypointrcnn.eval()
self._fasterrcnn.eval()
def __call__(self, image, masks=True, keypoints=True, boxs=True):
# 调用下面定义的 _transform_image 方法传入 image,将 image 转为 tensor 格式
x = self._transform_image(image)
# 如果 GPU 存在,则转为 cuda 运行
if torch.cuda.is_available():
x = x.cuda()
# 若 masks 为 True 则进行掩膜操作,否则不执行此语句,默认为 True
m = self._predict_masks(x) if masks else [None]
# 若 keypoints 为 True 则进行关键点检测操作,否则不执行此语句,默认为 True
k = self._predict_keypoints(x) if keypoints else [None]
# 若 boxes 为 True 则进行关键点检测操作,否则不执行此语句,默认为 True
b = self._predict_boxes(x) if boxs else [None]
# 以 “键值对” 形式返回掩膜及关键点检测结果(注:m、k、b 为列表,要获取的是列表里的值,故 “[0]”)
return {'maskrcnn': m[0], 'keypointrcnn': k[0], 'fasterrcnn': b[0]}
# 定义转换 image 格式函数
def _transform_image(self, image):
# 返回值:将图像由 numpy 格式转为 tensor 格式
return torchvision.transforms.ToTensor()(image)
# 定义掩膜预测函数
def _predict_masks(self, x):
# 被包含部分不进行梯度计算
with torch.no_grad():
# 返回值:
深度学习实践:人体姿态估计与目标检测

本教程介绍了如何使用预训练的深度学习模型进行人体姿态估计和目标检测,包括Mask R-CNN、Keypoint R-CNN和Faster R-CNN。提供了从图像到掩模、关键点和边界框的转换方法,以及绘制结果的实用函数。通过Python代码实现,适用于视频和摄像头输入。
https://github.com/zhao302014/Classic_model_examples/tree/main/2017_Mask-RCNN_TargetDetectionAndSegmentation
最低0.47元/天 解锁文章
2万+





