【资源介绍】
基于RK3588上部署yolov5s模型源码(实时摄像头检测)+部署说明文档.zip
该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。
该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。
项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。
yolov5模型(.pt)在RK3588(S)上的部署(实时摄像头检测)
- 所需:
- 安装了Ubuntu20系统的RK3588
- 安装了Ubuntu18的电脑或者虚拟机
<details>
<summary>一、yolov5 PT模型获取</summary>
[Anaconda教程](https://blog.csdn.net/qq_25033587/article/details/89377259)\
[YOLOv5教程](https://zhuanlan.zhihu.com/p/501798155)\
经过上面两个教程之后,你应该获取了自己的`best.pt`文件
</details>
<details>
<summary>二、PT模型转onnx模型</summary>
- 将`models/yolo.py`文件中的`class`类下的`forward`函数由:
```python
def forward(self, x):
z = [] # inference output
for i in range(self.nl):
x[i] = self.m[i](x[i]) # conv
bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85)
x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
if not self.training: # inference
if self.dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]:
self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i)
if isinstance(self, Segment): # (boxes + masks)
xy, wh, conf, mask = x[i].split((2, 2, self.nc + 1, self.no - self.nc - 5), 4)
xy = (xy.sigmoid() * 2 + self.grid[i]) * self.stride[i] # xy
wh = (wh.sigmoid() * 2) ** 2 * self.anchor_grid[i] # wh
y = torch.cat((xy, wh, conf.sigmoid(), mask), 4)
else: # Detect (boxes only)
xy, wh, conf = x[i].sigmoid().split((2, 2, self.nc + 1), 4)
xy = (xy * 2 + self.grid[i]) * self.stride[i] # xy
wh = (wh * 2) ** 2 * self.anchor_grid[i] # wh
y = torch.cat((xy, wh, conf), 4)
z.append(y.view(bs, self.na * nx * ny, self.no))
return x if self.training else (torch.cat(z, 1),) if self.export else (torch.cat(z, 1), x)
```
改为:
```python
def forward(self, x):
z = [] # inference