介绍
假钞很容易成为小型和大型企业的问题。当这些钞票不是真的时,能够识别这些钞票是非常重要的。对于日常与现金打交道的商务人士和个人而言,此过程可能非常耗时。这就需要通过自动化来实现这一目标。
因此,我们认为有必要开发一种自动机器学习假钞检测模型,即使是非专业人士也可以使用它来检测这些钞票的真伪。
本文介绍了一个实际项目,我们在该项目中开发了一个深度学习和图像分类在银行业中的应用的真实原型。目标是使用现实生活中的问题场景完成机器学习演示。我们将从数据采集和深度清理/预处理到简单地部署经过训练的模型。
我们将使用一些合适的评估指标来确保模型的性能及其学习的恰当程度。由于这是一个银行系统,我们希望确保预测准确无误。
目录
设置环境
导入依赖项
读取和加载数据集
数据转换
数据可视化
TensorBoard
模型构建
可视化预测
微调卷积网络
训练和评估
使用TensorBoard报告学习到的矩阵
模型测试
保存训练后的模型工件
本地部署
部署到云端(Streamlit Cloud)
问题陈述
如引言所述,大多数人都很难区分假钞和真钞。大多数人在这方面没有任何技能,很容易被骗子用假钞换取他们的真钞。我们将通过使用专业提供的用于研究的哥伦比亚真假银行钞票来解决这个问题的挑战。
![960b24da8874f7c64d1c3d6c12236d46.png](https://i-blog.csdnimg.cn/blog_migrate/c974a424877269fb7e2b58a15f92352b.png)
完成此项目的先决条件是机器学习模型管道的知识、jupyter notebooks 的基本经验,以及进一步深入学习的兴趣。即使这是你第一次接触图像处理,你也不必担心,因为每一个步骤都易于掌握。
数据集描述
该数据集由 Universidad Militar Nueva Granada 在 CC BY 4.0 许可下于 2020 年提供。该数据集可用于实时检查系统,以检测纸币的面额和伪造品。就大小和图像数量而言,该数据集很大,由专业捕获的假类和真类图像组成。让我们看看下面的亮点:
该数据集包含 20800 张图像,包含 13 个类别,其中 6 个对应于原始钞票,另外 6 个对应于伪造钞票,另外 1 个对应于背景类别。
它包含纸币的照明变化、旋转和局部视图。包含3个文件夹,每个文件夹20800张图片,分别对应ds1、ds2、ds3。
每个文件夹都包含一个包含图像的训练、验证和测试子文件夹。
所有类别的图像数量都是平衡的。
![3c1f57bc0d09113f44339708975af307.png](https://i-blog.csdnimg.cn/blog_migrate/8e6203e86d432004203cb7034de61337.png)
项目管道
除了掌握我们将要涵盖的所有内容之外,我还概述了下面详细开发的模型的各个步骤:
设置环境
导入依赖项
读取并加载数据集
数据转换
数据可视化
TensorBoard
模型构建
可视化预测
微调卷积网络
训练和评估
使用 TensorBoard 报告学习矩阵
模型测试
保存训练好的模型工件
本地部署
部署到云端(Streamlit Cloud)
注意:为了跟进练习,我建议你使用 Google Colab 重现这项工作,尤其是当你的计算机上没有本地 GPU 或显卡时。深度学习的一个挑战是计算环境,但感谢提供免费 GPU 的 Google Colab,我将向你展示如何使用它。
第 1 步:设置环境
话不多说,让我们开始写一些代码吧。
我们将使用 Google Colab 作为开发环境。现在你可以轻松地在线搜索 Google Colaboratory 或访问:https://colab.research.google.com/。它具有与 jupyter 相同的界面,因此你只需要一个 google 帐户就可以轻松掌握。主页如下所示:
![2c2296e6a2ac333f45ea61b382fa3885.png](https://i-blog.csdnimg.cn/blog_migrate/8895f08f4e4e273cac449d81506b97e7.png)
现在让我们通过将免费 GPU 添加到运行时来使用它。单击“Runtime”选项卡并选择“Change runtime type”,如下所示。
![b0646b5adec2f9a5a7b81a381dbc6e8a.png](https://i-blog.csdnimg.cn/blog_migrate/9cdaeba7aaa2168abf0142f555e7cd68.png)
在“Hardware accelerator”下,单击下拉菜单并选择“GPU”,如下所示。
![7bfbf2db88a011de655d54e23deb57ec.png](https://i-blog.csdnimg.cn/blog_migrate/feb3e68f27048e7692819a488a1e15bf.png)
现在你已连接 GPU。我们现在可以继续编码了。
在我们开始导入依赖项之前,我们需要做最后一件事情,即使用下面的命令设置matplotlib以便为输出或图形组织提供帮助。
#magic function for matplotlib graphs. Graphs will be included in notebook next to the code.
%matplotlib inline
第 2 步:导入依赖
#importing dependencies
from __future__ import print_function, division
from datetime import datetime
from PIL import Image
import torch
import torch.nn as nn
import torch.optim as optim
from torch.optim import lr_scheduler
import numpy as np
import torchvision
from torchvision import datasets, models, transforms
from torchvision.datasets import ImageFolder
import torchvision.transforms as T
from torchvision.transforms import ToTensor
import matplotlib.pyplot as plt
import time
import os
import copy
plt.ion() # interactive mode
第 3 步:加载数据集
你可以在本文末尾或从本文随附的公共 GitHub 存储库中找到指向数据集的链接。下载数据集后,你可以将其上传到你的谷歌驱动器以方便使用。我已经有了数据集,只需加载驱动程序并运行单元格。
from google.colab import drive
drive.mount