Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

机器学习基础

发表于 2021-01-26 | 分类于 深度学习

本文章参考《python深度学习》,看这部分内容之前已经学习过吴恩达机器学习视频的大部分内容,所以看这一章非常简单,易于理解,仅做简单的重点整理。

机器学习的四个分支

监督学习

监督学习是目前最常见的机器学习类型。给定一组样本(通常由人工标注),它可以学会将 输入数据映射到已知目标[也叫标注(annotation)]。

虽然监督学习主要包括分类和回归,但还有更多的奇特变体,主要包括如下几种。

  • 序列生成(sequence generation)。给定一张图像,预测描述图像的文字。序列生成有时 可以被重新表示为一系列分类问题,比如反复预测序列中的单词或标记。
  • 语法树预测(syntax tree prediction)。给定一个句子,预测其分解生成的语法树。
  • 目标检测(object detection)。给定一张图像,在图中特定目标的周围画一个边界框。这 个问题也可以表示为分类问题(给定多个候选边界框,对每个框内的目标进行分类)或 分类与回归联合问题(用向量回归来预测边界框的坐标)。
  • 图像分割(image segmentation)。给定一张图像,在特定物体上画一个像素级的掩模(mask)。
无监督学习

无监督学习是指在没有目标的情况下寻找输入数据的有趣变换,其目的在于数据可视化、 数据压缩、数据去噪或更好地理解数据中的相关性。

降维(dimensionality reduction)和聚类(clustering)都是众所周知的无监督学习方法。

阅读全文 »

预测房价:回归问题

发表于 2021-01-19 | 分类于 深度学习

本文章参考《python深度学习》

预测房价:回归问题

回归问题预测一个连续值而不是离散的标签,例如,根据气象数据 预测明天的气温,或者根据软件说明书预测完成软件项目所需要的时间。

注意:不要将回归问题与logistic回归算法混为一谈;logistic回归不是回归算法,而是分类算法

波士顿房价数据集

预测 20 世纪 70 年代中期波士顿郊区房屋价格的中位数,已知当时郊区的一些数 据点,比如犯罪率、当地房产税率等。这里用到的数据集相对较少,只有 506 个,分为 404 个训练样本和 102 个测试样本。输入数据的 每个特征(比如犯罪率)都有不同的取值范围。例如,有些特性是比例,取值范围为 0~1;有 的取值范围为 1~12;还有的取值范围为 0~100,等等。

加载数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from keras.datasets import boston_housing

(train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()
print(train_data[0])
print(train_data.shape) # (404, 13)
print(test_data.shape) # (102, 13)

print(train_targets[:10])
print(train_targets.shape) # (404,)
print(test_targets.shape) # (102,)

# 输出如下:
[1.23247 0. 8.14 0. 0.538 6.142 91.7 3.9769 4. 307. 21. 396.9 18.72]
(404, 13)
(102, 13)
[15.2 42.3 50. 21.1 17.7 18.5 11.3 15.6 15.6 14.4]
(404,)
(102,)

如你所见,我们有 404 个训练样本和 102 个测试样本,每个样本都有 13 个数值特征,比如 人均犯罪率、每个住宅的平均房间数、高速公路可达性等。 目标是房屋价格的中位数,单位是千美元。

准备数据
阅读全文 »

Python Request库的cookie使用

发表于 2020-12-31 | 分类于 爬虫

Python Request库的cookie使用

认识Cookie

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

cookie的属性

一般cookie所具有的属性,包括:

Domain:域,表示当前cookie所属于哪个域或子域下面。

对于服务器返回的Set-Cookie中,如果没有指定Domain的值,那么其Domain的值是默认为当前所提交的http的请求所对应的主域名的。比如访问 http://www.example.com,返回一个cookie,没有指名domain值,那么其为值为默认的www.example.com。

Path:表示cookie的所属路径。

Expire time/Max-age:表示了cookie的有效期。expire的值,是一个时间,过了这个时间,该cookie就失效了。或者是用max-age指定当前cookie是在多长时间之后而失效。如果服务器返回的一个cookie,没有指定其expire time,那么表明此cookie有效期只是当前的session,即是session cookie,当前session会话结束后,就过期了。对应的,当关闭(浏览器中)该页面的时候,此cookie就应该被浏览器所删除了。

secure:表示该cookie只能用https传输。一般用于包含认证信息的cookie,要求传输此cookie的时候,必须用https传输。

httponly:表示此cookie必须用于http或https传输。这意味着,浏览器脚本,比如javascript中,是不允许访问操作此cookie的。

服务器发送cookie给客户端
阅读全文 »

深度学习目标检测破解滑动验证码

发表于 2020-11-22 | 分类于 深度学习

深度学习目标检测破解滑动验证码

前言

本文主要参考以下文章:

利用深度学习识别滑动验证码缺口位置

利用深度学习 PyTorch 识别滑动验证码缺口

这两篇文章都是同一位大佬所写,第一篇是利用华为云的一个深度学习平台做的(无需做任何编码工作),第二篇是通过PyTorch来做的,要自己代码实现。我这里主要参考第二篇文章,也直接在这里把作者使用到github项目列出来:

标注工具labelImg

PyTorch-YOLOv3

作者自己的破解项目

因为我在次之前接触过一点Keras,还没有接触过PyTorch,所以倾向于利用Keras来解决此问题,于是我就查找了keras-yolov3的相关资料,主要参考这两篇博客:

Keras-yolov3如何训练自己的数据集

keras-yolov3训练及测试详解

上面那篇博客过于具体过程讲的比较详细,一般按照教程来就可以,下面那篇是我遇到一些问题时找到的,关于这个项目的解析比较详细,可以帮助我们理解这个项目。

这篇博客主要使用这个github项目:

keras-yolov3

阅读全文 »

Python AES加解密

发表于 2020-11-16 | 分类于 python编程

Python AES加解密

AES加密方式有五种:ECB, CBC, CTR, CFB, OFB

从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现

python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome

python 在 Linux下使用AES时要安装的是pycrypto模块 pip install pycrypto

CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)

