使用SSD目标检测c++接口编译问题解决记录

本来SSD做测试的Python接口用起来也是比较方便的,但是如果部署集成的话,肯定要用c++环境,于是动手鼓捣了一下。

编译用的cmake,写的CMakeList.txt,期间碰到一些小问题,简单记录一下问题以及解决方法。

当然前提是你本地的caffe环境没啥问题。各种依赖都安好了。。

1.error: ‘AnnotatedDatum’ has not been declared    AnnotatedDatum* anno_datum);

/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:192:40: error: ‘AnnotatedDatum_AnnotationType’ does not name a type
     const std::string& encoding, const AnnotatedDatum_AnnotationType type,
                                        ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:194:5: error: ‘AnnotatedDatum’ has not been declared
     AnnotatedDatum* anno_datum);
     ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:199:11: error: ‘AnnotatedDatum_AnnotationType’ does not name a type
     const AnnotatedDatum_AnnotationType type, const string& labeltype,
           ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:200:49: error: ‘AnnotatedDatum’ has not been declared
     const std::map<string, int>& name_to_label, AnnotatedDatum* anno_datum) {
                                                 ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:208:5: error: ‘AnnotatedDatum’ has not been declared
     AnnotatedDatum* anno_datum);
     ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:212:5: error: ‘AnnotatedDatum’ has not been declared
     AnnotatedDatum* anno_datum);
     ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:215:22: error: ‘AnnotatedDatum’ has not been declared
     const int width, AnnotatedDatum* anno_datum);
                      ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:218:30: error: ‘LabelMap’ has not been declared
     const string& delimiter, LabelMap* map);
                              ^
