大家好,我是十一姐,b站时一十一姐啦,知识星球时光漫漫
提示!本文章仅供学习交流,严禁用于非法用途,文章如有不当可联系本人删除!
一、什么是孪生神经网络
二、github开源项目Siamese-pytorch
三、训练自己的点选数据集模型
上一篇:8、yolov8分类训练
下一篇:10、yolov8与孪生pth导出onnx使用
一、什么是孪生神经网络
关于整个流程的文章内容讲解如果看不懂的话,想节省学习时间成本的话
在文章末尾部分有视频讲解,以及付费本合集后加v发送相关代码与数据集
1.比较物体的相似度,比较两张图片的相似性,这里推荐视频https://www.bilibili.com/video/BV1rr4y1c7d4/
2.孪生神经网络就是将输入进来的两张图片利用同一个神经网络进行特征提取,然后利用比较网络对这两个特征进行比较,最终输出一个长度为1的一维向量,其值在0-1之间,用于表示输入进来的图片的相似程度
二、项目Siamese-pytorch
1、安装环境
1.1.到这里下载包 https://github.com/bubbliiiing/Siamese-pytorch, 作者的b站视频:https://www.bilibili.com/video/BV1rV411y72L,然后解压下来文件夹名字Siamese-pytorch-bilibili,该仓库实现了孪生神经网络(Siamese network),该网络常常用于检测输入进来的两张图片的相似性。该仓库所使用的主干特征提取网络(backbone)为VGG16
-
conda create -n lus python=3.10
-
-
-
如果要用gpu训练的话,还需要安装这个:conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c nvidia # 安装CUDA、CUDNN、Python、Pytorch、Torchvision 这里每个版本要相互对应 ,注意这里不能直接复制,需要根据前面的文章了解你自己电脑cuda对应的版本然后进行安装
-
-
这个源项目的暂时不操作 pip install -r requirements.txt,改成下面的安装即可
numpy==1.23.5
matplotlib
opencv_python
tqdm
Pillow
1.3.下载权重模型:训练所需的vgg16-397923af.pth/Omniglot_vgg.pth可在百度网盘中下载,链接: https://pan.baidu.com/s/14SFoKX6xTDPx2XG9rcUTDQ 提取码: 44en
-
Omniglot_vgg.pth权重模型:这个模型是作者已经训练好的模型,用于判断 50不同字母(语言)的1623 个不同手写字符图片是否一样
-
vgg16-397923af.pth是vgg的权重,可以用于训练其它的数据集
1.4.将刚刚下载好的权重模型,放到Siamese-pytorch-bilibilimodel_data 文件夹下
2、运行判断相似性
2.1.pycharm的python环境切换到上面conda创建的虚拟环境下
2.2.运行Siamese-pytorch-bilibilipredict.py文件,这里默认用的是他已经训练好的模型Omniglot_vgg.pth,这个时候可能报错No module named ‘torchvision.models.utils,这是因为高版本的torch没有那个包属性了,切换改下from torch.hub import load_state_dict_from_url
2.3.再次运行predict.py,输入传参两张图片的路径,img/Angelic_01.png , img/Angelic_02.png , 如图会输出相似度
2.4.我们通过它训练好的模型,输入其它两张图片的路径,再次判断看看,比如我们这里输入了其它的图片路径测试出来的相似性
2.5.如图,通过多张图片对比,荷的相似度最高0.978,以此可以用来过文字点选验证码
2.6.我们再多测些,发现如图两个糖字的相似度是0,但是相比下虽然都是0,其它的图的相似度都呈现负数了,说明还是能够判断出最高相似比
2.7.最后我们把这个项目的输出相似度tensor改成输出数字,predict.py文件第24行代码改成print(probability.tolist()[0]) 即可,这个时候输出都是小数了,也可以进行多张图大小值判断了
2.8.可以简单了解下作者的50不同字母手写字符的训练集,作为接下来训练自己数据集文件夹摆放形式的参考,下载Omniglot数据集准备样例:Omniglot数据集下载地址为链接: https://pan.baidu.com/s/1pYp6vqiLLRFLn1tVeRk8ZQ 提取码: 5sa7 , 数据集放在根目录下的Siamese-pytorch-bilibilidatasets文件夹下
2.9.以及小小测试下训练作者的数据集步骤直接运行train.py开始训练,pip install numpy==1.23.4
2.10.训练自己的数据集步骤可参考作者的CSDN博客https://blog.csdn.net/weixin_44791964/article/details/107343394 , 也可以参考我下面的文章逻辑
![训练验证码-9、yolov8/孪生训练点选验证码 训练验证码-9、yolov8/孪生训练点选验证码]()
三、训练自己的点选数据集模型
1、点选训练思路
https://blog.csdn.net/aaronjny/article/details/109732693 https://github.com/MgArcher/Text_select_captcha
1.2.传统思路:缺点耗时,需要标注的类别文字太多,证码图片中的文字并不是固定的几个字来回使用,而是随机的、很多字,可能达到1000分类的分类器了,假设1个分类标注20张,那么要想在这样的词汇大小下取得良好的识别效果的话,对数据规模的要求是很大的,标注上万张图片都不够
1.3.当前思路:只需要一个二分类器,把输入从一张图片改成两张图片,判断两张图片是否为同一个字就行了,引入孪生神经网络,可能标注几百张数据集就够了
2、使用yolov8训练目标检测模型
原文始发于微信公众号(逆向OneByOne):训练验证码-9、yolov8/孪生训练点选验证码
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/2541438.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论