科学网

 找回密码
  注册

tag 标签: 目标检测

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

目标检测网络学习研究笔记(RCNN-SPPnet-Fast/Faster RCNN)
mhaoyang 2018-11-17 19:10
一 、RCNN:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report (v5) Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik 2014 原理: 训练一个CNN分类网络,固定输入图像尺寸,将最后一层FC的输出作特征向量送给SVM分类器,训练1001个分类器,多的那个为背景。 识别时采用selective search(选择性搜索)方法每张图像上得到2000多个目标候选框,然后将候选框对应的物体缩放成CNN输入图像大小,分别送到CNN以及SVM分类器,找到概率最大的候选框,然后采用非极大值抑制去掉重复的框,再使用线性回归输出目标准确位置(从selective search 得到的proposal变换为接近groundtruth的box)。 训练SVM时,采用hard negative mining方法,将IOU界于0.1-0.3之间的随机选取都作为背景,IOU大于0.5的做正例,具体CNN训练和SVM优化见论文,有很多技巧性的操作。 一张图像需要13s GPU 本方法mAP 53.7% PASCAL VOC2010 HOG based DPM 33.4% 本方法31.4% OverFeat 24.3% ILSVRC2013 二、SPPnet:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 2015 原理: 本文主要解决了输入CNN图像必须为固定尺寸的问题。 采用一个多分辨率的池化层,将特征图归一化为固定尺寸的输出,再接FC分类层。 具体做法,最后一层Conv输出例如为14x14x256,即14x14分辨率,256通道。 将这个特征图,平均划分为1x1,2x2, 3x3, 6x6大小(以2x2为例,每一块得到7x7大小的特征图,共4块),再分别对每一块施加Max pooling 从而得到1x1,2x2, 3x3, 6x6 一共50个向量,每个向量都对应256维(因为输入为256通道),因此最后得到50*256维向量,为固定尺寸。 输入图像大小变化,则划分SPP时,步长对应改变即可,在数据集上分类准确度比一般的CNN高1-2% 在进行目标检测时,原图输入SPP网络得到特征图,使用Selective search得到候选框,并将每个候选框映射到特征图上,再对每个对应区域的特征图数据使用SPP 归一化,送给SVM分类,得到概率最大的那个region,采用非极大值抑制得到准确位置,再使用回归方法调整selective search的region输出准确位置。具体训练细节,样本选择见原文。 其中为了更好的处理不同大小的目标,使得特征图尺寸最合适。本文是将输入图像进行不同尺度缩放,使候选框大小接近224x224,然后再进行后续处理。因此本文需要在几个不同尺度上进行CNN特征提取。 mAP 59.2% Pascal VOC 2007 三、 Fast RCNN Ross Girshick 2015 原理: 核心思想与SPP没有本质差异,不过在SPPnet基础上进行了若干架构合并。 例如最后输出候选区域类别时,连同候选区域回归region一起输出(分类与位置回归进行了整合),SVM分类器舍弃不用,直接使用与FC layer良好对接的softmax分类器;训练过程相对SPPnet也更加简化,只需要一次训练(SPP需要训练CNN网络,训练SVM分类器,训练region回归网络),输入图像包含类别、位置信息,网络同时计算分类与位置回归部分。 正向推理时:输入图像得到特征图,用selective search得到2000多个候选框,然后在对应特征图区域上进行分类和位置信息的输出。与SPP不同的是,Fast RCNN没有对原图进行多个scale缩放,而是使用一种固定尺寸做输入,通过在训练样本加入大量不同尺度的缩放的目标使网络可以识别不同大小的物体。 另外,FastRCNN对最后的FC层进行了SVD分解,降低计算量,大大降低了遍历2000多个proposal的时间(0.4s降到0.1s),推理速度明显提升。 mAP 66% PASCAL VOC2010 四、 Faster RCNN Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 2016 原理: 在Fast RCNN基础上,提出了RPN网络,将目标候选区域的生成性能进行了大幅度提升,后续处理同Fast RCNN。 RPN Region Proposal Network区域提案网络,工作时,在特征图上进行逐点搜索,每个点进行9个尺度的候选位置匹配,每个位置输出cls与reg信息,遍历结束后,通过对数万region的cls信息排序,选出cls最大的N笔数据,经过reg微调后成为正式proposal,送给Fast RCNN进行分类识别…… 五、 四种网络综合分析: 经过比较RCNN,SPPnet,Fast RCNN, Faster RCNN的原理和创新,不难看出,这些网络都是继承并发展了前一种网络而来。 RCNN在这些里面是最原始,通过Selective search算法得到2000多候选区域,然后逐个区域进行CNN分类网络的识别,CNN输出可能性最高的为真实目标。RCNN的贡献在于利用了selective search而不是暴力枚举所有的区域(以200x200图像为例,包含4万个搜索位置,每个位置如果使用9个尺度搜索(参考RPN),则有36万个proposal),虽然预测一张200分辨率左右的图像就需要13s GPU时间,但是如果是暴力枚举的话,则需要39分钟GPU时间。 另外RCNN在训练SVM分类器时处理背景的方法(hard negative mining,以及挑选positive 和negtive的技巧和经验)值得借鉴,目前仍有很高实用价值。 综上所述,RCNN主要是融合了Selective search算法提升搜索水平,以及研究发现了CNN 卷积层特征可以代替传统HOG、SIFT等特征,并采用SVM分类器,结合hard negative mining等技巧对目标识别做了一次提升,做出这个成绩主要还是取决于2年前CNN分类能力的巨大进步。 SPPnet分析了RCNN速度慢的原因是由于密集使用conv层做特征提取导致大量重复计算,于是开动脑筋,从SPM(Spatial Pyramid Matching)思想中借鉴了化整为零的思路,将一个目标特征进行多尺度组合,并实现归一化,解决了输入图像尺度和比例无法保持原样的问题;此举不仅提升了特征提取的准确性,而且创造性的将region区域的筛选从image段转移到了feature map端,尽管后续也需要做大量的遍历和筛选,但是conv特征提取仅需要一次,解决了RCNN重复计算的问题,把正向推理时间降到了0.38s,是一个巨大的进步。 另外,SPPnet为了最大程度保持不同尺度的特征,在输入端将原图缩放5个不同尺度,根据selective search生成的proposal大小不同,相应选择对应的尺度做处理,提高了检测的准确性从RCNN 53% mAP(PASCAL VOC2010)提升到59%mAP( Pascal VOC 2007) Fast RCNN在SPPnet基础上,没有提出太多新思想,主要是进行架构整合,把分类,位置回归进行了整合,使网络训练上工作量减少很多,系统架构更工整。同时把输入图像多尺度变换的做法抛弃了,采用暴力学习的方法在样本里添加目标的不同尺度图像,使网络识别具有尺度不变性。另外,在FC层采用了SVD奇异值分解算法,将FC计算量降低30%,很大程度上改进了多proposal的FC计算密集问题。 以上三种算法都是基于selective search算法从原图得到目标候选区域,此算法准确性很高,但计算量大,并且因为逻辑复杂,只能在CPU端完成,无法放到GPU。selective search在一张500x500的图像上,需要大约1-2s时间,已经大大超过了识别的时间,因此这个环节成为了目标检测的主要瓶颈。 Faster RCNN针对这个痛点,做了一个大创新,把生成region proposal的工作使用CNN网络来实现,其实RPN网络的提出也并非石破天惊的创举,而是通过分析featuremap每个点对应原图的reception field,找到了一个合适的遍历的尺度,本质上说,这种思想是selectve search的退化,退化成了原始的暴力搜索(枚举);只不过feature map毕竟大小有限,另外这个工作可以由GPU矩阵运算实现,所以速度还是超级快的,生成region proposal 只需要3ms(ZF网络5层卷积,feature map是原图的1/16,在宽与高两个方面),并且RPN生成的几千proposal里面都带有类别概率,可以排除掉大量的非目标物体,因此在后续识别的工作上也减少了无效计算。 对于featuremap上暴力搜索所有点的方法,其实可以改进。例如通过分析只搜索可疑的点,这样对于减少RPN计算量是有帮助的,同时这样一来,对于训练样本的制作也可进一步简化,不过鉴于现在速度已经很快,而且有cls的评价指标做筛选,做如此改进可能也只能提升一点点,没有太大实际意义。 以上为学习笔记和研究心得,欢迎各位同道中人提出不同意见探讨、学习。 未经许可,禁止转载
3333 次阅读|0 个评论
CentOS6.9 64位+opencv 2.4.13.5+Eclipse CDT开发环境搭建
hillpig 2018-1-31 19:09
解决无数人对安装opencv后环境变量配置疑惑的终极答案 按照我的这篇傻瓜式的教程2小时搞定开发环境,要不然一堆坑搞不好得弄一天(在写这篇博客的过程中,搜集了一些资料,说说我的感受:我始终没搞明白很多人的分享,为啥写的片片面面稀里糊涂的,让别人越弄越恼火,为啥不能好好写个一步步教程呢,这又有多难呢。当然opencv的文档也够偷懒的,为啥opencv背后的帅哥靓女们不好好写写文档呢,难道只是贡献点代码开会的时候吹一下牛就完了吗,这点可以好好跟postgresql学习)。 1. VirtualBox里安装Centos6.9及必要的库 VitualBox版本:5.2.2或以上 ,下载地址: https://download.virtualbox.org/virtualbox/5.2.2/VirtualBox-5.2.2-119230-Win.exe ,或者 https://www.virtualbox.org/wiki/Download_Old_Builds_5_2 CentOS:6.9 64位 ,不建议使用6.3(否则默认安装的gtk2的小版本会导致window_gtk.cpp编译不通过,需要替换gtk_widget_set_realized 为GTK_WIDGET_SET_FLAGS的情况),下载地址: https://pan.baidu.com/s/1pNl3EWj 注意,我们安装的是64位,所以你的主机需要设置一下bios,开启Intel虚拟化技术(参考 https://www.cnblogs.com/zhao1949/p/6116183.html )。 安装时,选择Workstation和Customize now,如下图: 然后取消选择Developement - Eclipse (我们后面自行下载喜欢的版本): 语言选择中文支持: 安装完之后重启,用root登录,然后安装VirtualBox的安装增强功能: 安装完毕,选择VirtualBox菜单栏里的 设备-》共享黏贴板-》双向,然后重启,仍然用root登录,然后选择: 然后输入cmake,检索并安装: 同样的方法安装:libavc的开发包: 由于我们开始选择WorkStation的时候系统会默认安装gtk2-devel-2.24.23-9.el6,python2.6.6及Numpy1.4(似乎官方要求是1.5及以上,暂时我们不管了,先暂时用这个,以后出了问题再说),pkg-config 0.23,所以我们就无需再次安装了。 按照官网opencv 3.4.0安装介绍( https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html ),我们还缺libavformat-dev, libswscale-dev。但是我们目前暂时先不安装,如果你想自己源码安装这些库,也可以自行搞定。 然后重启机器,用root登录,在System-》Preferences-》Display设置一下高的分辨率,在System-》Preferences-》Input Method里增加一下中文输入法Chinese-Pinyin。 这里 https://pan.baidu.com/s/1ggQLqdP 有个完整的VirtualBox Centos6.9 64位的虚拟机文件,可以下载下来在VirtualBox自行加载进去,放心没毒。账号root,密码000000,另外我把主机和虚拟机之间共享了文件夹,你也可以设置一下你自己的,然后重启即可。 2. 下载opencv2.4源码,然后编译安装 我发现安装3.4用默认的gcc编译竟然有编译错误,于是我们改用opencv2.4.13.5,其安装教程在 https://docs.opencv.org/2.4.13.5/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation , API文档在: https://docs.opencv.org/2.4/ 源码可以在这里 https://opencv.org/releases.html ,或这里 https://codeload.github.com/opencv/opencv/zip/2.4.13.5 下载,或者 https://pan.baidu.com/s/1dd6x90 然后解压缩后,执行: cd opencv-.4.13.5/ mkdir build cd build/ cmake -D CMAKE_BUILD_TYPE=DEBUG -D WITH_GTK=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. make make install 我们检查一下发现opencv的lib库安装在/usr/local/lib下了,头文件安装在了/usr/local/include下了。 接下来就是让大家最头疼的各种路径的设置了(这部分往往比其他事情更耗时间),其实我们每次安装完一个软件,都要考虑一下如下几个设置要不要改: 1.看看能不能让c编译头文件路径找得到: C_INCLUDE_PATH ,我们通过如下命令得到默认的C_INCLUDE_PATH包含哪些路径: # `gcc -print-prog-name=cc1` -v /usr/local/include /usr/lib/gcc/x86_64-redhat-linux/4.4.7/include /usr/include 发现opencv的头文件路径/usr/local/include已经在C_INCLUDE_PATH的默认搜索路径中了,所以我们就不用设置了 2.看看能不能让c++编译头文件路径找得到:CPLUS_INCLUDE_PATH ,我们通过如下命令得到默认的CPLUS_INCLUDE_PATH包含哪些路径: # `gcc -print-prog-name=cc1plus` -v /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7 /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/x86_64-redhat-linux /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward /usr/local/include /usr/lib/gcc/x86_64-redhat-linux/4.4.7/include /usr/include 发现opencv的头文件路径/usr/local/include也已经在CPLUS_INCLUDE_PATH的默认搜索路径中了,所以我们也不用设置了。 3.GCC的连接器搜索路径:LIBRARY_PATH ,我们通过如下命令得到默认的LIBRARY_PATH包含哪些路径: # ld --verbose SEARCH_DIR(/usr/x86_64-redhat-linux/lib64); SEARCH_DIR(/usr/local/lib64); SEARCH_DIR(/lib64); SEARCH_DIR(/usr/lib64); SEARCH_DIR(/usr/x86_64-redhat-linux/lib); SEARCH_DIR(/usr/lib64); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); 发现opencv的库路径/usr/local/lib已经被包含其中了,故我们也不用设置了。 4.可执行程序运行时搜索的动态库路径:LD_LIBRARY_PATH ,我们通过如下命令得到默认的LIBRARY_PATH包含哪些路径: # ldconfig -v 2/dev/null | grep -v ^$'\\t' /var/lib/VBoxGuestAdditions/lib:/usr/lib64/atlas:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/xulrunner:/lib:/lib64:/usr/lib:/usr/lib64:/lib64/tls: (hwcap: 0x8000000000000000)/usr/lib64/tls: (hwcap: 0x8000000000000000)/usr/lib64/sse2: (hwcap: 0x0000000004000000) 发现opencv的库路径/usr/local/lib没有被包含其中,所以我们需要设置这个,有两个办法设置: 1)全局有效(推荐,只需要执行一次) echo /usr/local/lib/ /etc/ld.so.conf.d/opencv.conf ldconfig 2)本账户root有效 gedit ~/.bash_profile 增加如下内容: export LD_LIBRARY_PATH=/usr/local/lib$LD_LIBRARY_PATH 退出执行source ~/.bash_profile生效 5.pkg-config命令寻找路径 (为何要关注这个命令的路径设置呢,是因为很多开源项目的configure命令中使用该pkg-config命令搜索依赖的库是否存在,我们的opencv就试用该命令得知是否安装了gtk等):PKG_CONFIG_PATH,根据官方的文档 https://people.freedesktop.org/~dbn/pkg-config-guide.html ,我们看看包含哪些路径: On a typical Unix system, it will search in the directories /usr/lib/pkgconfig and /usr/share/pkgconfig . This will usually cover system installed modules. However, some local modules may be installed in a different prefix such as /usr/local . In that case, it's necessary to prepend the search path so that pkg-config can locate the .pc files. 可见,由于我们的opencv安装在/usr/local下面,而且安装时已经生成了/usr/local/lib/pkgconfig/opencv.pc文件,所以我们只需要把该路径添加到PKG_CONFIG_PATH里即可: gedit ~/.bash_profile 增加如下内容: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH 退出执行source ~/.bash_profile生效 说了这半天,我们总结一下,综上我们只需要在gedit ~/.bash_profile 增加如下内容: export LD_LIBRARY_PATH=/usr/local/lib$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH 即可。 有些同学说了,这么麻烦,下回安装别的软件是不是也得这么检查一道,答案是的,当然有个偷懒的办法,你可以在~/.bash_profile里不管三七二十一都把相应的路径添加上,这样子哪怕重复路径也没关系,如我们的opencv就可以这么设置: export LIBRARY_PATH=/usr/local/lib/:$LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH 然后重启测试一下: pkg-config --modversion opencv pkg-config --cflags --libs opencv 是不是 pkg-config 已经可以搜索到了。 3. 安装Eclipse 建议的Ecipse CDT下载地址为 http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-cpp-mars-2-linux-gtk-x86_64.tar.gzmirror_id=10 ,或这里 https://pan.baidu.com/s/1c33QL8k 。 假设下载在~/software,解压缩后,打开看看是不是成功。 4. 新建项目测试gtk是否可用 这部分的完整源码从这里下载: https://pan.baidu.com/s/1i6t7l8D 在Eclipse里: 然后: 点击Finish。 如果源码里有红叉叉,稍等一会,或者右键项目,在Index-》Rebuild一下,就好了。 然后Debug一下,是否成功了。 下面DisplayImage.cpp里加入我们的代码: #include iostream #include gtk/gtk.h using namespace std; int main(int argc, char *argv # cd /root/workspace/DisplayImage/src # g++ -o DisplayImage ./DisplayImage.cpp `pkg-config --cflags --libs gtk+-2.0` 是不是也成功了。 第2部分配置是让Eclipse里的红叉叉都去掉 ,这个需要在项目右键点击属性,然后在C/C++ General -Path and Symbols下面的Configuration 选择【All Configuarations】,在GNU C ,GNU C++ 的Includes里面加入系统安装gtk的Include路径:/usr/include/gtk-2.0,如下图: 然后在Libray Paths里设置gtk的查找路径: /usr/lib64/gtk-2.0/2.10.0/engines /usr/lib64/gtk-2.0/modules 如下图: 记得在GNU C ,GNU C++ 里都要设置Libray Paths,然后点击确定后,右键项目Index-Rebuild是不是可爱的红叉叉都没了: 然后我们就可以运行或调试一下了,是不是可爱的GUI界面出来了: 至此说明我们的gtk编程没问题了。 5. 新建项目测试opencv是否可用 这部分的完整源码在: https://pan.baidu.com/s/1qZATRUc 和第4部分类似,新建一个C++项目,叫person_detect,我们计划用opencv的hog库来写个行人检测程序。 在person_detect.cpp里写入如下代码: #include iostream #include stdexcept #include stdio.h #include unistd.h #include cv.h #include highgui.h #include opencv2/objdetect.hpp #include opencv2/imgproc.hpp using namespace std; using namespace cv; static void detectAndDraw(const HOGDescriptor hog, Mat img) { vectorRect found, found_filtered; double t = (double) getTickCount(); // Run the detector with default parameters. to get a higher hit-rate // (and more false alarms, respectively), decrease the hitThreshold and // groupThreshold (set groupThreshold to 0 to turn off the grouping completely). hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2); t = (double) getTickCount() - t; cout detection time = (t*1000./cv::getTickFrequency()) ms endl; for(size_t i = 0; i found.size(); i++ ) { Rect r = found ; size_t j; // Do not add small detections inside a bigger detection. for ( j = 0; j found.size(); j++ ) if ( j != i (r found ) == r ) break; if ( j == found.size() ) found_filtered.push_back(r); } for (size_t i = 0; i found_filtered.size(); i++) { Rect r = found_filtered ; // The HOG detector returns slightly larger rectangles than the real objects, // so we slightly shrink the rectangles to get a nicer output. r.x += cvRound(r.width*0.1); r.width = cvRound(r.width*0.8); r.y += cvRound(r.height*0.07); r.height = cvRound(r.height*0.8); rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 3); } } int main(int argc, char** argv) { HOGDescriptor hog; hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); namedWindow( object detection, CV_WINDOW_AUTOSIZE ); Mat frame; frame = imread( argv , 1 ); if( argc != 2 || !frame.data ) { printf( No image data \\n ); return -1; } cv::imshow(object detection, frame); detectAndDraw(hog, frame); cv::imshow(object detection, frame); waitKey(0); return 0; } 然后在C/C++ build Settings -Configuration 选择【All Configuarations】,在GCC C Compiler,GCC C++ Compiler,GCC C++ Linker右侧的Commandline pattern,最后都加上这么一句: `pkg-config --cflags --libs opencv` 在C/C++ General -Path and Symbols下面的Configuration 选择【All Configuarations】,在GNU C ,GNU C++ 的Includes里面加入系统安装opencv的Include路径: /usr/local/include/opencv2 /usr/local/include/opencv 在Libray Paths里设置opencv的查找路径: /usr/local/lib 然后项目右键Index-》Rebuild一下,是不是红叉叉都没了。 然后在Debug设置里,设置一下我们要识别的原始图片,如下图: 然后执行调试一下,是不是可爱的图片识别结果出来了: 至此,我们的环境完全搭建完毕,你可以自由的使用opencv写代码了。 参考: https://typecodes.com/cseries/gcclderrlibrarypath.html?utm_source=tuicoolutm_medium=referral http://blog.csdn.net/richerg85/article/details/17073805 https://docs.opencv.org/2.4/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html 如果有啥技术问题交流,可以邮件66697561@qq.com联系。 码字码了半天,手指头都麻了,如果觉得对您还有用的话,赞助一下辛苦费吧:
个人分类: AI|3962 次阅读|0 个评论
神经网络和卷积神经网络的基础知识
热度 2 apollocv 2017-6-1 08:53
神经网络和卷积神经网络的基础知识 1, Michael Nielsen写的在线教程 http://neuralnetworksanddeeplearning.com/ 介绍了神经网络的基本结构,有例子展示为何神经网络可以学习任何函数,为什么传统的深度学习很慢等。还提供了基于Theano的用于MNIST手写数字的识别的例子代码。 2, 斯坦福大学的深度学习课程 http://cs231n.github.io/ 这是斯坦福大学李飞飞教授开的一门课。从图像分类的应用出发,介绍了线性分类器、随机梯度下降法等基本的 机器学习 中常用的概念。并且介绍了在使用神经网络、卷积神经网络和转移学习中的问题和例子。 3,《 Deep Learning in Neural Networks: An Overview 》 这是瑞士 人工智能 实验室 Jurgen Schmidhuber 写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从 1940 年开始讲起,到 60-80 年代,80-90 年代,一直讲到 2000 年后及最近几年的进展。涵盖了 deep learning 里各种 tricks,引用非常全面。 4, UFLDL -斯坦福大学 Andrew Ng 教授“Deep Learning”教程 本教程将阐述无监督特征学习和深度学习的主要思想。涵盖了稀疏编码、Softmax回归、用深度网络做图像分类等方面的应用。 CNN的应用 1, 目标检测 【基于深度学习的目标检测研究进展 】 http://chuansong.me/n/353443351445 这篇文章介绍了一系列基于CNN的目标检测算法,简述了传统目标检测的流程,介绍了以R-CNN为代表的结合region proposal和CNN分类的目标检测框架(R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN)、以YOLO为代表的将目标检测转换为回归问题的目标检测框架(YOLO, SSD),并且介绍一些可以提高目标检测性能的技巧和方法。 2,图像分割 基于FCN的分割 http://blog.csdn.net/taigw/article/details/51401448 3, 目标跟踪 【深度学习在目标跟踪中的应用】 https://zhuanlan.zhihu.com/p/22334661 4, 其他 有待更新 更多资料: http://www.open-open.com/news/view/1621439
3755 次阅读|2 个评论
卫星图像目标检测框架
slx965 2017-1-20 10:11
1、分布式采集全球谷歌卫星图像,海量图像存储; 2、分布式图像缓存处理机制-图像增强、边缘锐化、干扰抑制、伪彩色处理; 3、检测目标的RGB特征、纹理特征;形成目标指纹; 4、去阴影等;
个人分类: 大数据|2823 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 11:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部