增加YoLov5检测功能

目前能够识别人脸和情绪,在学习过程中,希望检测环境中的手机等电子设备的使用情况,来评估整体学习环境。

目前想法是将图片载入yolov5网络中进行识别,但是可能会存在一个检测到物品后的标记框颜色跳动的问题。暂时想到的解决办法是将标记的颜色设定为特定顺序,避免在持续跳动的问题(可能依然会存在识别物体发生变化时,颜色闪烁的情况)。

模型部署

模型导入debug

模型部署中,首先遇到的一个问题还是python导入包的问题,不太明白为什么有时候又检测不到包了。

实际的问题是这样的:有一个如下的文件的目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
│  demo.py

├─models
│ │ common.py
│ │ experimental.py
│ │ yolo.py
│ │ yolov5l.yaml
│ │ yolov5m.yaml
│ │ yolov5s.yaml
│ │ yolov5x.yaml
│ │
│ └─__pycache__
│ common.cpython-37.pyc
│ experimental.cpython-37.pyc

├─samples
│ └─images
│ bus.jpg
│ dog.jpg
│ eagle.jpg
│ giraffe.jpg
│ horses.jpg
│ none.jpg
│ person.jpg
│ zidane.jpg

├─utils
│ activations.py
│ autoanchor.py
│ datasets.py
│ general.py
│ google_utils.py
│ metrics.py
│ plots.py
│ torch_utils.py

└─YoloV5Detector
│ V5Detector.py
│ __init__.py

└─__pycache__
V5Detector.cpython-37.pyc
__init__.cpython-37.pyc

然后是models\common.py需要导入utils\datasets.py,直接在最外层运行main.py会出现导入不了,报错的情况。

1
2
3
# models.common.py 中进行导入
from utils.datasets import letterbox
ModuleNotFoundError: No module named 'utils.datasets'

最后问题解决,有一点小小的离谱,这个utils和CV2里面的utils是冲突了,吧这个utils改成yolo_utils,游戏结束。

安装pyaudio出问题

错误提示为: error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"

但是根据其给的网站安装相关的工具,并且重启后还没有解决问题。

最后解决问题的办法是:上官网下载whl文件,安装后就好了。主要参考了这个博客:Python中Pyaudio安装失败的解决办法_段云oO的博客-CSDN博客_pyaudio安装失败

参考资料

Tips

  • 如果带有中文字符,会使OpenCV的cv2.imread()函数读取不了待检测图片或视频