- 博客(11)
- 收藏
- 关注
原创 【python + opencv + pytorch】车牌提取、分割、识别 pro版
老规矩,先看最后成果图(如果想要全部工程,文章最后我会把github链接放上):1、分割车牌2、分割字符3、识别字符最终识别的车牌号码是:浙F99999整个车牌识别分五步:1、一个分割车牌的语义分割模型2、用训练好DeepLab V3+模型将车牌从图片里面抠出来3、将车牌字符一个个分割开4、训练一个预训练模型来识别单个车牌字符5、用训练好的预训练模型去识别分割好的字符从而得到车牌号第一步:训练分割车牌的语义分割模型我这里用的是Bubbliiiing大佬用pytorch写好的De
2022-05-06 01:29:54
12709
146
原创 C++必掌握知识点
C++必掌握知识点1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应,free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不
2022-03-16 01:19:56
1681
原创 pytorch 加载使用预训练模型和 fine tune 模型微调(冻结一部分层)实战
这两天在学习 pytorch 的加载预训练模型和 fine tune 为了方便以后查看,特写成博客。1. pytorch 预训练模型以及修改pytorch中自带几种常用的深度学习网络预训练模型,torchvision.models包中包含alexnet、densenet、inception、resnet、squeezenet、vgg等常用网络结构,并且提供了预训练模型,可通过调用来读取网络结构和预训练模型(模型参数)。往往为了加快学习进度,训练的初期直接加载pretrain模型中预先训练好的参数。加载
2021-04-20 05:27:51
9213
9
原创 用 pytorch 搭建一个残差网络(ResNet50)分类器(基于 kaggle 猫狗数据集)
这两天,一直想着找一个效果好点的模型来实现一下 kaggle 经典的猫狗分类器,kaggle 猫狗数据集以前也用自己搭建的 CNN 模型跑过,因为模型比较大,跑的比较慢,只跑了5轮,大概正确率在80%左右,效果一般般,当然模型也比较简单,只有6个卷积层2个最大池化层,1个均值池化层。昨天的时候,偶然看到经典的 ResNet 模型,就寻思着搭建一个 ResNet50 的模型,理论部分的话,我就搬运两个大佬的图,结合代码来看还是比较易懂的。模型关键代码:class Bottleneck(nn.Module
2021-04-16 11:11:45
4687
39
原创 【python ++ opencv + pytorch 】车牌提取、分割、识别
话不多说,先看最后成果图(如果想要全部工程,文章最后我会把github链接放上):可以看到最终的识别车牌号码是:闽G99999。其实前年冬天偶然想着用c++来做一个小项目,然后就用 c++ opencv 实现了车牌的提取和分割,然后找了一些博客自己跟着做,然后做出来了,但是效果并不是很好,用 c++ 的方法大概只能做到车牌提取和字符分割,但是最后的一步,切割出来的字符的识别,看了很多大佬的说法,都说用 CNN 来做效果最好,所以那个时候也就做到了分割,最后一步识别做不下去了。上面就是用 c++ 跑
2021-04-13 07:04:19
9063
117
原创 用梯度下降算法解决回归问题(Python实现)
线性回归问题在数学上是一例很经典的问题,此类问题的解法无非两大类:1、最小二乘法;2、梯度下降算法,在此处,我们用梯度下降算法来解决一个最简单的线性回归问题。1. 构建数据样本我们这里用自己模拟生成的一段数据,一共200个样本,样本为一个二元一次方程,加上一个随机噪声: y = wx + b + nos (我样本的 w 为1.8, b 为5 其中 nos 为随机噪声,取值范围为[-4,4])这里我就不过多赘述了,直接上代码:from __future__ import print_functio
2020-11-14 02:50:18
756
原创 数据结构与算法:归并排序(递归实现)
最近有点忙,所以有几天没接着更新,今天接上。这次是归并算法,这个算法我的理解是属于一种化整为零的思路,即把一个序列一分为二,然后依次对拆分开的两个序列继续拆分,以此类推,直至每个序列只剩一个元素,然后再对每一段进行合并成一个有序序列的过程,就是一个拆分整合的过程。本次我使用递归的方法实现的,话不多说,直接上代码:/*********** 归并排序 ***********//******** 千万注意边界条件 ********/int Merge(double *SR, double *TR, i
2020-09-23 02:24:00
229
原创 数据结构与算法:堆排序
当初学习堆排序的时候以为是多大的洪水猛兽,但实质上去学习的时候,其实堆排序的原理很简单,就是一个堆建好后,拿去根节点(因为大顶堆/小顶堆中根节点最大/小),然后剩下的元素再建成一个堆,重复上面的过程,不断取出根节点剩下的节点再建堆,直至最后当所有的节点都被取出之后就成有序的了。/*********** 堆排序 ***********/void Swap(double &arr1, double &arr2){ double temp = arr1; arr1 = arr2;
2020-09-12 01:38:58
105
原创 数据结构与算法:从插入排序到希尔排序
数据结构与算法:从插入排序到希尔排序学完插入排序和希尔排序之后,我才恍然大悟,希尔排序就是插入排序的进阶版所以如果想写一个希尔排序,可以先写一个插入排序,然后加上一个增量increment具体做法为将插入排序的递增或者递减1换成增量increment如下是一个插入排序/*********** 插入排序 ***********/int InsertSort(double *arr, int arrLenth){ int i, j; for (i = 0 ; i < arrLenth -
2020-09-10 02:59:10
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人