阅读全文 »

Python图像处理识别滑动验证码缺口

发表于 2020-09-28 | 分类于 图像处理

Python图像处理识别滑动验证码缺口

参考文章

OpenCV_Python模板匹配

网易易盾

模板匹配

近期在破解网易易盾的滑动验证码,涉及到缺口识别的问题时,由于没有经验,上网查了一些资料,发现一个比较火的方式是利用opencv的模板匹配。

模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。OpenCV提供了一个函数cv2.matchTemplate()。它只是在输入图像上滑动模板图像(如在2D卷积中),并比较模板图像下的输入图像的模板和补丁。在OpenCV中实现了几种比较方法。它返回一个灰度图像,其中每个像素表示该像素的邻域与模板匹配的程度。

假设输入图像的大小(W*H)且模板图像的大小(w*h),则输出图像的大小为(W-w + 1,H-h + 1)。获得结果后,可以使用cv2.minMaxLoc()函数查找最大/最小值的位置。将其作为矩形的左上角,并将(w,h)作为矩形的宽度和高度。那个矩形是你的模板区域匹配后得到的区域。

阅读全文 »

网易易盾滑动验证码破解(下篇)

发表于 2020-08-08 | 分类于 爬虫

网易易盾滑动验证码破解(下篇)

接着上篇文章,我们在这篇文章中将会介绍,如何获取验证码和token,然后计算验证码缺口距离以及模拟轨迹生成等操作。

获取验证码

先看下获取验证码的请求(get请求):

url=https://c.dun.163.com/api/v2/get?,参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
id: 07e2387ab53a4d6f930b8d9a9be71bdf
fp: hiXxMilwZwpb4+sPEBt7K4oMVlNDs1S7S/gSM+3CXwzXT61XEHUGWJ+KRpmQIBeAAaIce9YQE4koUZTctLkYBUU8TKdailKmA4yQBLqLOX/kBhCCeWYo4n6f3hVt91ql4g\52gzqt/95LLSwJLciW6C8pXVTxGxc0HmqhNP/pqrGca+6:1597838263871
https: true
type: 2
version: 2.14.0
dpr: 1
dev: 1
cb: CZU+qZFVc/pqC0dVRuPJJAvHF6vHAvfOaReW7FqVZrpR4cdM9avS/c\qJlBrAeKA
ipv6: false
runEnv: 10
group:
scene:
width: 320
token:
referer: https://dun.163.com/trial/jigsaw
callback: __JSONP_bzmv2ur_0

需要动态变化的参数只有fp参数和cb参数,这里cb参数生成方式其实与我们上篇中的cb是一样的,所以重点是fp参数,也就是fingerprint(指纹)。

阅读全文 »

网易易盾滑动验证码破解(上篇)

发表于 2020-08-01 | 分类于 爬虫

网易易盾滑动验证码破解(上篇)

概述

最近简单研究了下网易易盾的滑动验证码,在这里记录下主要思想、步骤和方法等,供以后参考,我会分两篇文章来讲破解过程,此篇虽为上篇,但是其实主要涉及破解的后半部分,这主要与“逆向”一词有关,逆向都是从结果开始往前推敲,直到开头,所以为了更好的理解,我尽量保持与一开始的破解流程一致的方式来写这篇文章。

阅读全文 »

浏览器调试功能介绍

发表于 2020-07-15 | 分类于 爬虫

浏览器调试功能介绍

平时我们在做爬虫的过程中,经常会遇到一些带有js加密的网站,想要破解js,学习使用浏览器的调试功能是必不可少的技能,这篇文章简单讲下如何使用Chrome浏览器的调试功能(主要指Source调试),并且后面简单使用几个例子进行了演示。

Source面板

首先来看一下Source面板,我这里将其分为四个部分:

接下来分别简单讲下这四个部分。

阅读全文 »

字符验证码识别补充

发表于 2020-06-20 | 分类于 图像处理

Python的PIL库

python imaging library是Python平台的图像处理标准库,我们在图像处理时不仅可以使用opencv,PIL也是可以的。

1
2
3
4
5
6
7
8
9
10
from PIL import Image

# 打开图片
img = Image.open("123.jpg")
# 获取宽、高
width, height = img.size()
# 获取像素值
r, g, b = img.getpixel((15, 9))
# 保存图片
img.save('456.png')

PIL还可以做图片剪裁,模糊等其他操作,并且PIL还可以打开opencv打不开的图片;

我曾遇到过使用opencv打开为None,而使用PIL可以打开的图片,但是使用PIL保存会提示:cannot write mode P as JPEG。

阅读全文 »
1…8910…12
chenxi

chenxi

120 日志
12 分类
224 标签
Links
  • Docle
  • Swift
© 2025 chenxi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4