/home/jiawenhao/ssd/caffe/include/caffe/util/io.hpp:221:32: error: ‘LabelMap’ has not been declared
       bool include_background, LabelMap* map) {
                                ^

这个问题拿去google了一下,https://github.com/BVLC/caffe/issues/5671提示说是

caffe.pb.h这个文件有问题。

在本地find了一下,

发现是有这个文件的,

于是在/ssd/caffe/include/caffe下 mkdir一下 proto,然后把 caffe.bp.h 复制过来就好了

如果没有 caffe.pb.h可以用命令生成这个文件,生成方法google一下就好了。。。。

2.链接库的问题。错误提示说明用到了这个库,但是程序没找到。在CMakeList.txt里填上 libflags.so即可 ,其他so库同理。

/usr/bin/ld: CMakeFiles/ssd_detect.dir/ssd_detect.cpp.o: undefined reference to symbol ‘_ZN6google14FlagRegistererC1EPKcS2_S2_S2_PvS3_‘
/usr/lib/x86_64-linux-gnu/libgflags.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/ssd_detect.dir/build.make:102: recipe for target ‘ssd_detect‘ failed
make[2]: *** [ssd_detect] Error 1

这个是CMakeList.txt内容。 就是指定好include路径,还有需要用到的各种库的路径。

cmake_minimum_required (VERSION 2.8)
add_definitions(-std=c++11)
project (ssd_detect)  

add_executable(ssd_detect ssd_detect.cpp)  

include_directories (/home/yourpath/ssd/caffe/include
    /usr/include
    /usr/local/include
    /usr/local/cuda/include    

     )  

target_link_libraries(ssd_detect
     /home/yourpath/ssd/caffe/build/lib/libcaffe.so
     /usr/local/lib/libopencv_core.so
     /usr/local/lib/libopencv_imgproc.so
     /usr/local/lib/libopencv_imgcodecs.so
    /usr/local/lib/libopencv_highgui.so
    /usr/local/lib/libopencv_videoio.so
    /usr/lib/x86_64-linux-gnu/libgflags.so
    /usr/lib/x86_64-linux-gnu/libglog.so
    /usr/lib/x86_64-linux-gnu/libprotobuf.so
    /usr/lib/x86_64-linux-gnu/libboost_system.so
    )  

原文地址:https://www.cnblogs.com/hellowooorld/p/9759522.html

时间: 2024-08-01 16:06:13

使用SSD目标检测c++接口编译问题解决记录的相关文章

从零开始实现SSD目标检测(pytorch)(一)

目录 从零开始实现SSD目标检测(pytorch) 第一章 相关概念概述 1.1 检测框表示 1.2 交并比 第二章 基础网络 第三章 先验框设计 第四章 LOSS设计 从零开始实现SSD目标检测(pytorch) 特别说明: 本系列文章是Pytorch目标检测手册的翻译+总结 知其然知其所以然,光看论文不够,得亲自实现 第一章 相关概念概述 1.1 检测框表示 边界宽(bounding box)是包围一个物体(objective)的框,用来表示这个物体的位置.形状.大小等信息.不是最小外接矩形

TF项目实战(基于SSD目标检测)——人脸检测2

数据转化为VOC格式: 一.我们先看 VOC格式的数据是什么??? Annotations:存放xml 包括 文件夹信息   图片名称. 图片尺寸信息. 图片中object的信息. JPEGImages: 存放图片 二.分析Wider FACE数据集: 数据集中的txt中信息为:第一行: 图片路径第二行:多少个人脸第三行:bbox信息 存储的左上角 坐标 和 高度宽度 三.代码转换: 1 import os,cv2,sys,shutil 2 3 from xml.dom.minidom impo

关于目标检测

目标检测 Region based network RCNN 一张图像生成1K~2K个候选区域 对每个候选区域,使用深度网络提取特征 特征送入每一类的SVM 分类器,判别是否属于该类 使用回归器精细修正候选框位置 Selective Search 候选框生成 传统的生成方法,就是检测就是不同大小的滑动窗进行穷举,然后使用分类器判断哪个滑动窗是目标.而SS根据颜色,纹理之类的信息去把图片划分成不同区域可以相对于穷举搜索大量减少计算量,是简单的搜索剪枝思路.通过简单的区域划分算法,将图片划分成很多小

奇点云三角肌「秀肌肉」,端化目标检测模型再获突破

人工智能正在驱动新一轮的商业变革,而算法技术则是推动核心底层技术的重要力量.算法崛起时代,技术浪潮可谓一日千里,算法工程师也只有不断精进自身技术,才能与时俱进.驭浪前行.近日,奇点云算法工程师三角肌在目标检测算法领域又有新突破. 摘要 卷积神经网络对目标检测的精度有着显著的提升,并且随着卷积神经网络的深度加深,对目标检测精度提升也越大,但是也需要更多的浮点计算.许多研究者通过知识蒸馏的方法,通过把一个更深更大的教师网络中的知识转移到一个小的学生网络中,以提高学生网络在目标检测中的效果.而大部分知

目标检测算法SSD在window环境下GPU配置训练自己的数据集

由于最近想试一下牛掰的目标检测算法SSD.于是乎,自己做了几千张数据(实际只有几百张,利用数据扩充算法比如镜像,噪声,切割,旋转等扩充到了几千张,其实还是很不够).于是在网上找了相关的介绍,自己处理数据转化为VOC数据集的格式,在转化为XML格式等等.具体方法可以参见以下几个博客.具体是window还是Linux请自行对号入座. Linux:http://blog.sina.com.cn/s/blog_4a1853330102x7yd.html window:http://blog.csdn.n

目标检测方法——SSD

SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot MultiBox Detector) 目录 作者 文章的选择原因 方法概括 方法细节 相关背景补充 实验结果 与相关文章的对比 总结 作者 文章的选择原因 性能好,single stage 方法概括 文章的方法介绍 SSD主要用来解决目标检测的问题(定位+分类),即输入一张待测图像,输出多个box的位置信息和类别信息 测试时,输入一张图像到SSD中,网络输出一个下图最右边的tensor(多维矩阵),对该矩阵进行

深度学习 目标检测算法 SSD 论文简介

深度学习 目标检测算法 SSD 论文简介 一.论文简介: ECCV-2016 Paper:https://arxiv.org/pdf/1512.02325v5.pdf  Slides:http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf 二.代码训练测试: https://github.com/weiliu89/caffe/tree/ssd  一.论文算法大致流程: 1.类似"anchor"机制: 如上所示:在 featur

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络 资源获取链接:点击这里 第1章 课程介绍 本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 1-1 课程导学 第2章 目标检测算法基础介绍 本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-sta

SSD算法结构 SSD算法理论 目标检测 宗师级全解

SingleShotMultiBoxDetector(SSD,单步多框目标检测) ———————————————————————————————————————————————— 前言:哈哈,有多少人被标题引诱来的?不过我确实把料下足了,想彻底了解SSD理论的朋友,请你沉下心来看,估计底子好的人要看半小时到一小时左右.这篇随笔,我写了三个小时多,SSD本身结构不复杂,奈何涉及的细节与知识范围有些多,这篇随笔的全部内容对于SSD来说,都缺之不可,耐心通读本篇,SSD的原理,你就能完全掌握了,写的我