【第一部分】视频学习心得及问题总结
【第二部分】代码练习
2.1 图像处理基本练习
理解图像类型,进行一些基本的图像分割操作
- 首先下载并显示图像
python图像处理类库主要有Opencv、PIL、skimage。PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理。
!wget https://raw.githubusercontent.com/summitgao/ImageGallery/master/yeast_colony_arra
import numpy as np
import matplotlib.pyplot as plt
import skimage
from skimage import data
from skimage import io
#io.imread读出图片格式是uint8(unsigned int)
#value是numpy array
#对于RGB图片图像数据是以RGB的格式进行存储的
colony = io.imread('yeast_colony_array.jpg')
print(type(colony))
print(colony.shape)
- 绘制所有图像通道
plt.imshow(colony[:,:,:])
plt.title('3-channel image')
plt.axis('off')
# Plot one channel only
plt.subplot(122)
plt.imshow(colony[:,:,0])
plt.title('1-channel image')
plt.axis('off');
- 对特定的像素点进行操作
camera = data.camera()
print(camera[10, 20])
# Set a region to black
# 将区域设置为黑色
camera[30:100, 10:100] = 0
#黑白gray
plt.imshow(camera, 'gray')
camera = data.camera()
mask = camera < 80
camera[mask] = 255
plt.imshow(camera, 'gray')
- 暂时有点晕
# 将较亮像素设置为红色
red_cat = cat.copy()
reddish = cat[:, :, 0] > 160
red_cat[reddish] = [255, 0, 0]
plt.imshow(red_cat)
# 将RGB颜色更改为BGR
BGR_cat = cat[:, :, ::-1]
plt.imshow(BGR_cat)
- 绘制直方图,主要用hist函数
img = data.camera()
# ravel()
plt.hist(img.ravel(), bins=256, histtype='step', color='black');
- 再看看
# 使用阈值
# ??
plt.imshow(img>0.5)
- Canny 算子用于边缘检测
from skimage.feature import canny
from scipy import ndimage as ndi
img_edges = canny(img)
img_filled = ndi.binary_fill_holes(img_edges)
# Plot
plt.figure(figsize=(18, 12))
plt.subplot(121)
plt.imshow(img_edges, 'gray')
plt.subplot(122)
plt.imshow(img_filled, 'gray')
- 改变图像对比度
# Load an example image
img = data.camera()
plt.imshow(img, 'gray')
#增加一句代码
from skimage import exposure
# 对比拉伸
p2, p98 = np.percentile(img, (2, 98))
img_rescale = exposure.rescale_intensity(img, in_range=(p2, p98))
plt.imshow(img_rescale, 'gray')
# 均衡
img_eq = exposure.equalize_hist(img)
plt.imshow(img_eq, 'gray')
# 自适应均衡
img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.03)
plt.imshow(img_adapteq, 'gray')
2.2 pytorch基础练习
看完视频跑了一下,没什么问题
有个小块报错,参考米高桑同学的解决方案改了(给大佬递茶
https://www.cnblogs.com/michaelsong/p/13362757.html
2.3 螺旋数据分类
- 下载必要的绘画函数
- 设置在GPU上运行
# 因为colab是支持GPU的,torch 将在 GPU 上运行
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print('device: ', device)
- 参数
# 初始化随机数种子。神经网络的参数都是随机初始化的,
# 不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,
# 因此,在pytorch中,通过设置随机数种子也可以达到这个目的
seed = 12345
random.seed(seed)
torch.manual_seed(seed)
N = 1000 # 每类样本的数量
D = 2 # 每个样本的特征维度
C = 3 # 样本的类别
H = 100 # 神经网络里隐层单元的数量
2.4 回归分析
与上一个实验类似。