0

0

【AI达人特训营】岩石薄片分类

P粉084495128

P粉084495128

发布时间:2025-07-24 17:43:44

|

748人浏览过

|

来源于php中文网

原创

该项目针对岩相分析痛点,用PP-LCNet模型分类岩石薄片。数据集含2634张图片,分3类岩石,按8:2划分训练与验证集。经数据增强,训练50-60个epoch后精度约98%,导出相关模型提升效率与一致性。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【ai达人特训营】岩石薄片分类 - php中文网

【AI达人特训营】岩石薄片分类

一、项目背景

  • 岩相分析是以岩石薄片的微观描述和分类为基础的研究工作,也是沉积和成岩研究的一项重要技术,对于油气勘探开发的工程实践具有基础性指导地位。通过薄片分析矿物的比例、分布、质地、孔隙空间、胶结成分等因素,给后续的油气田开发方案设计作为保障提供了更好、更准确的手段。 工程实践中,大多数岩相分析依赖大量的地质学家使用显微镜,进行岩石薄片的目视检查,标准规范和时间紧迫之间的矛盾日益突出。总体来说,存在三个核心痛点:第一,人类专家面临大量繁重的重复性劳动,精力与效率的平衡问题无法忽视。同时,多位岩石学家共同工作,可能会出现分析不一致的情况。第二,由于分布在世界各地的油田,其地质特征、发育机理等因素存在差异,因此还需要充分考虑跨源识别这一重要因素。第三,现有自动化识别方法对于岩相覆盖范围仅针对若干个特定区块的几种类型;同时也不具备迁移能力。
  • 飞桨AI达人特训营针对上述痛点,开展了岩石薄片分类的图像分类任务。

二、数据集介绍

  • 在南京大学地球科学与工程学院近100年的岩石学教学和研究历史中,薄片一直发挥着不可替代的作用。这些教学薄片虽然经历了消耗、流失、增加和更新的过程,但其中包括28种不同的沉积岩、40种火成岩和42种变质岩。南京大学这些薄层覆盖了90%以上的常见岩石类型,包括地质专业教学大纲要求的95%以上的常见矿物和岩石结构。该数据集对南京大学目前用于岩石学教学的薄片进行电子信息化。共完成了110种不同岩石330个薄片的2658张偏光显微照片。
  • 本项目对该数据集进行了些许处理,使其符合 PaddleX 对数据集的要求。训练集占80%,验证集占20%,共2634张图片,3种类别(火成岩,沉积岩,变质岩)。

南京大学岩石学教学用岩石显微照片数据集:https://aistudio.baidu.com/aistudio/datasetdetail/150040

处理后的数据集:https://aistudio.baidu.com/aistudio/datasetdetail/153329

三、数据集预览

1. 数据集结构

【AI达人特训营】岩石薄片分类 - php中文网        

2. 沉积岩

铝土矿 【AI达人特训营】岩石薄片分类 - php中文网        

部分沉积岩图片【AI达人特训营】岩石薄片分类 - php中文网        

3. 变质岩

大理岩【AI达人特训营】岩石薄片分类 - php中文网        

部分变质岩图片【AI达人特训营】岩石薄片分类 - php中文网        

4. 火成岩

二辉橄榄岩 【AI达人特训营】岩石薄片分类 - php中文网        

部分火成岩图片【AI达人特训营】岩石薄片分类 - php中文网        

四、PP-LCNet 模型介绍

本项目使用的的 PP-LCNet 模型,来自2021年的《PP-LCNet: A Lightweight CPU Convolutional Neural Network》。

原文地址:https://arxiv.org/abs/2109.15099

在文章中,作者说明了目前在启用 Intel® MKLDNN(Math Kernel Library for Deep Networks)的 Intel® CPU 上,主流的轻量级模型的推理速度并没有得到最大的提升,所以文章提出了 PP-LCNet,一种基于 MKLDNN 的轻量级 CPU 卷积神经网络。

作者着重思考了如下三个问题:

Subtxt
Subtxt

生成有意义的文本并编写完整的故事。

下载
  1. 如何在不增加延迟的情况下促进网络学习更强的特性展示。
  2. 在CPU上提高轻量级模型精度的要素是什么。
  3. 如何有效结合不同的策略在CPU上设计轻量级模型。

