yolo模型提取推理部分代码到一个单独的脚本教程

三个部分

1模型载入

2图片经过怎样处理,预处理

3图片后处理,前向传播

colors = [[random.randint(0, 255) for _ in range(3)] for _ in names]

img = cv2.imread('1.jpg')
image, ratio, dwdh = letterbox(img, auto=False)
image = image.transpose((2, 0, 1))[::-1]
image = np.expand_dims(image, 0)
image = np.ascontiguousarray(image)

im = torch.from_numpy(image).float()
im /= 255
print(im.shape)
  1. 创建一个二维数组colors,其中包含了名字names的长度个列表,每个列表包含三个随机生成的0到255之间的整数。

  2. 使用OpenCV库的imread函数读取名为'1.jpg'的图像,并存储在变量img中。

  3. 调用名为letterbox的函数,对img进行处理,并将结果存储在变量image中。这个函数可能是用来调整图片大小以适应某个特定尺寸的工具函数。

  4. 将image的维度转置为(2, 0, 1),并沿纵轴进行翻转。

  5. 使用numpy的expand_dims函数在第0维上添加一个维度。

  6. 使用numpy的ascontiguousarray函数将数组转换为连续的内存布局。

  7. 使用torch.from_numpy函数将数组转换为torch的张量。

  8. 将im的数值范围从0到255归一化到0到1。
     

    model = torch.jit.load(r'weight/yolov7_tiny.pt')
    result = model(im)[0]
    result = non_max_suppression(result, 0.5, 0.65)[0]
    result[:, :4] = scale_coords(im.shape[2:], result[:, :4], img.shape)
    
    for *xyxy, conf, cls in result:
        label = f'{names[int(cls)]} {conf:.2f}'
        plot_one_box(xyxy, img, label=label, color=colors[int(cls)], line_thickness=1)
        
    cv2.imshow('image', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

  9. 使用torch.jit.load函数加载名为'yolov7_tiny.pt'的模型,并将其存储在变量model中。

  10. 使用加载的模型model对im进行推断,得到输出结果,存储在变量result中。

  11. 使用非极大值抑制(non_max_suppression)函数对result进行处理,去除低置信度的预测框,保留高置信度的预测框,并将结果存储在result中。

  12. 使用scale_coords函数将result中预测框的坐标缩放到原始图像的尺寸上。

  13. 对每个预测框执行以下操作: - 获取预测框的坐标(xyxy)、置信度(conf)和类别(cls)。 - 根据类别索引cls获取对应的类别名字,并结合置信度生成label。 - 使用plot_one_box函数在img上绘制包围预测框的矩形框,并显示label,设置框的颜色为对应类别的颜色,设置框的线宽为1。

  14. 使用cv2.imshow函数显示img图像。

  15. 使用cv2.waitKey函数等待用户按下任意键。

  16. 使用cv2.destroyAllWindows函数关闭所有打开的窗口。
    视频链接YoloV7-pyqt5 2. 导出模型的讲解和避坑、如何把推理代码整合成一个class的讲解_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值