- 博客(105)
- 资源 (10)
- 收藏
- 关注
原创 python--修改sys.path引用包
遇到个坑,如果把python代码放到一个文件夹file,并在该文件夹同级目录的a.py文件引用该文件夹file里的b.py,可以在a.py 的开头使用 sys.path 将 file 的路径导入,这样 b.py 可找到原先的引用关系。
2024-02-23 11:18:27 414
原创 halcon 缺陷检测--形状匹配+差分
本篇主要总结使用halcon 做缺陷检测的一个常用思路,当一张图片拍摄多个待检测工件,常用方法是由预先建立好的模版图像,采用 形状匹配+查分方法抠下每个工件,逐个检测。并且可以把每个茶杯使用眼膜仿射变换到各个匹配好的茶杯位置,并由reduce_domain 抠取下来保存在 RegionWaits 中。取第一个茶杯ROI作为模版,提取边缘作为形状匹配对的模版。代码是对一张有10个茶杯的图片进行演示。形状匹配比灰度值匹配要更为可靠。最后将边缘匹配到各个茶杯的效果。
2024-01-04 18:06:47 651
原创 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 547
原创 python--tornado服务
Tornado是一个基于非阻塞I/O的Web框架,具有可以处理大量并发连接,适用于高并发的场景的高性能,轻量级和异步支持的优点。下面的client端向分别向2个服务发送get请求和post请求,服务将处理请求并返回。本篇主要展示了使用 tornado http post 和 get 服务。tornado http post 和 get 服务。
2023-06-30 17:58:30 307
原创 python-注册nacos服务
Nacos(Naming and Configuration Service)是一个用于实现服务注册和发现的开源项目。Nacos注册服务的主要作用是帮助微服务架构中的各个服务实例进行注册和发现,以便于服务之间的通信和协作,另外,也可以在nacos上简历一些配置,服务可以获取配置,便于配置的修改管理。本篇主要是python 登陆nacos平台,对grpc服务(也可以是http服务)注册的示例。
2023-06-29 17:22:39 2274
原创 python--multiprocessing设置函数运算超时限制
本篇尝试对运行的python函数设置时间限制,超时则报错结束运行,因为在某些时候运行可能会存在限时的情况。方法是使用multiprocessing,将函数作为一个子进程,设置子进程时间,使用join堵塞主进程。
2023-02-15 14:37:02 1191 1
原创 opencv二值化找轮廓检测背景简单小物体
本篇主要是针对背景简单,且具有固定颜色的蛋类小物体,方法为在灰度化时选用图片的HSV中的S通道,再使用opencv 二值化找轮廓大法可将小物体框出。可以看到,对于这种背景简单的,取HSV中的S做灰度化二值化,效果非常不错,再用找轮廓大法,可以获得带方向的最小外接矩形...原理很简单,图片-》取S通道灰度化-》OTSU二值化-》findcontours找到轮廓。
2022-09-28 10:37:25 1317
原创 cv2条码识别
本文主要使用opencv 的Python接口cv2,原理较为简单,单张先通过二值化找轮廓的方式找到轮廓的四个点,然后对点做排序,之后再计算轮廓的外接矩形的4个点,由这2组点做 warpPerspective 透射变换得到矫正的条码,最后使用zbar库做识别。......
2022-08-29 14:30:46 1277
原创 pytorch(11)-- crnn 车牌端到端识别
本文主要记录了使用crnn 对车牌图片做端到端识别,即不用对车牌字符做逐个字符分割识别,车牌第一个字符为汉字,共有31个,第2个字符为去除了“O”和“I”这2个大写字母,工24个大写字母,其余5位均为24个大写字母+10个阿拉伯数字的形式,再加上使用CRNN,需要有空白字符,放在第65位,共有66个字符......
2022-08-26 15:42:32 4804 9
原创 pytorch(10)-- 知识蒸馏
一、前言本篇讨论知识蒸馏,简单而言就是使用一个复杂但性能较好的模型作为教师模型,带动一个简单结构的学生模型迭代训练,使学生模型的数据拟合结果向教师模型结果趋近,从而提高简单模型的效果代码将使用cifa10数据集上训练达到95%准确率的模型作为教师模型,对一个简单3层卷积网络做蒸馏二、代码 教师模型采用 pytorch官方导出,加载训练好的模型teach_model = resnet18(pretrained=False)incha...
2022-02-18 15:28:40 1629 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 4138
原创 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 3009
转载 分享一个图像上画框程序
一、前言二、代码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 324
原创 差异扩展(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 2595
原创 pytorch(8)-- resnet101 迁移学习记录
一、前言 本篇记录使用 pytorch 官方 resnet101 实现迁移学习,迁移学习是当前深度学习领域的一系列通用的解决方案,而不是一个具体的算法模型。Pre-training + fine-tuning(预训练+调参) 的迁移学习方式是现在深度学习中一个非常流行的迁移学习方式,有以下3步(1)把预训练模型当做特征提取器: TensorFlow或者Pytorch都有ImageNet上预训练好的模型,将最后一层全连接层(原始的是1000个类别或者更多)改成你自己的分类任务的种类进行输出,或...
2021-10-08 18:10:31 1937
原创 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 388
原创 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 3560 3
原创 pytorch(5)--unet,unet++ 、 融合deep supervision的unet++
一、前言 本篇总结unet、unet++及添加了deep supervision的unet++ 原理及代码pytorch实现二、原理三、代码
2021-04-25 11:52:07 2130 6
原创 pytorch(4)--conv3d
一、前言 本篇主要记录pytorch 下的 conv3d 原理及一个网络示例C3D参考自:https://blog.csdn.net/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 2837 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 3537
原创 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 173
原创 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 579 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 697
原创 目标检测学习(2)map计算
一、前言 本篇主要介绍Map的计算,主要参考以下两篇文章https://blog.csdn.net/hsqyc/article/details/81702437https://blog.csdn.net/zhou4411781/article/details/105839357二、TP、TN、FP、FN这4个值由以下图就很好理解了TP:实际为真,预测为真TN:实际为假,预测为假FP:实际为假,预测为真FN:实际为真,预测为假三、Accuracy、Precis...
2020-09-14 10:52:00 587
原创 目标检测学习(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 1376
原创 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 890
原创 Faster rcnn alt opt 训练方法总结
一、前言 本篇主要记录Faster rcnn 采用alt opt 训练方式做训练二、制作自己的VOC2007格式的数据集 这一部分可以参考 end to end 训练篇https://mp.csdn.net/postedit/96730858的章节二,这里不再重复三、采用VGG_CNN_M_1024模型训练1 、修改models/pascal_voc/VGG_CN...
2019-10-19 17:11:46 764
转载 炒冷饭-Alexnet、vggnet、Google Inception Net、resNet、resnet后续改进
一、前言 本篇转载自 https://blog.csdn.net/m0_37733057/article/details/70232378 , 文章对经典的深度神经网络的发展做了一些概括,另外这里也加了一些补充说明二、Alexnet AlexNet是现代深度CNN的奠基之作。2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNe...
2018-12-08 11:19:57 1344
原创 caffe之保存和读入caffmodel文件
一、caffe如何将卷积层或网络层的权值blob给保存下来的? 首先Solver类在Step(intiters)中调用了Snapshot()函数,在voidSolver<Dtype>::Snapshot()函数中能看到保存caffemodel文件的重要函数 SnapshotToBinaryProto(),该函数详细如下:可看到该函数里初始化了NetParameternet_param...
2018-07-14 09:50:21 6281
转载 c++中的 虚函数 纯虚函数 虚基类
一、前言 原文转载自 https://blog.csdn.net/a345203172/article/details/21697687,为了理解下C++中虚函数 纯虚函数 虚基类的基础知识点。二、虚函数 纯虚函数 虚基类三者区别 1.虚函数是用于多态中virtual修饰父类函数,确保父类指针调用子类对象时,运行子类函数的。 2.纯虚函数是用来定义接口的,也就是基类...
2018-06-27 21:23:06 3769
原创 ctags+taglist+winmanger 打造vim 编辑器
一、前言 本篇主要使用ctags+taglist+winmanger 将 vim 编辑器打造为具有IDE般的功能 ctags:是vim下方便代码阅读的工具,通过这一工具能够很方便的追溯变量、函数的定义以及调用 taglist:与ctags搭配使用,将在vim的左侧或右侧开启一个窗口,在该窗口显示当前文件中有哪些变量、函数,并可进行快速 ...
2018-06-17 11:57:51 509
转载 pthread学习笔记《三》死锁
一、前言 这篇主要分析造成死锁的原因和解决的一些方法,转载自 http://blog.csdn.net/ls5718/article/details/51896159二、死锁的定义 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程
2018-06-17 10:54:42 701
转载 pthread学习笔记(一) 基本用法
一、前言 phtread类库,也即是“POSIX线程”,pthreads定义了一套C语言的类型、函数与常量,它以pthread.h头文件和一个线程库实现二、phtread 数据类型pthread_t: 线程标识符pthread_mutex_t: 互斥量pthread_code_t: 条件变量pthread_key_t: 线程私有权握访问键pthread_at
2018-06-17 10:52:37 3317
转载 《linux命令行和shell脚本编程大全》之命令行知识点记录
一、第3章--基本bash shell 命令1.1 链接文件 链接是linux里用于在系统上维护同一文件的两份或多份副本的一种方法,linux有两种不同链接,软链接(符号链接)和硬链接。1.1.2 符号链接 符号链接创建方法: ln -s a.txt a_link 符号连接特点如下: 1、a_link指向 a.txt ...
2018-06-17 10:45:34 369
原创 将cpp文件封装成 so 文件并调用
一、前言 本篇记录下将 Cpp文件打包成so 文件,并在其他cpp文件中作调用二、将cpp文件编译为so文件在文件夹 cpp1 下创建a.h a.cpp b.h b.cpp 如下://a.h#ifndef A_H_#define A_H_#include "b.h"class A{ public: A(){} ~A(){} void showImg(char* pa...
2018-04-19 01:06:19 14556 2
原创 牛客网上的题总结下 python解法
1.二维数组的查找描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution: # array 二维列表 def Find(self, target, array): # write code here row...
2018-04-18 11:00:10 2802
转载 由MTCNN关键点估计人头姿态
一、前言 本篇主要记录由mtcnn检测得的关键点作人头姿态估计,思路较为简单,mtcnn是一种可以检测输出5个关键点的人脸检测算法,分别是左眼,右眼,鼻尖,嘴的左角和嘴的右角。当获得图像中人脸的5个2D关键点,再由Opencv中POSIT的姿态估计算法将5个世界坐标系的模板3D关键点通过旋转、平移等变换投射至这5个2D关键点,进而估计得变换参数,最后求得2D平面中的人头的姿态参数,分别为...
2018-04-15 17:41:55 8055 6
转载 caffe中新增自己的激活函数层_C++实现
一、前言 本篇主要转载自一个视频教程,主要实现在caffe中新增自己的层。二、具体做法 自定义一个计算层,实现y=x^power+bur的功能,事实上这个新层为激活函数层三、实现的方法思路 (1)任何一个层都可以被继承,然后进行重写函数 (2)尽量确保要实现的功能是否必须要自己写,不然尽量用已有的层,每一个层在caffe/incl...
2018-04-13 17:29:26 1338 1
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关注的人