- 博客(113)
- 资源 (10)
- 收藏
- 关注
原创 C# yolo10使用onnx推理
本篇总结C#端使用yolo10的onnx文件做模型推理,主要使用Microsoft.ML.OnnxRuntime.Gpu这个库。需要注意的是Microsoft.ML.OnnxRuntime 和 Microsoft.ML.OnnxRuntime.Gpu 这2库只装1个就行,CPU就装前者,反之后者。然后需要注意系统安装的CUDA版本、CUDNN、OnnxRuntime这3者的版本一致,可在这里查询。这里使用的是 Microsoft.ML.OnnxRuntime.Gpu 版本 1.15.1版本。
2024-11-12 16:21:07
2641
6
原创 C#--DirectShowLib 关闭自动白平衡和自动曝光时间
因项目需要需关闭相机自身的自动白平衡和自动曝光时间,统统设定为恒定值,开始实验了opencvCvSharp,但是不起作用,故实验了更底层的 DirectShowLib ,可成功关闭相机自带的自动白平衡和自动曝光时间,再使用opencvCvSharp 读取摄像头
2024-08-03 17:41:06
557
原创 C# OpenCvSharp 打开4K高清摄像头
整了个1200w像素的usb摄像头,使用 OpenCvSharp读取,读取和设置分辨率代码耗时居然10几秒,查询资料发现,必须对VideoCapture进行设置,使用DSHOW模式打开,并且设置分辨率代码下必须增加 指定MJPG编码格式.效果丝滑,基本流畅...
2024-08-03 10:11:36
427
原创 Sahi+Yolov10
sahi 目前支持yolo5\yolo8\mmdet\detection2 等等算法,本篇主要通过实验onnx加载模型的方式使sahi支持yolov10。修改 _post_process 函数 , 主要是由于yolov8 和yolov10 输出 shape有所不同,yolov10没有nms。首先使用 conda创建虚拟环境,配置好yolov10环境,然后 pip 将sahi 安装上。将yolov10 模型导出为 onnx格式文件,命令窗cd 至 模型文件所在目录 执行。
2024-07-06 17:18:31
1316
3
原创 C# 实现去除多行文本框光标闪烁,并设置行距
本篇主要通过继承RichTextBox 的方式实现去除多行文本框的光标闪烁,以及能够设置行距大小,这是因为C#提供的TextBox 和 RichTextBox 本身无这样的功能。去除多行文本框的光标闪烁,以及能够设置行距大小,这样看起来就更为美观简洁,如果只是用于显示多行文字。封装 RichTextBox 为CustomTextBox。
2024-06-21 09:33:11
544
原创 C#和python端通信之使用共享内存
之后读取图像,并创建和写入至一个大小为960*640*4的共享内存,名为cam1,存放一个byte[]变量 , 然后 flag1 写入1,循环读取done内存,若为1,则将result 内存读取出为string 并显示textBox1。循环读取flag1共享内存,若为1,则读取cam1数据,还原为图像数据,将2写入flag1,并将json字符串data写入result内存区,将1写入done,显示图像数据。创建了一个大小为1的共享内存,名为flag1,存放一个byte变量,初始写入0。
2024-06-20 16:15:55
911
原创 yolov10打包为exe
pyinstaller打包指令不要用 -F ,-F是打包为一整个exe,容易出现问题,使用以下指令。首先下载官方代码至本机,并使用conda创建虚拟环境,并安装好yolov10所需库。下载官方模型权重 yolov10m.pt ,并在根目录下创建推理代码。打包将在dist文件夹下生成exe,以及相应独立包文件,运行exe。本节实验将官方yolov10推理程序打包为exe运行。(3)安装pyinstall ,并执行打包指令。打包过程,可能会被防火墙拦截,报病毒错误。接下来将该代码打包为exe,
2024-06-20 14:17:36
1458
3
原创 yolov10--C#接口
该原始模型,需要被转换为openvinocsharp所支持的模型格式,为此需要建立一个yolov10的python环境,使用conda创建,requirements.txt 为 yolov10官方代码下的所需包。这里为了演示,使用官方yolov10m模型(其他大小的模型同理)做演示,可从下方下载,当然也可以是自己训练好的模型。运行代码,可以得到统计的代码加载、预处理、推理的运行时间,并且得到识别结果,类别号、置信度、以及位置。在该创建好的虚拟环境,cd 至下载好的yolov10m.pt 所在目录,执行。
2024-06-18 18:39:14
1976
2
原创 python--修改sys.path引用包
遇到个坑,如果把python代码放到一个文件夹file,并在该文件夹同级目录的a.py文件引用该文件夹file里的b.py,可以在a.py 的开头使用 sys.path 将 file 的路径导入,这样 b.py 可找到原先的引用关系。
2024-02-23 11:18:27
555
原创 halcon 缺陷检测--形状匹配+差分
本篇主要总结使用halcon 做缺陷检测的一个常用思路,当一张图片拍摄多个待检测工件,常用方法是由预先建立好的模版图像,采用 形状匹配+查分方法抠下每个工件,逐个检测。并且可以把每个茶杯使用眼膜仿射变换到各个匹配好的茶杯位置,并由reduce_domain 抠取下来保存在 RegionWaits 中。取第一个茶杯ROI作为模版,提取边缘作为形状匹配对的模版。代码是对一张有10个茶杯的图片进行演示。形状匹配比灰度值匹配要更为可靠。最后将边缘匹配到各个茶杯的效果。
2024-01-04 18:06:47
1644
原创 C++ windows TCP和UDP通信学习
服务端,相比较于TCP ,UDP客户端无需 connect ,服务端也无需accept ,socket套接字初始化,TCP的是 SOCK_STREAM 而UDP的是 SOCK_DGRAM,UDP接收和发送用的是recvfrom 和 sendto , TCP用的是recv和send。本章主要总结 C++ windows 下tcp和 udp通信的一些要点。可参考两张简单的通信流程图。(1)tcp的通信过程。(2)UDP的通信过程。
2023-11-30 18:24:04
1039
原创 python--tornado服务
Tornado是一个基于非阻塞I/O的Web框架,具有可以处理大量并发连接,适用于高并发的场景的高性能,轻量级和异步支持的优点。下面的client端向分别向2个服务发送get请求和post请求,服务将处理请求并返回。本篇主要展示了使用 tornado http post 和 get 服务。tornado http post 和 get 服务。
2023-06-30 17:58:30
383
原创 python-注册nacos服务
Nacos(Naming and Configuration Service)是一个用于实现服务注册和发现的开源项目。Nacos注册服务的主要作用是帮助微服务架构中的各个服务实例进行注册和发现,以便于服务之间的通信和协作,另外,也可以在nacos上简历一些配置,服务可以获取配置,便于配置的修改管理。本篇主要是python 登陆nacos平台,对grpc服务(也可以是http服务)注册的示例。
2023-06-29 17:22:39
2655
原创 python--multiprocessing设置函数运算超时限制
本篇尝试对运行的python函数设置时间限制,超时则报错结束运行,因为在某些时候运行可能会存在限时的情况。方法是使用multiprocessing,将函数作为一个子进程,设置子进程时间,使用join堵塞主进程。
2023-02-15 14:37:02
1929
原创 opencv二值化找轮廓检测背景简单小物体
本篇主要是针对背景简单,且具有固定颜色的蛋类小物体,方法为在灰度化时选用图片的HSV中的S通道,再使用opencv 二值化找轮廓大法可将小物体框出。可以看到,对于这种背景简单的,取HSV中的S做灰度化二值化,效果非常不错,再用找轮廓大法,可以获得带方向的最小外接矩形...原理很简单,图片-》取S通道灰度化-》OTSU二值化-》findcontours找到轮廓。
2022-09-28 10:37:25
1534
原创 cv2条码识别
本文主要使用opencv 的Python接口cv2,原理较为简单,单张先通过二值化找轮廓的方式找到轮廓的四个点,然后对点做排序,之后再计算轮廓的外接矩形的4个点,由这2组点做 warpPerspective 透射变换得到矫正的条码,最后使用zbar库做识别。......
2022-08-29 14:30:46
1429
原创 pytorch(11)-- crnn 车牌端到端识别
本文主要记录了使用crnn 对车牌图片做端到端识别,即不用对车牌字符做逐个字符分割识别,车牌第一个字符为汉字,共有31个,第2个字符为去除了“O”和“I”这2个大写字母,工24个大写字母,其余5位均为24个大写字母+10个阿拉伯数字的形式,再加上使用CRNN,需要有空白字符,放在第65位,共有66个字符......
2022-08-26 15:42:32
6623
10
原创 pytorch(10)-- 知识蒸馏
一、前言本篇讨论知识蒸馏,简单而言就是使用一个复杂但性能较好的模型作为教师模型,带动一个简单结构的学生模型迭代训练,使学生模型的数据拟合结果向教师模型结果趋近,从而提高简单模型的效果代码将使用cifa10数据集上训练达到95%准确率的模型作为教师模型,对一个简单3层卷积网络做蒸馏二、代码 教师模型采用 pytorch官方导出,加载训练好的模型teach_model = resnet18(pretrained=False)incha...
2022-02-18 15:28:40
1824
2
原创 pytorch(9)-- 利用resnet18使cifa10数据集达到95%准确率
一、前言本文尝试使用resnet18训练测试cifa10数据集,尽可能取得较高的准确率,关键在于使用预训练模型,在trainsform中 ,将数据resize 到 224,224 , 加入随机上下左右翻转数据增强,再使用imagnet的均值方差做归一化。二、代码# -*- coding: utf-8 -*-"""Created on Tue Feb 8 09:53:54 2022trainval.py"""import torchimport torchvisionimp
2022-02-10 11:02:07
4746
原创 vs2019 编译生成dll,lib,并做调用
一、前言本文实验在VS2019将C++源码封装为dll、lib ,并做调用二、欲封装代码 封装代码头文件和cpp文件如下://util.h#ifndef _Util_H_#define _Util_H_#include <iostream>#include<opencv2\opencv.hpp>#include <stdio.h>#include <list> using namespace ...
2022-01-14 15:08:23
3368
转载 分享一个图像上画框程序
一、前言二、代码def getOneImgAnno(img_path): src = cv2.imread(img_path) h,w = src.shape[:2] v = 155 img = src[ v :h-v , v:w-v] img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_gray = cv2.blur(img_gray,(5,5)) ret, th = cv2.t
2021-12-29 09:37:58
440
原创 差异扩展(difference expance )可逆水印算法总结
一、前言 最近在实验个很早就提出来的差异扩展(difference expance )可逆水印,将水印信息嵌入至图像,再做完好提取以及完好恢复图像。二、原理 (1)嵌入过程 图像中取一对像素相邻对(x,y),可以水平相邻,也可以垂直相邻 计算均值 l= [ (x+y )/2 ] , 差值 h= x-y , 中括号为取整运算 假设要隐藏的二值信息为 b , b为0 或 1 则计算 hs =...
2021-11-17 20:50:48
3426
原创 pytorch(8)-- resnet101 迁移学习记录
一、前言 本篇记录使用 pytorch 官方 resnet101 实现迁移学习,迁移学习是当前深度学习领域的一系列通用的解决方案,而不是一个具体的算法模型。Pre-training + fine-tuning(预训练+调参) 的迁移学习方式是现在深度学习中一个非常流行的迁移学习方式,有以下3步(1)把预训练模型当做特征提取器: TensorFlow或者Pytorch都有ImageNet上预训练好的模型,将最后一层全连接层(原始的是1000个类别或者更多)改成你自己的分类任务的种类进行输出,或...
2021-10-08 18:10:31
2167
原创 pytorch(7)--目标检测数据很少时候的数据增强
一、前言 记录一个用于yolo 目标检测的数据增强代码,当数据很少时,可对数据做 亮度对比度随机变化、裁减、上下左右翻转。二、上代码import PIL.Image as Imageimport osfrom torchvision import transforms as transformsimport randomfrom PIL import ImageDrawimport cv2import numpy as npdef getBoxTxt( txt_pa..
2021-06-03 20:21:31
470
原创 pytorch(6)--深度置信网络
一、前言 本文主要使用pytorch 实现的DBN网络,用于对数据做回归,单个数据维度为(N,21),其中N为不定长,输出则为(N,1),对应N个值DBN网络结构: 首层神经元数量输入为变量长度21,中间为RBM网络,如本篇使用的网络结构诶[128,64,32,16],为一个4层的RBM网络结构,训练时RBM需要逐层做训练;在RBM训练后,再接上BP神经网络,再对BP网络做微调,回归损失函数使用MSE loss。二、深度置信网络实现代码#DBN.pyimpor...
2021-04-26 11:37:57
3857
4
原创 pytorch(5)--unet,unet++ 、 融合deep supervision的unet++
一、前言 本篇总结unet、unet++及添加了deep supervision的unet++ 原理及代码pytorch实现二、原理三、代码
2021-04-25 11:52:07
2506
6
原创 pytorch(4)--conv3d
一、前言 本篇主要记录pytorch 下的 conv3d 原理及一个网络示例C3D参考自:https://blog.youkuaiyun.com/weixin_43844219/article/details/104134838二、原理 三、代码实现pytorch 的一个示例网络,链接https://github.com/jjboy/c3d-pytorchC3D 实现如下:import torchimport torch.nn as nnclass C3D(n...
2021-04-14 09:24:44
3122
2
原创 pytorch(3)--VGG block和 Resnet block
一、前言 本篇记录 VGG Block和Resnet Block 经典结构二、VGGblock VGG Block 可由两层conv3或三层conv3组成,两层的感受野和一层conv5一样,三层conv3的感受野和一层conv7是一样的,但是能够减少计算量,以下为不同的VGGblock搭配的VGG网络包含两层conv3的VGG block 代码如下,CBR-CBR,无池化层class VGGBlock(nn.Module): def __init__(self,...
2021-03-22 20:49:55
4288
原创 pytorch(2)--记录自己常用到的小网络
一、前言 本篇记录自己常用到的小网络,分类简单的小图片时,可以获得较好的效果二、代码class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.layer1 = nn.Sequential( nn.Conv2d(3, 6, 5, padding=2), nn.MaxPool2d(kernel_size=2, s..
2021-03-22 16:39:08
233
原创 pytorch(1)--分类图片
一、前言 刚毕业用的是大火大热的caffe,如今却逐渐无人问津,2020年转向pytorch,在此记录下搬过的砖... 首篇记录下pytorch 分类图片代码二、训练集准备 本次对7类图片做训练和预测,7类图片分别保存于7个文件夹内,7个文件夹保存于dataset文件夹内,如下 以下代码 genTxt.py 生成用于 训练、验证、测试的txt文件#coding=utf-8#genTxt.pyimport os,cv2import random,s...
2021-03-18 11:34:30
683
1
原创 使用python读写VOC2007形式存放的xml标签文件
一、前言 本节主要记录,使用python读写VOC2007形式存放的xml标签文件二、XML 标签文件格式打开一个已打标注的XML文件,如下所示:三、使用python读写其中的标注信息xmin ymin xmax ymaximport xml.etree.ElementTree as ETdef fixXml( xml_path): tree=ET.parse(xml_path)#打开文件 root = tree.getroot() #.
2020-10-15 19:22:07
779
原创 目标检测学习(2)map计算
一、前言 本篇主要介绍Map的计算,主要参考以下两篇文章https://blog.youkuaiyun.com/hsqyc/article/details/81702437https://blog.youkuaiyun.com/zhou4411781/article/details/105839357二、TP、TN、FP、FN这4个值由以下图就很好理解了TP:实际为真,预测为真TN:实际为假,预测为假FP:实际为假,预测为真FN:实际为真,预测为假三、Accuracy、Precis...
2020-09-14 10:52:00
709
原创 目标检测学习(1)yolo-v4 训练、检测及评测
一、前言 本篇主要记录对yolo4进行训练、检测及评测二、下载好代码及编译到作者官网 下载代码,git clone https://github.com/AlexeyAB/darknet.git打开makefile文件进行修改,文件修改如下,当然要先装好CUDA10.0和cudnn后执行make -j8三、在darknet根目录下创建VOCdevkit数据集 数据集的格式采用VOC2007,详见如下图JPEGImages:放图片ImageSet...
2020-09-14 09:50:56
1510
原创 Faster rcnn end to end 训练方法总结
一、前言 本篇主要记录Faster rcnn 采用end to end 训练方式做训练二、制作自己的VOC2007格式的数据集1、首先创建好路径 py-faster-rcnn/data/VOCdevkit2007/VOC20072、在VOC2007下分别创建文件夹Annotations 、JPEGImages、ImageSets/Main3、把图片按照 00000×...
2019-10-19 17:13:57
963
原创 Faster rcnn alt opt 训练方法总结
一、前言 本篇主要记录Faster rcnn 采用alt opt 训练方式做训练二、制作自己的VOC2007格式的数据集 这一部分可以参考 end to end 训练篇https://mp.youkuaiyun.com/postedit/96730858的章节二,这里不再重复三、采用VGG_CNN_M_1024模型训练1 、修改models/pascal_voc/VGG_CN...
2019-10-19 17:11:46
852
转载 炒冷饭-Alexnet、vggnet、Google Inception Net、resNet、resnet后续改进
一、前言 本篇转载自 https://blog.youkuaiyun.com/m0_37733057/article/details/70232378 , 文章对经典的深度神经网络的发展做了一些概括,另外这里也加了一些补充说明二、Alexnet AlexNet是现代深度CNN的奠基之作。2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNe...
2018-12-08 11:19:57
1546
原创 caffe之保存和读入caffmodel文件
一、caffe如何将卷积层或网络层的权值blob给保存下来的? 首先Solver类在Step(intiters)中调用了Snapshot()函数,在voidSolver<Dtype>::Snapshot()函数中能看到保存caffemodel文件的重要函数 SnapshotToBinaryProto(),该函数详细如下:可看到该函数里初始化了NetParameternet_param...
2018-07-14 09:50:21
6433
转载 c++中的 虚函数 纯虚函数 虚基类
一、前言 原文转载自 https://blog.youkuaiyun.com/a345203172/article/details/21697687,为了理解下C++中虚函数 纯虚函数 虚基类的基础知识点。二、虚函数 纯虚函数 虚基类三者区别 1.虚函数是用于多态中virtual修饰父类函数,确保父类指针调用子类对象时,运行子类函数的。 2.纯虚函数是用来定义接口的,也就是基类...
2018-06-27 21:23:06
4243
原创 ctags+taglist+winmanger 打造vim 编辑器
一、前言 本篇主要使用ctags+taglist+winmanger 将 vim 编辑器打造为具有IDE般的功能 ctags:是vim下方便代码阅读的工具,通过这一工具能够很方便的追溯变量、函数的定义以及调用 taglist:与ctags搭配使用,将在vim的左侧或右侧开启一个窗口,在该窗口显示当前文件中有哪些变量、函数,并可进行快速 ...
2018-06-17 11:57:51
563
unet-sense.zip
2021-04-25
3922张仅包含车牌的图片,图片名字表示车牌号码
2017-08-09
基于Qt和opencv的身份证号码识别系统
2016-05-24
使用opencv的SVM和神经网络实现车牌识别
2016-05-08
在Qt中使用opencv对视频卡通化处理
2016-04-27
基于DWT和MFCC的说话人识别系统
2016-02-02
python基础教程第二版PDF及代码
2016-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人