当前位置: 首页 > news >正文

网站页面开发流程企业营销策划案例

网站页面开发流程,企业营销策划案例,建设贷款网站哪家好,wordpress绿色中文主题yolov5 opencv dnn部署 github代码 源码地址实现推理源码中作者的yolov5s.onnx推理条件python部署(因为python比较简单就直接介绍了)c部署 参考链接 源码地址 yolov5官网还提供的dnn、tensorrt推理链接本人使用的opencv c github代码,代码作者非本人#xff0c;也是上面作者推… yolov5 opencv dnn部署 github代码 源码地址实现推理源码中作者的yolov5s.onnx推理条件python部署(因为python比较简单就直接介绍了)c部署 参考链接 源码地址 yolov5官网还提供的dnn、tensorrt推理链接本人使用的opencv c github代码,代码作者非本人也是上面作者推荐的链接之一 实现推理源码中作者的yolov5s.onnx 推理条件 实现推理code中作者的yolov5s.onnx windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv 4.5.5、opencv4.7.0 (注意 4.7.0代码不适用如果要使用opencv4.7.0来进行推理可能会出现下面的问题图1 problem中的问题)(但是如果添加了之后4.7.0的推理速度会比4.5.5的速度慢了不少) 图 1 p r o b l e m 图1 problem 图1problem 解决方法 图 1 s o l v t i o n 图1 solvtion 图1solvtion python部署(因为python比较简单就直接介绍了) 一、直接用VScode打开代码 二、然后在终端输入命令 python python/yolo.py 三、结果如下图所示 c部署 当然不管是使用opencv dnn的cpu还是gpu都得创建相应的环境这里先不做介绍以后有时间再介绍。 一、使用VS2019创建一个新的项目这里不做过多赘述 二、该项目搭建公共的opencv属性或者使用已搭建好的公共的opencv455属性(以opencv455为例添加其它的也是这样的例如opencv455_cuda等) 这里如果使用公共的opencv455属性只需要在新建的c空项目中使用以下步骤即可添加 1、 “属性管理器”——“鼠标右键点击Release|x64”——“添加现有属性表(E)” 2、 选在对应的已创建好的属性表然后点击“打开” 3、添加后的结果 三、将code中的下列文件复制到新建的项目中的repos/Project4/Project4中如下图所示 四、将code中的cpp/yolo.cpp添加到新建项目的源文件中添加过程和结果如下图所示 结果 五、使用x64进行Release结果如下图所示 1、opencv4.5.5推理结果 2、opencv4.7.0推理结果 六、yolo.cpp的代码在这(本人应该没做改动吧忘记了) #include fstream#include opencv2/opencv.hpp/*下文所有注释全是自我理解*//*加载classes.txt*/ std::vectorstd::string load_class_list() {std::vectorstd::string class_list; // 该行代码可以理解为申明一个可变容量的字符串数组class_liststd::ifstream ifs(config_files/classes.txt);std::string line;while (getline(ifs, line)){class_list.push_back(line);}return class_list; }void load_net(cv::dnn::Net net, bool is_cuda) {auto result cv::dnn::readNet(config_files/yolov5s.onnx);if (is_cuda){std::cout Attempty to use CUDA\n;result.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);// result.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA_FP16);result.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);// 经过验证这里必须去掉FP16才能使用cuda加速就是yolov5导出的是half onnx也不行opencv只能读取16,但是还是按照32运行的}else{std::cout Running on CPU\n;result.setPreferableBackend(cv::dnn::DNN_BACKEND_OPENCV);result.setPreferableTarget(cv::dnn::DNN_TARGET_CPU);}net result; }const std::vectorcv::Scalar colors { cv::Scalar(255, 255, 0), cv::Scalar(0, 255, 0), cv::Scalar(0, 255, 255), cv::Scalar(255, 0, 0) };const float INPUT_WIDTH 640.0; const float INPUT_HEIGHT 640.0; const float SCORE_THRESHOLD 0.2; // NMS中的score阈值(一般来说这个应该是conf * class的阈值) const float NMS_THRESHOLD 0.4; // NMS中的IoU阈值 const float CONFIDENCE_THRESHOLD 0.4; // conf阈值 (class, conf, x, y, w, h)struct Detection {int class_id;float confidence;cv::Rect box; };/*这个作用是将需要预测的图片都变为正方形图片以左上角对齐将短的边都填充0*/ cv::Mat format_yolov5(const cv::Mat source) {int col source.cols;int row source.rows;int _max MAX(col, row);cv::Mat result cv::Mat::zeros(_max, _max, CV_8UC3);source.copyTo(result(cv::Rect(0, 0, col, row)));return result; }void detect(cv::Mat image, cv::dnn::Net net, std::vectorDetection output, const std::vectorstd::string className) {cv::Mat blob;auto input_image format_yolov5(image);cv::dnn::blobFromImage(input_image, blob, 1. / 255., cv::Size(INPUT_WIDTH, INPUT_HEIGHT), cv::Scalar(), true, false); // 将预测图片resize到640并将所有的像素都归一化net.setInput(blob);std::vectorcv::Mat outputs; // 预测框作为一个矩阵保存在Mat这个可变数组永远只有一个Mat,因为一个Mat即可保存所有的预测框类似于图片[1, H, W]所以下文中outputs[0].data是所有预测框的地址net.forward(outputs, net.getUnconnectedOutLayersNames());float x_factor input_image.cols / INPUT_WIDTH; // 缩放因子float y_factor input_image.rows / INPUT_HEIGHT;float* data (float*)outputs[0].data;const int dimensions 85; // 其实就是COCO的class conf xywhconst int rows 25200; // pre_box的数量小于25200std::vectorint class_ids;std::vectorfloat confidences;std::vectorcv::Rect boxes;// 原始的NMS使用的非极大值抑制并不是yolov5中的多分类非极大值抑制for (int i 0; i rows; i) {float confidence data[4];if (confidence CONFIDENCE_THRESHOLD) {float* classes_scores data 5;cv::Mat scores(1, className.size(), CV_32FC1, classes_scores); // 将classes_scores转化为一个Mat格式的数据cv::Point class_id;double max_class_score;minMaxLoc(scores, 0, max_class_score, 0, class_id); // 将scores中的最大的值以及其id分别赋给max_class_score, class_idif (max_class_score SCORE_THRESHOLD) {confidences.push_back(confidence);class_ids.push_back(class_id.x);float x data[0];float y data[1];float w data[2];float h data[3];int left int((x - 0.5 * w) * x_factor);int top int((y - 0.5 * h) * y_factor);int width int(w * x_factor);int height int(h * y_factor);boxes.push_back(cv::Rect(left, top, width, height));}}data 85; // 这个是cv::Mat中的每一个[x, y, w, h, conf, class]的首地址一个预测框的首地址都加85[xywhconfclass]即[580]后就是下一个预测框的首地址}std::vectorint nms_result;cv::dnn::NMSBoxes(boxes, confidences, SCORE_THRESHOLD, NMS_THRESHOLD, nms_result); // 将NMS筛选之后的索引返回给nms_resultfor (int i 0; i nms_result.size(); i) {int idx nms_result[i];Detection result;result.class_id class_ids[idx];result.confidence confidences[idx];result.box boxes[idx];output.push_back(result);} }int main(int argc, char** argv) {std::vectorstd::string class_list load_class_list();cv::Mat frame;cv::VideoCapture capture(sample.mp4);if (!capture.isOpened()){std::cerr Error opening video file\n;return -1;}//bool is_cuda argc 1 strcmp(argv[1], cuda) 0;bool is_cuda true;cv::dnn::Net net;load_net(net, is_cuda);auto start std::chrono::high_resolution_clock::now();int frame_count 0;float fps -1;int total_frames 0;while (true){capture.read(frame);if (frame.empty()){std::cout End of stream\n;break;}std::vectorDetection output;detect(frame, net, output, class_list);frame_count;total_frames;int detections output.size();for (int i 0; i detections; i){auto detection output[i];auto box detection.box;auto classId detection.class_id;const auto color colors[classId % colors.size()];cv::rectangle(frame, box, color, 3);cv::rectangle(frame, cv::Point(box.x, box.y - 20), cv::Point(box.x box.width, box.y), color, cv::FILLED);cv::putText(frame, class_list[classId].c_str(), cv::Point(box.x, box.y - 5), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0));}if (frame_count 30){auto end std::chrono::high_resolution_clock::now();fps frame_count * 1000.0 / std::chrono::duration_caststd::chrono::milliseconds(end - start).count();frame_count 0;start std::chrono::high_resolution_clock::now();}if (fps 0){std::ostringstream fps_label;fps_label std::fixed std::setprecision(2);fps_label FPS: fps;std::string fps_label_str fps_label.str();cv::putText(frame, fps_label_str.c_str(), cv::Point(10, 25), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255), 2);}cv::imshow(output, frame);if (cv::waitKey(1) ! -1){capture.release();std::cout finished by user\n;break;}}std::cout Total frames: total_frames \n;return 0; }参考链接 代码参考链接 https://github.com/doleron/yolov5-opencv-cpp-pythonhttps://github.com/Hexmagic/ONNX-yolov5/tree/masterhttps://github.com/yzy12-max/yolov5_deploy(这个是理论参考链接2中对应的仓库) 理论参考链接 https://github.com/ultralytics/yolov5/issues/251https://blog.csdn.net/weixin_41311686/article/details/128421801(这个的是另外的代码推理解析部分值得一看)
http://www.pierceye.com/news/238618/

