卷积神经网络
from tensorflow import keras from tensorflow.keras import layers import tensorflow as tf import numpy as np import matplotlib.pyplot as plt %matplotlib inline 加载fashion_mnist数据集12fashion_mnist = keras.datasets.fashion_mnist(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data() 维度扩增12train_images = np.expand_dims(train_images,-1)#扩张维度 -1表示扩增最后一个维度test_images = np.expand_dims(test_images,-1) 模型搭建123456789101112131415161718192021222324252627282930313233343536373839m...
卷积神经网络概念
增加层的缺陷在达到一定深度后加入更多层,模型可能产生梯度消失或爆炸的问题 可以通过更好的初始化权重、添加BN层等解决 现代架构,试图通过引入不同的技术来解决这些问题,如残差连接 CNN 卷积层 标准化
变分自编码器
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt %matplotlib inline 加载手写数据集1(train_image,_),_ = tf.keras.datasets.mnist.load_data() 模型架构1.编码器 -> u,var 2.u,var -> 隐含变量 3.隐含变量 -> 重构图像 数据归一化1train_image = train_image/255 数据shape12train_image.shape(60000, 28, 28) 数据扁平化1train_image = train_image.reshape(-1,28*28)#扁平化 数据shape12train_image.shape(60000, 784) 转换数据类型1train_image = train_image.astype(np.float32)#转换类型 创建dataset1dataset = tf.data.Dataset.from_ten...
叶子实例分类
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inlinefrom sklearn.model_selection import train_test_split conda install scikit-learn pandas读取树叶csv纹理数据1data = pd.read_csv('./leaf/train.csv') 查看每列的数据类型1data.info() 12345<class 'pandas.core.frame.DataFrame'>RangeIndex: 990 entries, 0 to 989Columns: 194 entries, id to texture64dtypes: float6...
后台线程和信号
界面阻塞问题前面我们的练习里开发了一个类似 Postman 的HTTP接口测试工具。 其中,具体发送请求消息的代码如下 1234567891011121314151617181920212223242526272829def sendRequest(self): method = self.ui.boxMethod.currentText() url = self.ui.editUrl.text() payload = self.ui.editBody.toPlainText() # 获取消息头 headers = {} # 此处省略一些对消息头的处理 req = requests.Request(method, url, headers=headers, data=payload ) prepared...
图像定位
import tensorflow as tf import matplotlib.pyplot as plt %matplotlib inline from lxml import etree from matplotlib.patches import Rectangle import numpy as np import glob 查看Tensorflow版本1tf.__version__ 查看是否支持GPU加速1tf.test.is_gpu_available() 创建输入管道读取所有图片1images = glob.glob('./images/*.jpg') 读取xmls标注文件1xmls = glob.glob('./annotations/xmls/*.xml') 对读取的图片jpg与xmls进行名称提取12xmls_names = [x.split('\\')[-1].split('.xml')[0] for x in xmls]images_names = [x.spli...
图像定位的优化
预测图像位置本质上是一个回归 问题,直接回归出位置,有两个缺点: 回归位置不精确 泛化能力不好 目前算法只能预测单个实例 图像定位优化方法: 先大后小: 现在整张图片预测出关键点,然后再在预测出的关键点周边,进行二 次预测。 滑动窗口的方式: 用一个小的窗口在图片上滑动,每一次做两个预测: (1)是否有关键点 (2)关键点位置 针对不定个数的预测问题: 可以先检测多个对象,再在多个对象上分别回归出位置 尝试使用全卷积网络,去掉全链接层,变回归为分类问题 等等很多网络,自己去探索 IoU交并比 ==Iou-> 0~1 越接近1越好==
图像平滑处理:均值滤波与方框滤波
1234567891011121314151617181920import cv2img = cv2.imread("lingbosize.png")#均值滤波#简单的平均卷积操作blur = cv2.blur(img,(3,3))#方框滤波#normalize = True和均值一样,选择归一化box = cv2.boxFilter(img,-1,(3,3),normalize=True) #-1表示得到颜色通道数一致#没有选则归一化,容易越界,超过255当作255处理box1 = cv2.boxFilter(img,-1,(3,3),normalize=False)cv2.imshow("blur",blur)cv2.waitKey(1000)cv2.imshow("box",box)cv2.waitKey(1000)cv2.imshow("box1",box1)cv2.waitKey(1000)cv2.waitKey(0) 平均卷积 方框滤波(未归一化) 方框滤波(归一化)
图像语义分割 FCN 概念
输入和输出网络的输入可以为任意尺寸的彩色图像; 输出 与输入尺 寸相同,通道数为:n(目标类别数)+1(背景)。 全卷积网络在CNN卷积部分不用全连接而是替换成卷积的目的 是允许输入的图片为超过某一尺寸的任意大小。 上采样 Upsampling由于在卷积过程中,我们的特征图像变得很小(比如长宽变 为原图像的1/32),为了得到原图像大小的稠密像素预测, 我们需要进行上采样。 容易想到三种方式,分别对应最大池化、平均池化和卷积操 作的反过来使用。 插值法 反池化 反卷积(转置卷积) 12345678910111213141516171819tf.keras.layers.Conv2DTranspose( filters, kernel_size, strides=(1, 1), padding='valid', output_padding=None, data_format=None, dilation_rate=(1, 1), activation=None, use_bias=T...
图像语义分割 FCN
import tensorflow as tf import matplotlib.pyplot as plt import numpy as np import os import glob 打印Tensorflow版本1print('Tensorflow version:{}'.format(tf.__version__)) 打印是否支持GPU加速1print(tf.test.is_gpu_available()) 获取图片路径1images = glob.glob('./images/*.jpg') 获取标注图片的路径1anno = glob.glob('./annotations/trimaps/*.png') 图片和标注图片做乱序1234np.random.seed(2023)index = np.random.permutation(len(images))images = np.array(images)[index]anno = np.array(anno)[index] ...