PP-LCNet 模型,与其他主流模型的对比如图所示: 【AI达人特训营】岩石薄片分类 - php中文网        

PP-LCNet 的网络结构:【AI达人特训营】岩石薄片分类 - php中文网【AI达人特训营】岩石薄片分类 - php中文网        

具体方法:

  • 使用 MobileNet V1 的 DepthSepConv 作为基础模块,并发现在 small model 中, additional、concat 等操作不会提升 accuracy,反而会增加 inference time。DepthSepConv 模块在加速库中被优化过,比 inverted-block 和 shufflenet-block 更快。所以作者基于 DepthSepConv 堆叠形成了 BaseNet。
  • 使用 H-Swish 作为激活函数,EfficientNet 使用 Swish 获得了比 ReLU 更好的性能,MobileNet V3 使用 Hard Swish 获得了比 Swish 更好的性能,作者在 BaseNet 中使用 H-Swish 替换了原先的 ReLu,获得了更好的 accuracy,而且不增加 inference time。
  • 合理的安排 SE 模块的位置,SE 虽然很有效,但是在 Intel® CPU 上,它会增加 inference time,经过实验,作者证明了 把 SE 模块放在 “near the tail of the network” 能在发挥 SE 模块作用的同时,尽可能的减小它对 inference time 的副作用。
  • 使用更大的卷积核,MixNet 证明了使用不同大小的 kernel 的组合可以得到更好的效果,但这会显著地增加 inference time。所以作者采用与 SE 模块类似的做法,在 “near the tail of the network” 使用了一个 5×5 的 kernel 代替了 3×3 的 kernel,并达到了近似的效果。
  • 在 GAP 后增加 1280 维的 1×1 卷积层,在经过 GAP 后的网络输出维数很小,为了使模型具有更强的拟合能力,在最后的 GAP 层之后增加了一个 1280 维的 1×1 卷积层,相当于 FC 层,这将 “ allow for more storage of the model with little increase of inference time.”

图像分类任务的对比:

【AI达人特训营】岩石薄片分类 - php中文网【AI达人特训营】岩石薄片分类 - php中文网        

目标检测任务对比: 【AI达人特训营】岩石薄片分类 - php中文网        

语义分割任务对比: 【AI达人特训营】岩石薄片分类 - php中文网        

消融实验:【AI达人特训营】岩石薄片分类 - php中文网        

SE 模块在不同位置的影响: 【AI达人特训营】岩石薄片分类 - php中文网        

大卷积核在不同位置的影响: 【AI达人特训营】岩石薄片分类 - php中文网        

不同技术的影响: 【AI达人特训营】岩石薄片分类 - php中文网        

小结: PP-LCNet 带来了在轻量级 Intel® CPU 上更好的 accuracy-speed balance,并减少了NAS的搜索空间,也为更快地访问NAS的轻量级模型提供了可能。

参考资料:

  1. 《PP-LCNet: A Lightweight CPU Convolutional Neural Network》
  2. 冬日and暖阳的博客
  3. 《超越MobileNetV3!这个轻量级网络PP-LCNet在CPU上快到起飞!》

五、模型训练

1. 准备工作

  1. 解压处理后的数据集。
  2. 安装 PaddleX,项目中使用的版本是 2.1.0。
  3. 导入相关库。
In [ ]
# 解压数据集!ls /home/aistudio/data
!unzip /home/aistudio/data/data153329/D0001.zip -d /home/aistudio/data/data153329/Pic
   
In [ ]
# 安装PaddleX!pip install paddlex # 安装完后请重启内核
   
In [11]
# 添加PaddleX安装路径,并导入相关库import sys 
sys.path.append('/home/aistudio/work/paddlex')import paddlex as pdxfrom paddlex import transforms as T
   

2. 定义数据集

  1. 设定训练集与验证集的数据增强方案。
  2. 进入数据集路径。
  3. 定义训练集与验证集。
In [ ]
# 训练集数据增强train_transforms = T.Compose([
    T.ResizeByShort(),
    T.CenterCrop(crop_size=224),
    T.RandomHorizontalFlip(), 
    T.RandomVerticalFlip(),
    T.RandomBlur(prob=0.1),
    T.Normalize()
])# 验证集数据增强eval_transforms = T.Compose([
    T.ResizeByShort(),
    T.CenterCrop(crop_size=224),
    T.RandomHorizontalFlip(), 
    T.RandomVerticalFlip(),
    T.RandomBlur(prob=0.1),
    T.Normalize()
])
   
