自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ltshan139的专栏

专注传统图像处理算法、基于深度学习的计算机视觉算法以及AI边缘计算

  • 博客(165)
  • 资源 (5)
  • 收藏
  • 关注

原创 在WSL中使能防火墙的问题解决

在WSL中使能防火墙的问题解决

2024-03-07 16:31:49 285

原创 基于FastChat构建的OpenAPI访问有问题

基于FastChat构建的OpenAPI访问有问题

2024-03-05 17:11:05 711 2

原创 基于dashscope在线调用千问大模型

基于dashscope在线调用千问大模型

2024-03-05 10:42:00 635

原创 基于FastAPI构造一个AI模型部署应用

fastapi是目前一个比较流行的python web框架,在大模型日益流行的今天,其云端部署和应用大多数都是基于fastapi框架。所以掌握和理解fastapi框架基本代码和用法尤显重要。需要注意的是,fastapi主要是通过app对象提供了web服务端的实现代码,对于一个完整应用来说,还需要uvicorn组件来启动web服务,如果想要可视化UI的话,可以考虑使用streamlit前端。

2024-03-05 10:00:59 464

原创 vscode如何正确访问WSL里面的代码并能debug

windows可以通过WSL建立ubuntu环境,但如果windows上的vscode直接访问ubuntu里面的代码的话是不能保持linux开发环境的,如下图所示,在vscode的terminal窗口输入make或make clean就会遇到下面的错误。容易出现错误的地方是要debug 的可执行程序及其参数的添加,以及 "miDebuggerPath": "/usr/bin/gdb"的指定。"args": [可执行程序所带的参数,比如"-p", "/work/xxx/xxx"],

2023-12-22 00:14:31 472

原创 Ubuntu20.04上编译安装TVM

本文主要讲述如何在ubuntu20.04平台上编译TVM代码并在python中import tvm成功。aptitude versions cmake #寻找可以安装的cmake版本。sudo apt-get install cmake=3.20.2 #失败。vi /work/tvm/build/config.cmake,并作如下修改。解决cmake版本问题后,tvm代码就顺利编译成功。并将tvm的安装路径添加到PYTHONPATH。cmake安装成功,并显示版本号为3.22。

2023-11-25 00:27:07 448

原创 windows11上安装WSL

当需要linux开发环境,又想在windows上进行一些日常处理或文字编辑工作,这种方式非常合适,当运行ubuntu时,系统load增加很小(几乎无感),而且两个系统之间的文件相互访问也相当方便。缺点是vmware加载ubuntu后系统会变慢很多,而且需要通过samba来实现windows和ubuntu之间的文件共享,不太方便。在windows资源管理器中,可以看到linux文件系统,点击进去能非常方便访问或修改其文件,还可以用vscode非常方便地编辑ubuntu上的代码。在开机时选择进入哪个系统。

2023-11-23 23:53:25 734

原创 如何在Matlab中调试C代码

前言我们都知道,在matlab主体程序中,可以通过Mex方式来调用c/c++文件中的函数。本文主要介绍,如何实现在matlab中调试被调用的C接口代码。

2021-05-28 23:45:09 2937 2

原创 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 1211

原创 嘉楠k210方案模型移植的简单梳理

前言k210是一个面向AIOT应用的低功耗,低成本芯片方案。 它目前支持的深度学习模型类型有tensorflow tflite, caffe1.0以及onnx。 值得注意的是,这3个模型类型所支持的算子有限,这会导致复杂些模型不能在k210上运行。k210另外一个缺点是,它内置了SRAM, 给ai模型的内存大小只有2MB,也就是说它只能支持2MB以内的模型。移植流程由于我们项目的模型是yolov3 tiny,而且做了裁剪只有4MB左右大小。再去做8bit量化后只有1MB大小,所以是可以在k210

2021-04-11 00:34:27 5250 6

原创 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 612

原创 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 1932 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 343 1

原创 gcc/g++编译参数顺序所引起的链接错误

