介绍
对象定位是指精确识别和定位图像中感兴趣的对象的任务。它在计算机视觉应用中发挥着至关重要的作用,可实现对象检测、跟踪和分割等任务。在基于 CNN 的定位器中,对象定位涉及训练卷积神经网络来预测包围对象的边界框的坐标。
定位过程通常遵循两步流程,其中主干 CNN 提取图像特征,回归头预测边界框坐标。
学习目标
了解卷积神经网络 (CNN) 的基础知识。
解释本地化模型的 CNN 架构。
使用预先训练的 CNN 模型进行定位来实现定位器架构。
目录
介绍
卷积神经网络 (CNN)
基于 CNN 的定位器架构
更好地理解模型架构
训练定位器
导入必要的库
构建组件
建立模型
下载数据集
生成数据批次
加载和创建数据集
损失函数和性能指标
优化器和学习率调度器
训练循环
预测
输出
结论
卷积神经网络 (CNN)
卷积神经网络 (CNN) 是一类用于图像分析的深度学习模型。
它们的架构包括一个接收图像数据的输入层,后面是使用卷积滤波器学习和提取特征的卷积层。激活函数引入了非线性,而池化层则减少了空间维度。最后的全连接层做出最终预测。
CNN 学习分层特征,从边缘等低级特征开始,逐渐发展到形状和对象组合等复杂和抽象的特征。
在CNN 的训练阶段,网络学习自动识别和提取不同级别的特征。初始层捕获低级特征,例如边缘、角和纹理,而更深的层学习更复杂和抽象的特征,例如形状、对象部分和对象组合。CNN 的层次结构使其能够学习对平移、缩放、旋转和其他图像变换的变化越来越不敏感的表示。
"越来越不敏感的表示"意味着随着CNN网络的深层学习,所学习到的特征表示对于图像变换变得越来越稳定和不变,能够在面对这些变换时保持对重要特征的有效提取和识别能力。
基于 CNN 的定位器架构
用于目标定位的基于 CNN 的定位器模型由 3 个组件组成:
1. CNN骨干网
结合 SQL 的力量:选择标准 CNN 架构(例如 ResNet 18、ResNet 50、VGG 等)来微调 Imagenet 分类任务上的预训练模型。使用额外的 CNN 层增强主干网络以减小特征图尺寸
2. 矢量化器
CNN 主干的输出是 3D 张量。但定位器的最终输出是一个一维向量,其中四个值对应于边界框的每个坐标。为了将 3D 张量转换为向量,我们使用向量化器或利用 Flatten 层作为替代方法。
3. 回归头
我们专门为此任务构建了一个完全连接的回归头。之后,从主干网络获得的特征向量被馈送到回归头。回归头由末端的 4 个节点组成,对应于 (x1, y1, x2, y2) 或任何其他等效的边界框表示。
更好地理解模型架构
该图显示了常见的基于 CNN 的定位器模型架构。简而言之,CNN 主干接收 RGB 图像,然后生成特征图。然后,我们使用展平层或全局平均池层来形成一维特征向量。全连接回归头接收特征向量并给出预测。
CNN 网络保持输入图像的固定大小,我们使用 Flatten 层将从 CNN 主干获取的特征图转换为向量。然而,当使用 GAP(全局平均池)等自适应层时,不需要调整图像大小。
训练定位器
导入必要的库
import ast
import math
import os
import cv2
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from functools impo