深度学习
文章平均质量分 60
ltshan139
这个作者很懒,什么都没留下…
展开
-
Too many or too few labels的问题解决
前言 在用darknet框架训练分类模型时遇到了不停打印Too many or too few labels的错误提示信息,如下所示:分析打印该错误提示信息的相关代码在src/data.c中,如下所示void fill_truth(char *path, char **labels, int k, float *truth){ int i; memset(truth, 0, k*sizeof(float)); int count = 0; fo...原创 2021-04-13 23:59:26 · 1344 阅读 · 0 评论 -
seetaface6中cmake时SeetaAuthorizeConfig.cmake找不到的问题解决
前言在对FaceBoxes,Landmarker以及FaceRecognizer6模块进行cmake时,很容易遇到下面SeetaAuthorize cmake文件找不到的问题。CMake Error at Landmarker/CMakeLists.txt:55 (find_package): By not providing "FindSeetaAuthorize.cmake" in CMAKE_MODULE_PATH this project has asked CMake to fi原创 2021-03-18 09:54:41 · 683 阅读 · 0 评论 -
Seetaface6的window+vs编译过程
前言SeetfaFace6是2020年初开放出来的。因为其效率要比Seetaface2更高,尤其是regonition这块(v2的模型size大概有100MB,而v6提供了light模型,只有4.5MB)。 所以在跑通seetaface2代码后,紧接着开始运行v6的代码。模块Seetaface6的代码不如v2的紧凑,在github上提供的是独立且零散模块,需要一个个单独去编译,而不像v2那样可以在vs里面一把就全部可以把库以及example编译和运行。 其基本模块如下图所示。编译注意事项原创 2021-03-17 23:29:04 · 2114 阅读 · 8 评论 -
Seetaface2的windows+vs编译过程
前言最近在研究Seetaface的开源人脸识别代码。 从git上面下载代码,如果想要在windows上面用visual studio编译并运行该项目代码的话,第一步就是要用cmake来生成项目代码,其次就是用visual studio来打开工程文件进行编译。cmake遇到的问题及解决在windows平台还是用cmake gui版软件来生成项目代码比命令行生成方便。 如下图所示。但是当上面红框所示的OpenCV_DIR被勾选时,会遇到找不到opencv安装包的问题。 当然你可以不够选它来.原创 2021-03-08 23:49:33 · 412 阅读 · 1 评论 -
如何读写8bit rgb彩色png图像
PNG提供5种图片类型:灰度,真彩色,索引色,带alpha通道的灰度,带alpha通道的真彩色二、png图像的优点1、兼有gif和jpg的色彩模式。我们知道gif格式图像采用了256色以下的index color色彩模式,jpg采用的是24位真彩模式。png不仅能储存256色以下的index color图像,还能储存24位真彩图像,甚至能最高可储存至48位超强色彩图像。import numpy as np form PIL import Image # 使用PIL库中的Image模块 # .原创 2021-02-21 23:09:11 · 4533 阅读 · 0 评论 -
opencv源代码编译时遇到的问题(模块计算机类型“x64“与目标计算机类型“x86”冲突)的解决
前言opencv4.5.1于2020年12月份推出,是目前为止最新的一个正式版本,在DNN支持方面又有了较多的更新,值得研究和关注。不过很久没有在windows(win10, x64)上编译opencv源代码了,感觉有些手生,这里把遇到的三个问题罗列出来。opencv和对应版本的contribute代码获取我们都知道 ,对于某个版本的opencv代码而言,如果想把其对应的contrib代码编译进来,其版本必须对应。 那么这里面的第一个问题就是,如何下载到对应代码?答案是到GitHub上.原创 2021-01-19 15:59:18 · 1382 阅读 · 0 评论 -
darknet框架中两个版本nms函数(do_nms_obj和do_nms_sort)的比较
前言在darknet框架中,有两个nms函数:do_nms_obj和do_nms_sort()。 在test_detector()函数中用的是do_nms_sort(), 而在darknet.py中用的是 do_nms_obj()。 值得注意的是,它们的运行结果会导致最终检测框不太一样。 有必要在这里结合代码解释一下,希望引起大家注意。do_nms_obj该函数的实现代码如下所示:void do_nms_obj(detection *dets, int total, int classes原创 2020-12-04 17:52:10 · 1413 阅读 · 2 评论 -
显卡驱动和cuda版本不对应问题的解决
前言 在运行darknet时遇到了libcudart.so.8.0找不到的问题, 一般地,解决cuda动态库找不到得问题 是在~/.bashrc添加该库所在的路径,并执行source ~/.bashrc来使得路径生效。问题不过我遇到的问题不一样,因为~/.bashrc里面显然已经指定了cuda库路径,而且是cuda-9.1版本。此外,darknet的Makefile里面也指定的是cuda-9.1的路径。但是运行时死活都要去链接libcudart.so.8.0这个较低版本。如下所示。通..原创 2020-11-13 22:51:38 · 4739 阅读 · 0 评论 -
CUDA学习系列一: CUDA安装和例程运行
前言安装eerfaf原创 2020-09-14 12:45:43 · 4121 阅读 · 0 评论 -
CUDA9.1上安装tensorflow-gpu的过程
前言安装富特文 _np_quint16 = np.dtype([("quint16", np.uint16, 1)])/home/bc311/.local/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a fut.原创 2020-08-26 13:06:32 · 1605 阅读 · 0 评论 -
Check failed: ‘anno‘ Must be non NULL的问题解决
前言在用caffe框架训练SSD模型时,需要先将VOC格式数据集转换成LMDB格式。在运行create_data.sh脚本时会遇到下面的问题F0801 12:18:53.032622 21270 io.cpp:328] Check failed: 'anno' Must be non NULL*** Check failure stack trace: *** @ 0x7fc12a1d20cd google::LogMessage::Fail() @ 0x7fc原创 2020-08-01 23:57:28 · 688 阅读 · 0 评论 -
‘cblas_dasum’未定义的引用问题的解决
前言在编译caffe或caffe_ssd框架代码时,最后link阶段会遇到‘cblas_dasum'之类的问题,如下面所示。.build_release/lib/libcaffe.so:对‘cblas_sgemv’未定义的引用.build_release/lib/libcaffe.so:对‘cblas_dgemm’未定义的引用.build_release/lib/libcaffe.so:对‘cblas_sscal’未定义的引用.build_release/lib/libcaffe.so:对‘原创 2020-07-24 23:52:14 · 1322 阅读 · 0 评论 -
YOLOV4学习系列(三) 结合代码讲解DIOU-NMS
前言NMS(非最大抑制)是目标检测算法后处理中常用的技术,用来将redundant检测框给过滤掉。YOLOV4没有用经典的NMS,取而代之的是DIOU-NMS。本博客接下来会讲解其原理和代码实现。原理在经典的NMS中,得分最高的检测框和其它检测框逐一算出一个对应的IOU值,并将该值超过NMS threshold的框全部过滤掉。可以看出,在经典NMS算法中,IOU是唯一考量的因素。但是在实际应用场景中,当两个不同物体挨得很近时,由于IOU值比较大,往往经过NMS处理后,只剩下一个检测框,这样导原创 2020-06-10 12:03:03 · 10445 阅读 · 1 评论 -
YOLOV4学习系列(二) 训练YOLOV4算法模型
前言YOLOV4模型训练流程和V3基本类似,不过仍然有一些需要注意的地方,否则很容易遇到各种问题。训练1)去AlexeyAB github上获取源代码2)代码编译,这个和yolo3编译差不多的。3)重点讲一下yolov4.cfg在cfg子目录下有yolov4.cfg和yolov4-custom.cfg。AlexeyAB建议基于yolov4-custom.cfg来对自己数据集进行模型训练。需要修改的地方:a)batch=64subdivisions=16的修改: YOLO...原创 2020-06-05 18:05:39 · 3500 阅读 · 0 评论 -
YOLOV4学习系列(一) 初识YOLOV4
前言四月下旬,YOLOV4腾空出世,作者是Alexeyab。因为之前一直有对他的github 代码(https://github.com/AlexeyAB/darknet)有研究,也学习和借鉴了不少好的方法(当然里面也有效果一般和不太认同的地方)。所以初以为YOLOV4就是一个YOLOV3 optimal版本,这几天真正看了下YOLOV4,并把它在自己数据集上跑起来后 才知道V4和V3的确有较大的一些改变。网络结构V3的backbone是darknet53,实际卷积层数是52层...原创 2020-06-05 11:49:22 · 2124 阅读 · 0 评论 -
如何在visual studio里面调用python代码
前言最近经常会遇到这样一个case:在visual studio里面需要将某个二维数组保存成numpy文件或者反过来,需要将某个numpy文件load成mat数组。这里面涉及到在visual sutdio里面如何调用python脚本来实现前面提到的功能。visual studio配置python环境包含目录添加python的include路径库目录添加python库路径:环境变量添加python路径:python脚本在visual studio里面调用python..原创 2020-05-20 23:30:40 · 3299 阅读 · 0 评论 -
双目测距系列(十)基于自己数据集训练monodepth2模型的简要记录
前言本文主要记录的是对双目图像进行monodepth2模型训练的过程。训练数据集准备我们刚开始拿到的图片集是xxx1.jpg xxx2.jpg 。。。堆集在一个目录的图片,其中1表示左摄像头,2表示右摄像头。这个原始数据集显然不能直接拿来进行训练。需要做以下转换。1)新建两个子目录image_02和image_03,然后把xxx1.jpg放到image_02,xxx2.jpg放到image_03。2)利用这左、右摄像头通过标定所得的内参和姿态参数分别将image_02和03对应图片进原创 2020-05-20 13:24:53 · 4762 阅读 · 31 评论 -
双目测距系列(九)monodepth2训练代码分析 下
前言在上面一篇文章中,我们对训练代码中的inputs和outputs获得做了简单分析。有了inputs和outpus后,就可以开始计算loss值了。这也是本文重点。图片预测函数的实现主要讲解下面这个代码。中文注释添加在里面。 def generate_images_pred(self, inputs, outputs): """Generate the wa...原创 2020-05-08 15:55:16 · 3762 阅读 · 1 评论 -
双目测距系列(八)monodepth2训练代码分析上
前言在系列七中,我们提到了train.py中实际上只有两行训练相关的代码,第一行是Trainer构造函数的调用,主要是初始化和数据集的构建,系列七主要是对这个过程进行了梳理。第二行是Trainer成员函数train的执行,这个是训练真正执行部分,本文着重来对它进行分析。训练数据集按batch来加载 def train(self): """Run the enti...原创 2020-05-08 11:36:39 · 4225 阅读 · 6 评论 -
双目测距系列(七)monodepth2训练前数据集准备过程的简析
前言上一篇文章说过,monodepth2模型有三种训练方式。针对我们的双目场景,准备使用stereo training方法。monodepth2的训练入口函数在train.py中,如下图所示。总共就2行代码,第一行代码(类Trainer的构造函数)主要是来初始化和数据集准备;第二行代码(Trainer类的成员函数)是真正执行训练过程。下文将结合代码讲解数据集准备过程。数据加...原创 2020-05-07 17:17:29 · 5620 阅读 · 1 评论 -
双目测距系列(六)monodepth2的三种训练方式
前言monodepth2有三种训练方式,其对应的命令如下:下面分别对这三种训练模式进行较详细解释 :1)单目训练monocular是单目的意思,而双目的英文则是binocular。现在基于深度学习方法对单目图像重构出三维世界非常流行。我个人觉得这里面的基础理论是SFM(structure From Motion)。直白讲,它是依靠运动视频的图像帧序列来进行三维重建。其优势很明显...原创 2020-05-04 23:18:07 · 4876 阅读 · 3 评论 -
双目测距系列(五)Win10下面安装pytorch
前言在window上安装pytorch虽然比caffe容易得多,但是也遇到了各种各样得坑,这里我把自己遇到的坑记录分享一下。DLL加载不成功的坑 起初,我的python版本是3.5,因为网络的原因,直接 pip install torch torchvision很难成功。 所以下载torch-1.0.0-cp35-cp35m-win_amd64.whl,手动安装如下:pip i...原创 2020-05-01 09:33:56 · 846 阅读 · 0 评论 -
双目测距系列(四)初识KITTI数据集
前言 monodepth模型是基于KITTI数据集来训练的。为了能复现这个训练过程,从而为以后训练自己数据集奠定较好的基础,还是需要把这个数据集下载到本地,并成功训练。 你能使用下面这条命令来下载raw KITTI数据集,但这个数据集很大,大约150多GB,而且里面提供的是外网链接,很难下载下来。建议看看国内有没有人把该数据集放到百度网盘上。wget -i splits/kitt...原创 2020-04-27 17:58:06 · 7002 阅读 · 24 评论 -
双目测距系列(三)monodepth2模型的测试
前言基于张正友标定方法的双目测距在远距离尤其是室外环境复杂,光照影响强烈的场景下会出现准确度,稳定性以及鲁棒性明显下降的缺点。所以个人认为,双目测距未来的发展趋势还是深度学习技术的引入。就双目测距而言,深度学习有两大分支:一个是监督学习,即样本图片本身带有深度信息;另外一个是无监督和自监督学习,即样本图片还是需要的,但不需要标注深度信息了。 由于对样本图片进行深度信息的标注是一个非常有难...原创 2020-04-20 23:41:05 · 8275 阅读 · 17 评论 -
双目测距系列(二)鱼眼镜头双目标定及测距
前言这几天把基于opencv C++ api将鱼眼镜头的双目标定以及测距功能实现完毕,效果还可以,至少对齐得非常棒。 这里把其流程及其关键函数在这里总结一下。对于双目标定而言,opencv一共支持两种模型:普通针孔相机模型和鱼眼相机模型fisheye。后者是opencv3.0后才开始支持的。从使用角度讲,它俩主要差别就在于畸变系数不一样。双目测距流程一共分为四大步:标定,对齐,匹配以及...原创 2020-04-19 23:21:20 · 5360 阅读 · 11 评论 -
双目测距系列(一)标定工具的开发
前言 双目摄像头标定是测距及其三维建模非常重要的步骤,因为标定出来的内外参数将会用来对原始图像进行反畸变校正,而反畸变的效果对立体匹配精度有着非常大的影响。此外,最终在求距离时(其公式为l=B*f/d),这里面参数都和标定息息相关。标定工具 目前标定方法的理论基础都为张正友标定法,其大体思想是能找到一个比较好的初始值来进行一个最小二乘法迭代,从而获得最优化标定参数。 具体...原创 2020-04-05 23:14:18 · 1547 阅读 · 1 评论 -
从头编译caffe所遇到的问题汇总及其解决方法
前言 前几天ubuntu服务器重新安装了一下,在编译安装caffe时也没有去先安装那些依赖库。纯粹是先git clone代码后直接开始编译。当然编译前需要修改下Makefile.config,具体可以参考前面一篇博客(https://blog.csdn.net/avideointerfaces/article/details/89111955)。遇到的问题及其解决方法在caff...原创 2020-03-23 23:26:27 · 2479 阅读 · 2 评论 -
opencv cmake时如何正确识别pyhon库
前言在上一篇博客(https://blog.csdn.net/avideointerfaces/article/details/104830723)中有讲解,如果想要在python中正确的import我们自己编译的opencv版本,就必须在opencv cmake时指定/识别好python库,python可执行文件等。 只有这样,才能在python中import cv2后打印出想要的openc...原创 2020-03-18 23:34:46 · 2018 阅读 · 0 评论 -
import cv2失败问题的解决
前言在ubuntu上已经成功make and make install openv4.1.0代码,并且make之前已经安装好python,但是在python中import cv2还是失败,如下图所示。解决解决办法很简答,即敲入下面命令:sudo apt-get install python-opencv再次在python下敲入 import cv2就可以了,如下图所示。...原创 2020-03-12 23:13:28 · 6812 阅读 · 0 评论 -
Ubuntu上CUDNN下载及安装过程详细介绍
前言下载https://developer.nvidia.com/cudnn安装tar -xzvf cudnn-9.1-linux-x64-v7.tgzsudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib...原创 2020-03-11 23:15:44 · 7460 阅读 · 1 评论 -
语义分割学习系列(十)caffe segnet的cudnn版本编译
前言系列(九)提到的caffe segnet(https://github.com/alexgkendall/caffe-segnet)所基于的cudnn版本很旧,为2.0。但是Alex推荐另外一个开源项目(https://github.com/TimoSaemann/caffe-segnet-cudnn5),它的cudnn版本为5.1。这里就介绍后面这个项目如何在一个较新的ubuntu平台上...原创 2020-03-09 00:05:54 · 823 阅读 · 0 评论 -
语义分割学习系列(九)caffe segnet代码的编译
前言segnet语义分割模型是一种经典的Encoder-Decoder的全卷积网络模型。github上有比较多使用pytorch框架来该模型的实现。而论文作者Alex是基于caffe框架来对它进行复现。 、我们这里考虑是后者,其对应的github地址为https://github.com/alexgkendall/caffe-segnet代码下载及准备首先下载代码,如下图所示。 网...原创 2020-03-06 23:30:01 · 1006 阅读 · 0 评论 -
语义分割学习系列(八)结合代码分析FCN模型结构
前言FCN模型结构往简答说,就是先用VGG类似的卷积网络进行特征提取,然后再对特征图进行反卷积(deconvolution)来将其投影到像素空间从而实现逐个逐个像素的分类。结合代码分析模型结构说起来简单,不过还是需要结合代码把其细节部分讲清楚。在train.py中,只用了两行代码就创建了FCN模型。vgg_model = models.VGGNet(requires_gra...原创 2020-02-18 23:10:19 · 1679 阅读 · 0 评论 -
语义分割学习系列(七)FCN模型加载VOC格式数据集的代码分析
前言无论是哪个语义分割算法模型,比如FCN或segnet等,都会相应的代码来读取、加载以及预处理不同格式的数据集。毕竟每个格式数据集的目录组织形式都不尽相同。加载VOC数据集的代码分析在train.py中,构建VOC train和val数据集对象的代码分别是:train_data = voc_loader.VOC2012ClassSeg(root=data_path, split...原创 2020-02-16 23:19:23 · 1541 阅读 · 0 评论 -
语义分割学习系列(六)基于自己的数据集来训练FCN模型
前言由于系列(五)中提到的github开源项目只针对VOC2012格式数据集进行FCN模型训练,所以为了方便起见,我们在对自己数据集进行标注完成后,需要先转换成VOC格式再来用该项目代码训练我们自己的FCN模型。数据格式转换1)将所有标注结果文件(每个样本图片都对应一个json文件)放在一个目录里面。2)仿照json_to_dataset.py,写一个脚本来遍历上面目录里面所有js...原创 2020-02-15 23:36:12 · 1116 阅读 · 0 评论 -
语义分割学习系列(五) 基于VOC2012数据集的FCN模型训练
前言 本文先介绍VOC2012数据集,然后再基于GitHub上的一个开源项目对VOC2012数据集训练出一个FCN算法模型。VOC2012数据集 VOC2012基本数据集分为两个部分:Train/Validation和Test。 前者大概1.9GB,后者大约1.8GB。大家可以自行去网上搜索并下载。我们这里主要讲第一个部分,其对应的包为:VOCtrainval_11...原创 2020-02-09 00:00:46 · 3627 阅读 · 4 评论 -
语义分割学习系列(四)cpu和gpu版本的pytorch及其环境安装
前言追根溯源,pytorch来自于torch,不过torch使用小众化的luna语言,而pytorch则是python,当然,pytorch在很多框架设计思想方面都做了更新。 我们这里也打算用pytorch框架来训练语义分割模型。安装pytorch在使用pytorch框架前,必须先安装。 其过程相对还是比较简单的。我这里的平台是:ubuntu18.0.4+python3.6先尝试下...原创 2020-02-03 23:27:08 · 960 阅读 · 0 评论 -
语义分割学习系列(三)cityscapes数据集介绍
前言 常见的语义分割数据集有VOC2012, MS COCO以及Cityscapes等。 今天我们先来介绍Cityscapes数据集简介 Cityscapes是关于城市街道场景的语义理解图片数据集。它主要包含来自50个不同城市的街道场景,拥有5000张在城市环境中驾驶场景的高质量像素级注释图像(其中 2975 for train,500 for val,1525 for test...原创 2020-02-01 23:56:28 · 27701 阅读 · 25 评论 -
语义分割学习系列(二)转换json文件为训练数据
前言 用labelme对样本图片进行前景目标的轮廓标注后,按CTRL+S就可以将标注结果保存为对应的json文件。但是这个json文件并不能直接用来进行训练/它还需要另外一个脚本或工具来转换成真正的可训练的样本数据。转换 这个工具名叫:labelme_json_to_dataset,直接可以在cmd窗口运行它,后面跟着第一个参数为待转换的json文件,第二个参数来指定生成的训练数...原创 2020-01-26 23:48:50 · 4360 阅读 · 7 评论 -
语义分割学习系列(一)labelme的安装
前言labelme是语义/实例分割模型训练前对样本数据进行标注的软件,就好比labelimage是目标检测训练数据的标注软件一样。labelme既可以在windows上安装又可以在ubuntu上安装。对于windows平台,又可以分为Anaconda和普通安装两种情况。本人没有安装Anaconda软件,所以只介绍普通安装的过程。labelme安装labelme的python版源代码是该...原创 2020-01-21 23:54:12 · 922 阅读 · 0 评论