1. 磐创AI-开放猫官方网站首页
  2. Medium

基于Fas14MNet的图像分类

基于Fas14MNet的图像分类

Fas14MNet是一个CNN网络,它的灵感来自ResNet-50架构,但参数要少得多。该网络遵循Resnet挡路架构,但通过内核扩展和深度层卷积,使每个挡路只有2个核心层和总共3个卷积块。RESNet-50具有残留添加机制,该机制已被每个挡路之后的层修剪层所取代。与ResNet-50中的~24M参数相比,Fas14MNet仅使用~15M参数。指向pip项目的链接:https://pypi.org/project/Fas14MNet/https://pypi.org/project/Fas14MNet/

我们使用来自kaggle的以下数据:https://www.kaggle.com/paramaggarwal/fashion-product-images-smallhttps://www.kaggle.com/paramaggarwal/fashion-product-images-small

这些数据包含44K张时尚产品的图片。数据已经被分成不同的类别,即性别、主类别、子类别、颜色等。在这个例子中,我们将预测时尚产品的子类别。图像的子类别可以是手表/皮带/鞋类/鞋面。

我们来看一下所需的进口:

我们已经减少了图像的数量,因为很少有图像是错误的,不会通过火炬变换。

最后,我们得到了41,177个数据样本。我们将分为训练集、验证集和测试集。

拆分后,我们有28,823个数据样本可供训练,睡觉将进行验证和测试。

现在,让我们以用于图像预处理的手电筒变换为例。

我们使用一个名为alumentations的库进行图像转换,而不是通常的torchvision.transforms模块。Alumentations是一个非常好的图像预处理库,因为它往往会在图像特征热点上创建不同的颜色。现在,让我们看看图像在变换后的外观。

在这里,我们使用DataSet类为数据加载器创建批处理。

我们使用OpenCV读取图像,并将其转换为RGB颜色贴图。我们使用前面创建的转换来转换图像。然后我们返回图像张量和标签。

让我们把所有的培训和验证文件分成两个列表。

现在让我们创建数据集和数据加载器。

我们将对CUDA进行培训。如果您的系统不支持CUDA,请更改为CPU。我们将使用48个批次的大小,我们将训练超过50个纪元。

现在让我们定义模型和优化器:

我们采用0.01的初始学习率,并使用步长为20、权重衰减为0.1的StepLR调度器。

现在让我们检查一下训练循环。

现在,让我们检查我们的训练结果以及我们的图形在Tensorboard上的外观。

我们看到我们达到了相当好的精确度和损失。我们显然会在我们的测试数据上测试它,并获得其他统计数据,如精确度和召回率。到目前为止,我们已经实现了0.2612的验证损失和0.9222的验证准确率。

现在让我们检查我们的测试转换。

让我们看看我们的测试循环。

现在,测试结果如下:

我们看到,即使对于测试数据集上的其他度量,我们也获得了类似的性能,这意味着我们的模型性能并不差。

对于预测循环:

我希望我能用Fas14MNet首尾相连地展示一个完整的训练循环。请查看下面的GitHub链接以获取完整的笔记本。

链接:

如果有任何疑问,请随时与我联系,或者只使用评论区,我将尝试解决它。

谢谢!

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/28/%e5%9f%ba%e4%ba%8efas14mnet%e7%9a%84%e5%9b%be%e5%83%8f%e5%88%86%e7%b1%bb/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息