1. 图像分类数据和label分别是什么,图像分类存在的问题与挑战
1)数据是输入的图片,label是图片的类别标签
2)图像分类需要大量的计算空间和时间,视觉角度的变化、光照变化、形态变化都可能导致图像的数据结构产生变化,然而图像的类别却是不变的,这是一个难点。背景的变化也是一个问题。即使是同一类物体见也有差异。找到一个可以同时处理这些问题的算法是很难的。
2. 使用python加载一张彩色图片,观察像素值
代码如下:
from PIL import Image
import torch
from torchvision import transforms
import numpy as np
import matplotlib.pyplot as plt
img_path = '/data/Images/1/8b9389c57c1eca099dc87931de0ff63752e4c0915c5bb81a2e4f70ad.jpg'
image = Image.open(img_path)
image = transforms.ToTensor()(image)
print(image.size())
fig=plt.figure()
img = np.transpose(image.numpy(),(1,2,0))
plt.imshow(img)
打印结果如下:
3. L1范数,L2范数数学表达式,分别适用于什么情况
L1范数适用于向量中某一元素具有重要意义的情况(旋转坐标系时,L1距离会发生改变),公式如下:
d
1
(
I
1
,
I
2
)
=
∑
p
∣
I
1
p
−
I
2
p
∣
d_1(I_1,I_2) =\sum_p\vert I^p_1 -I^p_2\vert
d1(I1,I2)=∑p∣I1p−I2p∣
L2范数不会随着坐标轴的旋转而改变,适用于处理通用向量的分类问题,公式如下:
d
2
(
I
1
,
I
2
)
=
∑
p
(
I
1
p
−
I
2
p
)
2
d_2(I_1,I_2) =\sqrt{\sum_p( I^p_1 -I^p_2)^2}
d2(I1,I2)=∑p(I1p−I2p)2
4. KNN算法
KNN算法是在k个点中寻找最最接近自己的K个数据样本归为同一类,步骤[1]如下:
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。
KNN的算法的训练复杂度是 O ( 1 ) O(1) O(1),在测试时的复杂度是 O ( N ) O(N) O(N),KNN算法所需的计算时间很长,而且L1、L2这些距离衡量方式不适合测量图像直接的距离,因此不适用于图像问题。
5. cifar10数据集
cifar10 数据集具有10类图片包括:飞机、汽车、鸟、猫、狗、鹿等等。该数据集有50000个训练图片集以及10000个测试图片集,是现有的运用广泛的目标分类图像数据集。
6. 如何选择合适的超参数
为了选择合适的超参数,我们需要将数据集合理的划分。测试集需要和训练集验证集完全隔离开。
Reference
[1] https://www.cnblogs.com/ybjourney/p/4702562.html