自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 NMS算法实现

import numpy as npdef nms(dets, thresh): # x1, y1, x2, y2, score x1, y1, x2, y2, scores = dets[:, 0], dets[:, 1], dets[:, 2], dets[:, 3], dets[:, 4] areas = (x2 - x1 + 1) * (y2 - y1 + 1) # 各个方框的面积 order = scores.argsort()[::-1] # 按置信度排序后的

2020-09-03 00:03:13 642

原创 机器学习--身份证号识别

import cv2import osimport numpy as npfrom sklearn import svmfrom sklearn import neighborsfrom sklearn.neural_network import MLPClassifier# 垂直投影,分割字符def verticle_projection(thresh1): h, w = thresh1.shape[:] a = [0] * w for j in range(w)

2020-08-28 23:23:03 897

原创 OpenCV-图像特征提取方法

"""特征提取方法:1. 基于结构形态的特征提取; 2. 基于几何分布的特征提取基于结构形态的特征提取主要是将图像的结构形态转化为特征向量,主要包括边界特征法、傅立叶特征算子法、形状不变矩法以及几何参数法""""""边界特征法主要关注图像边界部分的特征,主要包括霍夫变换法和边界方向直方图法霍夫变换:原始坐标系下的一个点对应于参数坐标的一条线,将原始坐标下的各点投影到参数坐标后,会发现有聚集的点,这些聚集的点构成原始坐标下的直线边界方向直方图:首先利用常见的边缘检测算子求图像边缘,再作出关于边

2020-08-27 23:59:56 3653 1

原创 使用MNN在Android上部署mnist模型

本文使用JNI技术在Android平台部署深度学习模型,并使用MNN框架进行模型推理。模型及C++程序准备mnist-mnnAndroid环境配置打开Android studio, 创建一个Native C++工程,并配置OpenCV。在Android中使用OpenCV在PC上编译MNN-Android的动态链接库MNN安装和编译CMakeLists.txt编写在jni中编译C/C++程序有两种方法:一是使用ndk-build(需要配置.mk文件),二是使用CMake,本文使用

2020-08-19 22:56:25 5603 7

原创 Retinaface代码解读(基于pytorch)

论文地址:https://arxiv.org/pdf/1905.00641.pdfpytorch实现:Retinaface

2020-08-18 22:40:20 1446

原创 MNN介绍、安装和编译

MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。整体特点轻量性• 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。• iOS平台:armv7+arm64静态库大小5MB左右,链接生成可执行文件增加大小620KB左右,metallib文件600

2020-08-17 23:55:32 11470

原创 使用MNN进行模型推理(ubuntu)

MNN是阿里开源的针对模型在移动端部署的框架,在模型移植的前期,我们往往需要经历代码调试的过程,而这个过程在PC端进行会比较方便。本文记录在ubuntu上MNN的运行环境配置,以及使用MNN进行推理的主要步骤。本文所用模型为一个mnist模型,模型由TensorFlow训练,并转化为.mnn模型,推理程序主要依赖OpenCV和MNN两个库。环境配置如果你习惯于使用QT,可以参考以下内容编写.pro文件进行qmake:CONFIG += c++11TARGET = mnistCONFIG +

2020-08-17 23:33:02 4597 1

原创 目标检测中的常用模块总结

FPN一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。图中放大的区域就是横向连接,这里1*1的卷积核的主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小。pytorch实现import torchimport torch.nn as nnimport torch.nn.functional as Fdef conv_bn(inp, oup, stride = 1, leaky = 0):

2020-08-13 23:45:07 973

原创 Android工程中配置OpenCV

本文记录在Android studio中配置OpenCV,并利用其进行简单的图像处理,将结果图像显示出来,主要用到JNI技术。环境安装安装Android相关环境各个系统下安装都是大同小异,安装jdk,sdk,ndk,AS,可以参考以下博客:安装Android StudioUbuntu: Ubuntu18.04安装Android StudioWindows:Windows安装Android StudioMac:Mac 安装Android Studio下载opencv的安卓包到open

2020-08-11 17:03:36 1052

原创 JAVA中的JNI技术简介

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 [1] 从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作

2020-08-10 23:39:25 1100

原创 图像缩放(cv:resize)--几种不同的插值算法

在一些情况下,我们需要对图像的大小进行缩放以满足特定的需求。比如在训练一个图像分类的模型时候,深度卷积网络要求网络的输入大小是一致的,所以我们在把图像喂给模型之前要先进行缩放,在opencv中对应的方法是“cv:resize()”。函数原型:void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )src 输入图像dst 经过

2020-08-09 23:31:47 1707

原创 opencv获取图像中的ROI区域

C++ Mat image = imread("", -1); // 法一, 使用Rect类 Mat ROI = image(Rect(10, 10, 20, 20)); // 法二, 使用Range类, 先是行的范围,后是列的范围 Mat ROI2 = image(Range(10,30), Range(10, 30));Pythonimg = cv2.imread('', -1)# 行的范围, 列的范围, 通道的范围ROI = img[10: 30, 1

2020-07-27 12:26:08 2490

原创 opencv读取本地视频, 并保存视频帧

#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgcodecs/imgcodecs.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>using namespace std;using namespace

2020-07-27 11:30:43 696

原创 Yolov5训练笔记

   Yolov4刚出来没多久,就迎来了Yolov5的面世,尽管其名称还存在很多争议(它配不配叫yolov5的问题),因为其主要是一些工程方面的优化,没有相应的论文,其性能显著优于yolo之前的版本,也包括yolov4。对于我个人而言,好用就行了!本文详细介绍使用yolov5训练自己的数据集的过程。安装Yolov5将yolov5的代码从github拉下来git clone https://github.com/ultralytics/yolov5安装相应的环境依

2020-07-15 16:24:03 3451 4

原创 yolov3算法理解

论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf摘要相较yolov2而言,yolov3模型稍大,但是在提升了检测精度的同时仍然保持着不错的计算速度。对于320x320的输入图像,yolov3耗时22ms。Yolov3的检测精度为57.9AP50,比精度相当的SSD算法快3倍,比Retinanet快3.8倍。算法结构边界框预测和Yolo9000一样,Yolov3仍然采用聚类的方法计算出anchor boxes,每一个单元格有3个anch

2020-07-15 00:08:42 882

原创 Yolov4论文阅读

论文地址:https://arxiv.org/pdf/2004.10934.pdfyolov4和yolov5两个模型相继在四五月份出来(尽管后者的名字还存在一些争议),最近正好有一个目标检测的任务要做,就试了试yolov5,只用yolov5s网络的默认参数在自己的数据集上训练就达到了很好的检测效果,速度也相当快(在GTX1070上检测一帧640x640的图像耗时仅仅8ms)。然而yolov5在很大程度上只是从工程上对yolov4进行了优化,也没有相应的论文,所以把yolov4的论文仔细阅读了一下,发现文章

2020-07-14 00:32:55 999

原创 使用TensorRT部署Pytorch模型

TensorRT是Nvidia公司出的能加速模型推理的框架,本文记录使用TensorRT部署Pytorch模型的过程。1.Pytorch模型转ONNX模型pytorch模型转化为TensorRT有两种路径,一种是先把pytorch的pt模型转化为onnx,然后再转化为TensorRT;另一种是直接把pytorch的pt模型转成TensorRT。本文先将Pytorch模型转ONNX模型。import torchfrom torch.autograd import Variableimport onn

2020-06-15 17:55:13 6746 13

原创 使用pytorch的C++API部署图像分类模型

在部署pytorch模型时候,使用C++ API能有更高的效率,本文记录使用C++ API部署一个图像分类模型的过程。1.模型转换首先需要将pytorch模型转化为Torch Script,Torch Script是PyTorch模型的一种表示,可以被Torch Script编译器理解,编译和序列化。用torch script把torch模型转成c++接口可读的模型有两种方式:Tracing && Annotation. tracing比Annotation简单,但只适合结构固定的网络模

2020-06-15 16:18:58 1360 1

原创 TensorRT介绍、安装和测试

1. What is TensorRT ?      TensorRT的核心是一个C++库,能在NVIDIA的图像处理单元(GPU)上进行高性能的推断。它为与TensorFlow, Caffe, PyTorch, MXNet等主流训练框架进行互补工作而设计,专注于在GPU上高效地运行训练好的网络,生成预测结果。  ...

2020-04-14 16:47:40 4422 5

原创 Git使用教程(超详细)

1.取得项目的Git仓库   有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。1.1 从当前目录初始化   要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行$ git init &nbsp...

2020-04-09 18:22:11 264 2

原创 用Pytorch实现图像分类

概述本文记录使用pytorch深度学习框架来实现一个图像分类任务的过程,搭建一个图像分类的工程主要包括以下过程:1.定义一个加载数据的类2.构建网络结构3.编写训练代码4.编写验证/测试代码一、 定义数据类pytorch中提供了两个类用于训练数据的加载,分别是torch.utils.data.Dataset和 torch.utils.data.DataLoader。Dataset...

2020-03-28 22:44:25 8539 3

空空如也

空空如也

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

TA关注的人

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