From d6e0318f91ca05bafe5cd56cdfc1fb43ad0b06ad Mon Sep 17 00:00:00 2001 From: ken4647 Date: Sun, 23 Oct 2022 13:07:21 +0800 Subject: [PATCH] Readme Update --- README.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e9234c8..c3fcf18 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,34 @@ ## 程序余API介绍 ->主要的程序接口(API)全部位于detect.py和param.py两个文件中。 +>主要的程序接口(API)全部位于detect.py和param.py两个文件中。在输入接口 `detect(self,imgs:torch.Tensor) -> list`的输入变量类型是torch的张量类型,可以通过opencv的`cv2.imread()`或者`capture.read()`读取得到numpy数组(array)类型,然后通过`torch.Tensor()`或者`torchvision.transforms`进行类型转换。图片尺寸必须是方形,即W=H,如果不是建议先通过resize和pad操作进行变换;如果是单张图片,输入模型前必须扩充维数,可以使用Tensor的`unsqueeze(dim=0)`方法进行(即扩充第一维度),实现的伪代码如下: + +```python +raw_img = cv2.imread(path_src) # 读取单张图片,path_src处填写图片路径 +raw_transform = transforms.Compose([transforms.ToPILImage(), + transforms.Resize((360,640)), + transforms.Pad((0,(640-360)//2)), + transforms.ToTensor()]) +return raw_transform(raw_img).unsqueeze(dim=0) +``` + +>如果是读取视频只需按opencv读取视频的方法进行即可: + +```python +capture = cv2.VideoCapture(path_src) # 读取摄像头为cv2.VideoCapture(index),index是相机索引,通常为0即可;读取视频文件时path_src填写路径即可 +raw_transform = transforms.Compose([transforms.ToPILImage(), + transforms.Resize((360,640)), + transforms.Pad((0,(640-360)//2)), + transforms.ToTensor()]) # 预先组合好的变换函数 +ret,frame = capture.read() +while ret is not None: + frame_tensor = raw_transform(frame).unsqueeze(dim=0) # 由于输入的是单张图片,需要在dim=0进行维数扩充,由(C,H,W)到(1,C,H,W),总尺寸大小其实不会发生改变 + # your coder for detection + # ... + + ret,frame = capture.read() +capture.release() +``` ### 检测模块:detect.py @@ -88,3 +115,9 @@ if __name__ == '__main__': ### 输出图片 ![avatar](result.png) + +### 参考链接 + +[YOLOv7官方实现-github](https://github.com/WongKinYiu/yolov7) + +[YOLOv7论文-arxiv](https://arxiv.org/abs/2207.02696)