使用OpenCV部署yolov8检测人脸和关键点,包含C++和Python两个版本的程序,只依赖opencv库就可以运行。
训练源码是https://github.com/derronqi/yolov8-face 如果想做车牌检测4个角点,那就把检测5个人脸关键点改成4个
此外,添加了人脸质量评估模型fqa,需要结合人脸检测来使用,对应的程序是main_fqa.py和main_fqa.cpp
使用OpenCV部署yolov8检测人脸和关键点以及人脸质量评价,包含C++和Python两个版本的程序,只依赖opencv库就可以运行,彻底摆脱对任何深度学习框架的依赖。
使用OpenCV部署yolov8检测人脸和关键点,包含C++和Python两个版本的程序,只依赖opencv库就可以运行。
训练源码是https://github.com/derronqi/yolov8-face 如果想做车牌检测4个角点,那就把检测5个人脸关键点改成4个
此外,添加了人脸质量评估模型fqa,需要结合人脸检测来使用,对应的程序是main_fqa.py和main_fqa.cpp
我想请教一下如何获得被识别物体的类别,我用cls_id但得到的不是正确的数字,谢谢
Ubuntu 20.04 系统,OpenCV尝试了4.5.5版本和4.7版本,验证了模型文件.onnx无错误,在使用onnxruntime和main.cpp两种部署方式时均返回下述报错
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.5.5) /home/hou/opencv-4.5.5/modules/dnn/src/onnx/onnx_importer.cpp:709: error: (-215:Assertion failed) model_proto.has_graph() in function 'populateNet'
已放弃 (核心已转储)
大佬知道这是什么原因吗
我用export 导出yolov8n-face到onnx没问题,但是yolov8-lite-s and yolov8-lite-t就报错,大佬你是咋导出的呀
yolo mode=export model=yolov8-lite-s.pt format=onnx simplify=True batch=1
Traceback (most recent call last):
File "/home/pcb/.local/bin/yolo", line 8, in
sys.exit(entrypoint())
File "/home/pcb/.local/lib/python3.8/site-packages/ultralytics/yolo/cfg/init.py", line 378, in entrypoint
model = YOLO(model, task=task)
File "/home/pcb/.local/lib/python3.8/site-packages/ultralytics/yolo/engine/model.py", line 107, in init
self._load(model, task)
File "/home/pcb/.local/lib/python3.8/site-packages/ultralytics/yolo/engine/model.py", line 156, in _load
self.model, self.ckpt = attempt_load_one_weight(weights)
File "/home/pcb/.local/lib/python3.8/site-packages/ultralytics/nn/tasks.py", line 578, in attempt_load_one_weight
ckpt, weight = torch_safe_load(weight) # load ckpt
File "/home/pcb/.local/lib/python3.8/site-packages/ultralytics/nn/tasks.py", line 518, in torch_safe_load
return torch.load(file, map_location='cpu'), file # load
File "/home/pcb/.local/lib/python3.8/site-packages/torch/serialization.py", line 607, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "/home/pcb/.local/lib/python3.8/site-packages/torch/serialization.py", line 882, in _load
result = unpickler.load()
File "/home/pcb/.local/lib/python3.8/site-packages/torch/serialization.py", line 875, in find_class
return super().find_class(mod_name, name)
AttributeError: Can't get attribute 'StemBlock' on <module 'ultralytics.nn.modules' from '/home/pcb/.local/lib/python3.8/site-packages/ultralytics/nn/modules/init.py'>
能不能出一期yolov8目标追踪的c++ onnxruntime部署方法呀
大佬,你试过tensorrt加速吗,如果要使用tensorrt,应该怎么处理呀
控制台输出如下:
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Windows\SYSTEM32\opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Windows\SYSTEM32\opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Windows\SYSTEM32\opencv_core_parallel_openmp470_64d.dll => FAILED
[ INFO:[email protected]] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_openmp470_64d.dll => FAILED
Hi,Could you provide the reference of the fqa model (face-quality-assessment.onnx)?
I find the output of model has 10 dimensions, is there any introduction?
THX~
我用yolov8-face训练出来的 关键点只有4个的模型 在pytorch上跑的坐标都是正确的
但是在dnn调用后的坐标混乱
也可能是关键点相关代码需要特殊修改?
图片无人脸情况下,cv2.dnn.NMSBoxes输出的indices是空的tuple()。
有人脸情况下输出的是array([2])。
所以if len(indices) > 0: 判断这里是无效的,会在上一句直接报错。烦请修改一下
main.py
and getting this error.yolov8-face-landmarks-opencv-dnn on main via 🐍 v3.8.10
❯ py main.py
Traceback (most recent call last):
File "main.py", line 171, in <module>
boxes, scores, classids, kpts = YOLOv8_face_detector.detect(srcimg)
File "main.py", line 75, in detect
det_bboxes, det_conf, det_classid, landmarks = self.post_process(outputs, scale_h, scale_w, padh, padw)
File "main.py", line 92, in post_process
bbox = self.distance2bbox(anchors, bbox_pred, max_shape=(self.input_height, self.input_width)) * stride
File "main.py", line 134, in distance2bbox
x1 = points[:, 0] - distance[:, 0]
ValueError: operands could not be broadcast together with shapes (6400,) (1600,)
您好,现有代码是基于CPU的版本,请问如何将其修改为基于GPU的版本?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.