口罩识别

1.用下面的命令打开文件可以自动调用f.close,就算读取文件出错也不怕关不掉文件
with open('test.txt', 'r') as f: test_img_path=[]

2.问题 Matplotlib is currently using agg, which is a non-GUI backend 和 ImportError: No module named 'Tkinter' [closed]

解决:

import matplotlib

matplotlib.use('TkAgg')

import matplotlib.pyplot as plt

3.opencv版本

在 cmd 里面输入 pip list ,然后回车,找到有 opencv-python 的这一行,后面括号里就是版本号。

4.3.0.36

4.nice 教学

https://blog.csdn.net/PaddlePaddle/article/details/104509297

5.列表里有字典如何引用

for i in a:

  for key,value in i.items():

    print(key,value)

6.https://blog.csdn.net/XCCCCZ/article/details/104446803 同样是教学

7.关于服务器请求的教学 https://cloud.tencent.com/developer/article/1479550

8.一个特殊的格式:

  file_list = ["kouzhao.png","asd.png"]
  files = [("image", (open(item, "rb"))) for item in file_list]  以二进制形式打开文件
  结果:[('image', <_io.BufferedReader name='kouzhao.png'>), ('image', <_io.BufferedReader name='asd.png'>)]
9.官方对于一键部署的解释
  https://aistudio.baidu.com/aistudio/projectdetail/267322
10.官方对于口罩模型一键部署的手把手教学(正确写法)
  https://paddlepaddle.org.cn/hubdetail?name=pyramidbox_lite_server_mask&en_category=FaceDetection
11.Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。
优点:速度快,ascii字符,肉眼不可理解
缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合
Python中进行Base64编码和解码
  >>> import base64
  >>> s = '我是字符串'
  >>> a = base64.b64encode(s)
  >>> print a
  ztLKx9fWt/u0rg==
  >>> print base64.b64decode(a)
  我是字符串
12.json.dumps()
  json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据
  写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

13.OS用法

  if not os.path.exists("output"):  如果文件夹不存在

    os.mkdir("output")     就创建文件夹

14.配置文件启动服务端

  hub serving start --config config.json

  https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md lac的

  https://paddlepaddle.org.cn/hubdetail?name=pyramidbox_lite_server_mask&en_category=FaceDetection 口罩的

15.视频流口罩检测

  https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo/mask_detection

下面是基于python的部署,直接下载模型然后进行预测(特别好用!!)

  https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.5/demo/mask_detection/python/README.md

16.部署提问的好地方

  https://github.com/PaddlePaddle/PaddleHub/issues?page=2&q=is%3Aissue+is%3Aopen

17.视频流demo

  https://github.com/PaddlePaddle/PaddleHub/blob/255b68143e750951195829ff21207e33b863092b/demo/mask_detection/mask_detection.py#L98

18.服务端启动命令后台运行

  https://blog.csdn.net/jiangyu1013/article/details/81476184?      ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159625968919195264519670%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159625968919195264519670&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~rank_business_v1-1-81476184.ecpm_v3_rank_business_v1&utm_term=nohup&spm=1018.2118.3001.4187+

19树莓派上口罩检测

  1.口罩c++在树莓端的部署https://blog.csdn.net/PaddlePaddle/article/details/105721400

  2.大三学生的瓶子 https://baidudanao.blog.csdn.net/article/details/106416612

  3.口罩python在树莓端的部署https://my.oschina.net/u/4067628/blog/3224946/print

  4.官方对Paddle Lite部署 的python教程

  5.官方对opt的教学https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html

    Successfully installed paddlelite-2.6.1

  6.大佬部署树莓派加视频流检测c++(csdn提了问题等待回复)https://blog.csdn.net/PaddlePaddle/article/details/105721400

  7.python DEMO对paddle-lite https://paddle-lite.readthedocs.io/zh/latest/demo_guides/python_demo.html

  8.神仙链接 最新版lite和1.3口罩 移动端部署

20.树莓派部署细节

  (1)combined形式:模型文件夹model_dir下只有一个模型文件__model__和一个参数文件__params__时,传入模型文件和参数文件路径

  (2)用文件__model__和__params__转化出.np文件

  1. import paddlelite.lite as lite  
  2. a=lite.Opt()  
  3. # 非combined形式  
  4. a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1")  
  5. # conmbined形式  
  6. # a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__")  
  7. # a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__")  
  8. a.set_optimize_out("mobilenet_v1_opt")  
  9. a.set_valid_places("x86")  
  10. a.run() 

  (3)编写预测程序

  https://paddle-lite.readthedocs.io/zh/latest/demo_guides/python_demo.html

   (4)./是当前目录 2、../是父级目录

   (5)LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径;

   (6)很牛的一个远程部署教程,还未看,但是应该能用https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo/serving/module_serving/object_detection_pyramidbox_lite_server_mask

      (7)树莓派通过服务器请求是出现connectionError  改个ip地址就好了。找到USER_089910的ipv4

地址192.168.1.13 换成这个就可以了

 21.算法的一些小知识点

1.import pandas as pd pd.isnull(x)  判断是否为空(不知为何无效),在对result返回的空白结果进行判断时

 

 22.算法流程

1.有个专门发送请求的方法,输入参数为帧,返回为results。 

2.有个专门处理帧的方法,输入参数为帧和results,返回的是处理好后要显示的帧。(加方框和mask)

3.display_video_stream(self)中,展示视频帧

4.不要在每个方法中的变量都用self创建,因为函数的执行这里还有顺序的,还是通过参数输入,再返回的形式比较好

5.实际应用流程: 人走过来,俩种情况:戴口罩and没戴口罩  若是带了口罩,帧显示检测到人脸,且戴了口罩,显示文本,正常通过

若文本跳成了正常通过(经过滤波),则文本就显示为通过,打印到窗口。 然后下一步就应该是未检测到人脸

6.原则是,最开始文字显示请将您的帅脸靠近我们取25帧,大概30*25=750毫秒,发现有20帧即以上是戴口罩则确定为戴口罩的,则文字显示

 

18.在树莓派端部署paddle-lite python

讲了如何将原来的paddle-lite demo 改为自己的模型

https://blog.csdn.net/qq_45779334/article/details/106715597 

 

posted on 2020-07-29 10:36  努力学习的小黑  阅读(659)  评论(0)    收藏  举报