相关文章:

  • 如何利用网站策划做好网站建设申请域名要多少钱
  • 专业做公司logo的网站谷歌网站推广方案
  • 公司网站建设情况说明网站开发用php好吗
  • 网站做关键词库的作用空间怎么做网站
  • 制作网站公司名称网络营销与策划实践报告
  • 哈尔滨手机网站建设价格低长沙网业公司
  • 如皋网站建设公司网站推广优化排名
  • 行业网站方案网站搭建合同
  • 如何用ps做网站图标吉林省长春市建设局网站
  • 北京高端网站建设服务广州百度快速排名优化
  • 电子商务网站开发课程设计网站建设石家庄
  • 好的公司网站有什么用烟台建设集团招聘信息网站
  • 网站制作需要多长时间网站代建设费用
  • 淘宝客网站设计台州建设银行官方网站
  • 婚纱网站建设规划书2023全国企业公司大黄页
  • 网站seo的关键词排名怎么做的wordpress 在线留言
  • 建一个c2c网站要多少钱小程序云开发文档
  • asp网站合法上虞网站设计
  • 网站 用什么数据库蛋糕店网站建设方案
  • 网站上的动效是用ae做的网站开发实训小结
  • wordpress建站怎么上传网站没有备案信息该怎么做
  • 沈阳网站推广有什么技巧软件开发工具通常也称为什么工具
  • 黑龙江龙采做网站如何网站建设制作解决方案
  • 百度推广自己做网站吗网页设计软件下载网站
  • wordpress内核源码分析南宁网站优化推广
  • 物流网站做那个好服务器怎么安装WordPress
  • 网站开发怎么兼容浏览器中国优秀设计网站有哪些内容
  • 黄冈网站官方登录平台做网站的条件
  • 潍坊网站建设推广公司网站建设类的手机软件
  • 建设小学网站建设网站代理