问题描述在应用代码里面调用opencv API(比如imread imshow等),然后用gcc/g++编译就遇到了下面的链接错误。问题解析这个链接错误很显然是说opencv库没找到或版本不对而导致的。但是g++编译命令是有正确的把opencv库link进来,如下图所示。再三确认,/usr/local/lib_opencv343/lib下面是存在libopencv_world.so的。经过大半天的折腾,后来才发现是gcc编译参数顺序引起的。在gcc/g++命令中, -I(..

2021-02-27 00:14:36 772

原创 如何读写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 4140

原创 opencv源代码编译时遇到的问题(模块计算机类型“x64“与目标计算机类型“x86”冲突)的解决

前言opencv4.5.1于2020年12月份推出,是目前为止最新的一个正式版本,在DNN支持方面又有了较多的更新,值得研究和关注。不过很久没有在windows(win10, x64)上编译opencv源代码了,感觉有些手生,这里把遇到的三个问题罗列出来。opencv和对应版本的contribute代码获取我们都知道 ,对于某个版本的opencv代码而言,如果想把其对应的contrib代码编译进来,其版本必须对应。 那么这里面的第一个问题就是,如何下载到对应代码?答案是到GitHub上.

2021-01-19 15:59:18 1246

原创 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 1355 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 4509

原创 CUDA学习系列一: CUDA安装和例程运行

前言安装eerfaf

2020-09-14 12:45:43 3776

原创 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 1553

原创 《SSD和MobilenetSSD模型的训练,量化以及在海思芯片上的部署》视频课程的介绍

前言精心准备一个月,终于推出新的课程《SSD和MobilenetSSD模型的训练,量化以及在海思芯片上的部署》(链接:https://edu.csdn.net/course/detail/29888)。本课程通过实际操作讲解如何基于无人零售商品数据集来进行SSD和Mobilenet SSD两个模型的训练,以及它们的量化、仿真和海思开发板上运行。所有相关数据集,代码以及模型会全部提供。内容课程主要分为11章:1. caffe SSD框架代码下载及其编译2.基于无人零售商品数据集训练SS

2020-08-21 11:01:49 1025 1

原创 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 633

原创 海思芯片上LDC(镜头畸变校正)功能原理浅析

前言海思35xx芯片专门有一个模块GDC(Geometry Distortion Correction)来对畸变图片进行校正。它里面其实有两个应用case,一个是fisheye校正,另外一个是LDC镜头畸变校正。个人理解,两者主要区别是,前者主要用在摄像头镜头视角范围非常大,比如接近或超过180度,且想非常精细的对图像进行反畸变从而获得比较好的效果。 它一般需要先通过标定来获得摄像头畸变内参K1,K2,K3以及P1和P2(Kx指径向畸变参数,P指切向畸变参数),然后再进行反畸变。 而后者LDC主要用

2020-07-28 15:30:52 6652 1

原创 ‘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 1249

原创 基于自己的双目标定参数来运行海思DPU模块

前言海思sample DPU代码只是大概讲解了Rect和Match的api调用过程。可能有人还是对如何将自己标定出来的参数运行在DPU上比较茫然。基于此,本文把这个思路理清下,希望能有所帮助。查找表的求得在《结合sample代码来分析海思DPU模块运行原理》中有提到,我们标定完双目摄像头得到左右摄像头的内参和外参后,就可以调用initUndistortRectifyMap()来分别得到左、右摄像头在x和y方向上的映射表mapx和mapy。拿到mapx和mapy后,要做的第一步就是将mapx和

2020-07-09 17:53:00 2096 1

原创 《YOLOV3-Tiny模型的训练,量化以及在海思芯片上的部署》的视频课程介绍

前言本课程基于实际开发项目中的无人零售数据集来手把手教大家来训练yolov3 tiny模型,并且详细讲解将训练出来的模型如何移植到海思平台。视频课程链接如右所示:https://edu.csdn.net/course/detail/29887课纲本课程一共分为六个子部分:1.课程介绍2.darknet框架代码下载及其编译3.基于无人零售商品数据集训练yolov3 tiny a)无人零售数据集介绍 b)配置文件data和cfg的介绍和修改 c)模型训练和较优模...

2020-07-07 20:42:29 2590 6

原创 结合sample代码来分析海思DPU模块运行原理

前言海思DPU(Depth Process Unit)的中文翻译为深度信息处理单元,主要是来实现双目测距和三维重建的硬件加速功能从而提高实时性。海思SDK里面和DPU相关的文档资料很少,就两篇:《HiDPU工具使用指南》和《HiDPUAPI参考》。所以这里有必要结合sample代码来理清其思路。基本概念DPU包括两个子模块。一个叫RECT,注意这里不是矩形框的意思,而是rectify,即校正的意思,后面会进一步解释其原理。另一个模块叫Match,即匹配的意思。这些概念需要有些双目测距/重建的基础

2020-07-07 13:27:36 2947 2

原创 如何使用VPSS实现旋转功能

前言海思芯片里面VI,VPSS以及VGS都可以实现图片旋转功能。VI实现旋转的话,会导致后期保存的图片也实现了旋转;VGS实现旋转有些复杂,要多加不少代码;VPSS实现旋转相对很简单,而且不会影响原始照片。VPSS旋转VPSS有两个实现旋转的API:HI_MPI_VPSS_SetChnRotation(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, ROTATION_E enRotation);HI_S32 HI_MPI_VPSS_SetChnRotation

2020-06-19 11:56:16 2338 1

原创 《从YOLOV3到YOLOV4:算法原理及其实战》视频课程的介绍

前言本课程在介绍计算机视觉深度学习基本概念基础上,详尽讲解YOLOV3和YOLOV4的算法模型原理,并基于实际项目中的无人零售商品数据集来手把手教大家如何将它训练成YOLOV3和V4模型,最后对训练出来的模型集进行性能评估,从而挑选出最优模型。课程链接:https://edu.csdn.net/course/detail/29538课纲1。课程内容介绍、特色及其答疑2。计算机视觉深度学习基本概念及其yolo1,2,3的模型结构讲解3。darknet框架介绍及其安装4。darknet训练

2020-06-15 13:33:18 1179 3

原创 YOLOV4学习系列(三) 结合代码讲解DIOU-NMS

前言NMS(非最大抑制)是目标检测算法后处理中常用的技术,用来将redundant检测框给过滤掉。YOLOV4没有用经典的NMS,取而代之的是DIOU-NMS。本博客接下来会讲解其原理和代码实现。原理在经典的NMS中,得分最高的检测框和其它检测框逐一算出一个对应的IOU值,并将该值超过NMS threshold的框全部过滤掉。可以看出,在经典NMS算法中,IOU是唯一考量的因素。但是在实际应用场景中,当两个不同物体挨得很近时,由于IOU值比较大,往往经过NMS处理后,只剩下一个检测框,这样导

2020-06-10 12:03:03 10201 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 3418

原创 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 2060

原创 如何在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 3103

原创 双目测距系列(十)基于自己数据集训练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 4495 30

原创 《华为海思35xx开发板的SDK环境搭建》视频课程的介绍

前言本课程主要是介绍海思开发板SDK的环境搭建过程。课程链接:https://edu.csdn.net/course/play/28936课纲课程主要分为六大章:1)介绍课程内容、特色、目标以及答疑2)对3519av100 020版本的SDK进行梳理,并对交叉编译toolchain和sdk进行安装3)编译uboot代码以及使用tftp和hitool两种方式进行烧写4)编译kernel代码并烧写到板子里面。5)文件系统fs制作以及烧写6) 对sample模块进行梳.

2020-05-12 22:37:46 1887 6

原创 双目测距系列(九)monodepth2训练代码分析 下

前言在上面一篇文章中,我们对训练代码中的inputs和outputs获得做了简单分析。有了inputs和outpus后,就可以开始计算loss值了。这也是本文重点。图片预测函数的实现主要讲解下面这个代码。中文注释添加在里面。 def generate_images_pred(self, inputs, outputs): """Generate the wa...

2020-05-08 15:55:16 3638 1

原创 双目测距系列(八)monodepth2训练代码分析上

前言在系列七中,我们提到了train.py中实际上只有两行训练相关的代码,第一行是Trainer构造函数的调用,主要是初始化和数据集的构建,系列七主要是对这个过程进行了梳理。第二行是Trainer成员函数train的执行,这个是训练真正执行部分,本文着重来对它进行分析。训练数据集按batch来加载 def train(self): """Run the enti...

2020-05-08 11:36:39 4015 6

原创 双目测距系列(七)monodepth2训练前数据集准备过程的简析

前言上一篇文章说过,monodepth2模型有三种训练方式。针对我们的双目场景,准备使用stereo training方法。monodepth2的训练入口函数在train.py中,如下图所示。总共就2行代码,第一行代码(类Trainer的构造函数)主要是来初始化和数据集准备;第二行代码(Trainer类的成员函数)是真正执行训练过程。下文将结合代码讲解数据集准备过程。数据加...

2020-05-07 17:17:29 5240 1

原创 双目测距系列(六)monodepth2的三种训练方式

前言monodepth2有三种训练方式,其对应的命令如下:下面分别对这三种训练模式进行较详细解释 :1)单目训练monocular是单目的意思,而双目的英文则是binocular。现在基于深度学习方法对单目图像重构出三维世界非常流行。我个人觉得这里面的基础理论是SFM(structure From Motion)。直白讲,它是依靠运动视频的图像帧序列来进行三维重建。其优势很明显...

2020-05-04 23:18:07 4689 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 799

cityscapes公开数据集

语义分割公开数据集,其中train因为太大,被分成train1和train2两个部分。具体描述请参考 https://blog.csdn.net/avideointerfaces/article/details/104139298?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160147267619195246621825%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=160147267619195246

2020-09-30

ADC/DAC应用设计宝典

详细介绍ADC/DAC概念,原理,以及应用设计范例。

2012-02-12

模拟电视信号制式介绍

英文文档,详细介绍模拟电视信号PAL、NTSC制式的原理及其应用。

2012-02-12

AT89C51RE2 DATASHEET

详细介绍了89c51RE2的bank机制(支持64K以上的code size)以及相应的keil编译器设置。

2012-02-12

linux_mig_release.pdf

关于linux移植到S3C2410(arm9)上的好文

2011-05-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除