In [ ]
# 进入数据集路径(数据集划分的时候没写好,得到数据集目录下才能进行训练)%cd /home/aistudio/data/data153329/Pic/D0001/
   
In [ ]
# 定义训练集train_dataset = pdx.datasets.ImageNet(
    data_dir='',
    file_list='train_list.txt',
    label_list='labels.txt',
    transforms=train_transforms,
    shuffle=True)# 定义验证集  eval_dataset = pdx.datasets.ImageNet(
    data_dir='',
    file_list='val_list.txt',
    label_list='labels.txt',
    transforms=eval_transforms)
   

3. 开始训练

本项目使用 PPLCNet 作为网络结构,我们发现大概在 50-60 个 epoch 的时候就可以达到理想的精度(约 98%),数据集中一张图片会有 24 种不同的变形,所以 batch_size 设置为 24 ,训练输出保存在 /home/aistudio/output/PPLCNet 下。

In [ ]
num_classes = len(train_dataset.labels)
model = pdx.cls.PPLCNet(num_classes=num_classes)
model.train(num_epochs=50,
            train_dataset=train_dataset,
            eval_dataset=eval_dataset,
            learning_rate=0.00585938,
            train_batch_size=24,
            save_interval_epochs=2,
            save_dir='/home/aistudio/output/PPLCNet',
            use_vdl=True)
   

4.可视化训练结果

Metrics/Training(Step): Loss 【AI达人特训营】岩石薄片分类 - php中文网        

Metrics/Training(Step): ACC 1 【AI达人特训营】岩石薄片分类 - php中文网        

Metrics/Training(Step): Learning Rate 【AI达人特训营】岩石薄片分类 - php中文网        

Metrics/Eval(Epoch): ACC 1 【AI达人特训营】岩石薄片分类 - php中文网        

5. 测试结果

  1. 导入模型
  2. 测试 Igneous_Rock
  3. 测试 Metamorphic_Rock
  4. 测试 Sedimentary_Rock
In [ ]
# 导入模型model = pdx.load_model("/home/aistudio/output/PPLCNet/best_model/")
   
In [ ]
 # 测试 Igneous_Rock
 test_pic = "/home/aistudio/data/data153329/Pic/D0001/Igneous_Rock/Igneous_10_1-1.jpg"
 print(model.predict(test_pic))
       
[{'category_id': 0, 'category': 'Igneous_Rock', 'score': 0.9999058}]
       
In [ ]
# 测试 Metamorphic_Rocktest_pic = "/home/aistudio/data/data153329/Pic/D0001/Metamorphic_Rock/Metamorphic_13_2-3.jpg"print(model.predict(test_pic))
       
[{'category_id': 1, 'category': 'Metamorphic_Rock', 'score': 0.9999999}]
       
In [ ]
# 测试 Sedimentary_Rocktest_pic = "/home/aistudio/data/data153329/Pic/D0001/Sedimentary_Rock/Sedimentary_17_1-9.jpg"print(model.predict(test_pic))
       
[{'category_id': 2, 'category': 'Sedimentary_Rock', 'score': 1.0}]
       

6.模型导出

  1. 导出 Paddle Inference 模型
  2. 导出 Paddle Lite 模型
In [ ]
# 导出 Paddle Inference 模型!paddlex --export_inference --model_dir=./output/PPLCNet/best_model --save_dir=/home/aistudio/inference_model/paddle_inference
   
In [15]
# 安装 Paddle Lite!pip install paddlelite # 安装完后请重启内核# 导出 Paddle Lite 模型!paddle_lite_opt \
    --model_file=/home/aistudio/inference_model/paddle_inference/inference_model/model.pdmodel \
    --param_file=/home/aistudio/inference_model/paddle_inference/inference_model/model.pdiparams \
    --optimize_out=./inference_model/paddlelite/model \
    --optimize_out_type=naive_buffer \
    --valid_targets=arm
   

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

356

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

558

2023.08.10

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1485

2024.08.16

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

19

2025.12.13

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

0

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

2

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.8万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号