我是靠谱客的博主 壮观皮带,最近开发中收集的这篇文章主要介绍pytorch 实时物体检测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

使用了pytorch自己提供的maskrcnn_resnet50_fpn,也就是说,不过是调用人家训练好的代码而已,当个玩具了,供大家参考。

github项目

其实主要的代码量在结果的显示上,并不是模型的调用上。
这个是github项目链接.
效果:
在这里插入图片描述

实现思路

模型调用,这个就不必细说了。

  • 使用opencv读图片
  • 然后转化成torch能吃进去的数据,
  • input到模型中,得到返回值。根据模型的返回值,一一把label标注到原图片中
  • 然后显示图片

下面的是主要代码:
不能直接运行,只是思路,完整的项目在前面已经给出。

id2name作用是把模型返回值id直接映射到他的类型。
colors是用彩色标注不同类型的框框和字体,便于查看。

import torchvision
from torchvision import transforms
from utils import *
import torch

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

win_name='detect'

# download model
model=torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)

# read image and transform it
trans=transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize([0,0,0],[1,1,1])
])


model=model.eval()
model=model.to(device)
cam = cv2.VideoCapture(0)

# 80 classes in total
id2name=GetClass()
# prepare colors for every boxes
colors=np.random.randint(0, 255,(len(id2name),1,3))

with torch.no_grad():
    while True:
        ret, original = cam.read()
        # cv2.imshow(win_name, mat)
        mat = np.array(cv2.cvtColor(original, cv2.COLOR_BGR2RGB))
        frame = trans(mat).unsqueeze(0)
        frame=frame.to(device)
        prediction = model(frame)
        try:
            labels = prediction[0]['labels']
            boxes = prediction[0]['boxes']
            scores = prediction[0]['scores']

            ShowPicResult(original, win_name, scores, labels, boxes,id2name,colors,False)
        except :
            print('something went wrong!')
        if cv2.waitKey(20) & 0xFF == ord('q'):
            break

    cam.release()
    cv2.destroyAllWindows()

一些项目说明

  • 毕竟是图像的应用,所以,最好电脑上装了N卡的cuda套件,不然实时不了,因为太慢了。
  • maskrcnn本身使用coco的训练集,这个训练集的id和对应种类不是直接对应的,具体的对应关系我在博客中也有说明,具体看这里。
  • 这个项目是需要启用摄像头的,没有摄像头的电脑的同学可以改改代码,用上自己的视频。

最后

以上就是壮观皮带为你收集整理的pytorch 实时物体检测的全部内容,希望文章能够帮你解决pytorch 实时物体检测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部