PaddleX宝石图像分类

简介: PaddleX宝石图像分类
!pip install paddlex
!unzip -oq /home/aistudio/data/data146107/dataset.zip -d /home/aistudio/data
!mkdir data/dataset/train
import pandas as pd #引入pandas包
train_data_labels=pd.read_table('data/dataset/train.txt',sep='\t',header=None)
train_data_labels[1].value_counts()
import os
import shutil
for i in range(train_data_labels.shape[0]):
    src = 'data/dataset/images/'+ train_data_labels.iloc[i,0]
    dst = 'data/dataset/train/{}'.format(train_data_labels.iloc[i,1])
    if not os.path.exists(dst):
        os.makedirs(dst) 
    shutil.copy(src, dst)
!paddlex --split_dataset --format ImageNet --dataset_dir data/dataset/train --val_value 0.2 --test_value 0
# 导入Python库
import matplotlib
matplotlib.use('Agg') 
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddlex as pdx
from paddlex import transforms as T
# 设置数据增强的方式
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/transforms/transforms.md
train_transforms = T.Compose([
    T.RandomCrop(crop_size=224), 
    T.RandomHorizontalFlip(), 
    T.RandomVerticalFlip(),
    T.RandomScaleAspect(min_scale=0.5, aspect_ratio=0.33),
    T.RandomDistort(),
    T.RandomBlur(),
    T.Normalize(),
])
eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256), 
    T.CenterCrop(crop_size=224), 
    T.Normalize()
])
# 定义训练和验证所用的数据集
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/datasets.md
train_dataset = pdx.datasets.ImageNet(
    data_dir='data/dataset/train',
    file_list='data/dataset/train/train_list.txt',
    label_list='data/dataset/train/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
    data_dir='data/dataset/train',
    file_list='data/dataset/train/val_list.txt',
    label_list='data/dataset/train/labels.txt',
    transforms=eval_transforms)
# 初始化模型,并进行训练
num_classes = len(train_dataset.labels)
model = pdx.cls.ResNet50_vd_ssld(num_classes=num_classes)
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/release/2.0.0/docs/apis/models/classification.md
# 各参数介绍与调整说明:https://github.com/PaddlePaddle/PaddleX/tree/release/2.0.0/docs/parameters.md
model.train(
    num_epochs=100,
    train_dataset=train_dataset,
    train_batch_size=128,
    eval_dataset=eval_dataset,
    lr_decay_epochs=[4, 6, 8],
    learning_rate=0.025,
    save_dir='output/resnet50',
    use_vdl=True)
# 将Test.txt加载成列表
import os
test_files = []
with open('data/dataset/test.txt', 'r') as file_to_read:
    for line in file_to_read:
        test_files.append(os.path.join('data/dataset/images/',line.strip()))
# 批量预测
import paddlex as pdx
# 模型载入(记得根据模型修改路径)
model = pdx.load_model('output/resnet50/best_model')
result_list = model.predict(test_files)
result_list
# 将预测结果写入result.txt
import pandas as pd
test_data = pd.read_table('data/dataset/test.txt',sep='\t',header=None)
with open('result.txt', mode='w') as file_out:
    for i in range(len(result_list)):
        file_out.write('%s\t%s\n'%(test_data.values.tolist()[i][0] , result_list[i][0].get('category')))


目录
相关文章
|
1月前
|
测试技术 自然语言处理 缓存
2024年5月第四周LLM重要论文总结
本文总结了2024年5月第四周发表的一些最重要的LLM论文。这些论文的主题包括模型优化和缩放到推理、基准测试和增强性能。
76 2
|
2月前
|
机器学习/深度学习 编解码 人工智能
论文介绍:HigherHRNet——用于自下而上人体姿态估计的尺度感知表示学习
【5月更文挑战第22天】HigherHRNet是针对自下而上人体姿态估计的尺度感知方法,通过构建高分辨率特征金字塔,改善多尺度人体姿态估计的准确性。该论文提出的新架构在COCO测试集上提高了2.5%的中号人物平均精度,达到70.5%的AP,且在CrowdPose上超越所有自上而下方法,实现67.6%的AP。作者通过消融实验验证了各个组件的重要性,并指出未来可优化模型以适应更复杂场景。论文链接:[https://arxiv.org/abs/1908.10357](https://arxiv.org/abs/1908.10357)
22 1
|
2月前
|
算法
有史以来最全的图像相似度算法
有史以来最全的图像相似度算法
27 0
|
2月前
|
机器学习/深度学习 并行计算 算法
yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理
yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理
119 0
|
2月前
|
存储 计算机视觉
【论文速递】WACV2023 - 循环相似注意力的小样本医学图像分割
【论文速递】WACV2023 - 循环相似注意力的小样本医学图像分割
|
2月前
|
编解码 算法 自动驾驶
【计算机视觉】基于光流特征的目标跟踪算法LK光流法的讲解(图文解释 超详细)
【计算机视觉】基于光流特征的目标跟踪算法LK光流法的讲解(图文解释 超详细)
249 0
|
11月前
|
机器学习/深度学习 决策智能 计算机视觉
对硬币、销钉、大米进行图像分割(附代码)
对硬币、销钉、大米进行图像分割(附代码)
|
12月前
|
机器学习/深度学习 PyTorch 程序员
【Python】Pytorch(CNN)实现垃圾,宝石,表情,车牌,鸟类,食物等各种分类
【Python】Pytorch(CNN)实现垃圾,宝石,表情,车牌,鸟类,食物等各种分类
109 0
|
机器学习/深度学习 人工智能 编解码
7 Papers & Radios | 用神经网络推开数学推理大门;世界首个宏基因组蛋白质图谱
7 Papers & Radios | 用神经网络推开数学推理大门;世界首个宏基因组蛋白质图谱
|
传感器 机器学习/深度学习 存储
登顶KITTI和NuScenes | 2DPASS:2D先验辅助的激光雷达点云语义分割!ECCV2022
语义分割在大规模室外场景理解中起着至关重要的作用,在自动驾驶和机器人技术中有着广泛的应用[1-3]。在过去几年中,研究界投入了大量精力,使用相机图像[4-7]或激光雷达点云[2,8-12]作为输入来理解自然场景。
登顶KITTI和NuScenes | 2DPASS:2D先验辅助的激光雷达点云语义分割!ECCV2022