基于PaddleClas2.3 的鲜花识别

简介: 基于PaddleClas2.3 的鲜花识别

一、鲜花识别


1.数据集简介


Oxford 102 Flowers Dataset 是一个花卉集合数据集,主要用于图像分类,它分为 102 个类别共计 102 种花,其中每个类别包含 40 到 258 张图像。


该数据集由牛津大学工程科学系于 2008 年发布,相关论文有《Automated flower classification over a large number of classes》。

image.png

在文件夹下已经生成用于训练和测试的三个.txt文件:train.txt(训练集,1020张图)、valid.txt(验证集,1020张图)、test.txt(6149)。文件中每行格式:图像相对路径 图像的label_id(注意:中间有空格)。


2.PaddleClas简介


PaddleClas目前已经是 release2.3了,和以前有脱胎换骨的差别,所以需要重新熟悉。

地址: gitee.com/paddlepaddl…

configs已经移动到了ppcls目录 部署为单独的deploy目录


image.pngimage.png

# 解压缩数据集
!tar -xvf  data/data19852/flowers102.tar -C ./data/


二、PaddleClas准备


# 下载最新版
!git clone https://gitee.com/paddlepaddle/PaddleClas/ --depth=1
Cloning into 'PaddleClas'...
remote: Enumerating objects: 1420, done.
remote: Counting objects: 100% (1420/1420), done.
remote: Compressing objects: 100% (1256/1256), done.
remote: Total 1420 (delta 326), reused 967 (delta 138), pack-reused 0
Receiving objects: 100% (1420/1420), 92.84 MiB | 2.32 MiB/s, done.
Resolving deltas: 100% (326/326), done.
Checking connectivity... done.
%cd PaddleClas/
/home/aistudio/PaddleClas


三、模型训练


1.修改imagenet_dataset.py


目录: \ppcls\data\dataloader\imagenet_dataset.py

修改原因是目录这块存在bug,注释:

  • assert os.path.exists(self._cls_path)
  • assert os.path.exists(self._img_root)

添加

  • self._cls_path=os.path.join(self._img_root,self._cls_path)

否则不能使用相对路径

class ImageNetDataset(CommonDataset):
    def _load_anno(self, seed=None):
        会对目录进行检测,如果cls_path使用相对目录,就会报错,在此注释掉,并修改为self._cls_path=os.path.join(self._img_root,self._cls_path)
        # assert os.path.exists(self._cls_path)
        # assert os.path.exists(self._img_root)
        self._cls_path=os.path.join(self._img_root,self._cls_path)
        print('self._cls_path',self._cls_path)
        self.images = []
        self.labels = []
        with open(self._cls_path) as fd:
            lines = fd.readlines()
            if seed is not None:
                np.random.RandomState(seed).shuffle(lines)
            for l in lines:
                l = l.strip().split(" ")
                self.images.append(os.path.join(self._img_root, l[0]))
                self.labels.append(int(l[1]))
                assert os.path.exists(self.images[-1])


2.修改配置文件


# global configs
Global:
  checkpoints: null
  pretrained_model: null
  output_dir: ./output/
  # gpu或cpu配置
  device: gpu
  # 分类数量
  class_num: 102
  # 保存间隔
  save_interval: 5
  # 是否再训练立案过程中进行eval
  eval_during_train: True
  # eval间隔
  eval_interval: 5
  # 训练轮数
  epochs: 20
  # 打印batch step设置
  print_batch_step: 10
  # 是否使用visualdl
  use_visualdl: False
  # used for static mode and model export
  image_shape: [3, 224, 224]
  # 保存地址
  save_inference_dir: ./inference
# model architecture
Arch:
  name: ResNet50_vd
# loss function config for traing/eval process
Loss:
  Train:
    - CELoss:
        weight: 1.0
  Eval:
    - CELoss:
        weight: 1.0
Optimizer:
  name: Momentum
  momentum: 0.9
  lr:
    name: Cosine
    learning_rate: 0.0125
    warmup_epoch: 5
  regularizer:
    name: 'L2'
    coeff: 0.00001
# data loader for train and eval
DataLoader:
  Train:
    dataset:
      name: ImageNetDataset
      image_root: /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
      cls_label_path: train.txt
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - RandCropImage:
            size: 224
        - RandFlipImage:
            flip_code: 1
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''
    sampler:
      name: DistributedBatchSampler
      batch_size: 256
      drop_last: False
      shuffle: True
    loader:
      num_workers: 4
      use_shared_memory: True
  Eval:
    dataset: 
      name: ImageNetDataset
      image_root: /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
      cls_label_path: valid.txt
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - ResizeImage:
            resize_short: 256
        - CropImage:
            size: 224
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''
    sampler:
      name: DistributedBatchSampler
      batch_size: 256
      drop_last: False
      shuffle: False
    loader:
      num_workers: 4
      use_shared_memory: True
Infer:
  infer_imgs: /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
  batch_size: 10
  transforms:
    - DecodeImage:
        to_rgb: True
        channel_first: False
    - ResizeImage:
        resize_short: 256
    - CropImage:
        size: 224
    - NormalizeImage:
        scale: 1.0/255.0
        mean: [0.485, 0.456, 0.406]
        std: [0.229, 0.224, 0.225]
        order: ''
    - ToCHWImage:
  PostProcess:
    name: Topk
    topk: 5
    class_id_map_file: /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00030.jpg
Metric:
  Train:
    - TopkAcc:
        topk: [1, 5]
  Eval:
    - TopkAcc:
        topk: [1, 5]
  • -c 参数是指定训练的配置文件路径,训练的具体超参数可查看yaml文件
  • yaml文Global.device 参数设置为cpu,即使用CPU进行训练(若不设置,此参数默认为True)
  • yaml文件中epochs参数设置为20,说明对整个数据集进行20个epoch迭代,预计训练20分钟左右(不同CPU,训练时间略有不同),此时训练模型不充分。若提高训练模型精度,请将此参数设大,如40,训练时间也会相应延长


3.配置说明


3.1 全局配置(Global)


参数名字 具体含义 默认值 可选值
checkpoints 断点模型路径,用于恢复训练 null str
pretrained_model 预训练模型路径 null str
output_dir 保存模型路径 "./output/" str
save_interval 每隔多少个epoch保存模型 1 int
eval_during_train 是否在训练时进行评估 True bool
eval_interval 每隔多少个epoch进行模型评估 1 int
epochs 训练总epoch数 int
print_batch_step 每隔多少个mini-batch打印输出 10 int
use_visualdl 是否是用visualdl可视化训练过程 False bool
image_shape 图片大小 [3,224,224] list, shape: (3,)
save_inference_dir inference模型的保存路径 "./inference" str
eval_mode eval的模式 "classification" "retrieval"


3.2 结构(Arch)


参数名字 具体含义 默认值 可选值
name 模型结构名字 ResNet50 PaddleClas提供的模型结构
class_num 分类数 1000 int
pretrained 预训练模型 False bool, str


3.3 损失函数(Loss)


参数名字 具体含义 默认值 可选值
CELoss 交叉熵损失函数 —— ——
CELoss.weight CELoss的在整个Loss中的权重 1.0 float
CELoss.epsilon CELoss中label_smooth的epsilon值 0.1 float,0-1之间


3.4 优化器(Optimizer)


参数名字 具体含义 默认值 可选值
name 优化器方法名 "Momentum" "RmsProp"等其他优化器
momentum momentum值 0.9 float
lr.name 学习率下降方式 "Cosine" "Linear"、"Piecewise"等其他下降方式
lr.learning_rate 学习率初始值 0.1 float
lr.warmup_epoch warmup轮数 0 int,如5
regularizer.name 正则化方法名 "L2" ["L1", "L2"]
regularizer.coeff 正则化系数 0.00007 float


4.训练


# GPU设置
!export CUDA_VISIBLE_DEVICES=0
# -o Arch.pretrained=True 使用预训练模型,当选择为True时,预训练权重会自动下载到本地
!python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Arch.pretrained=True

训练日志如下

[2021/10/31 01:53:47] root INFO: [Train][Epoch 16/20][Iter: 0/4]lr: 0.00285, top1: 0.93750, top5: 0.96484, CELoss: 0.36489, loss: 0.36489, batch_cost: 1.48066s, reader_cost: 0.68550, ips: 172.89543 images/sec, eta: 0:00:29
[2021/10/31 01:53:49] root INFO: [Train][Epoch 16/20][Avg]top1: 0.95098, top5: 0.97745, CELoss: 0.31581, loss: 0.31581
[2021/10/31 01:53:53] root INFO: [Train][Epoch 17/20][Iter: 0/4]lr: 0.00183, top1: 0.94531, top5: 0.97656, CELoss: 0.32916, loss: 0.32916, batch_cost: 1.47958s, reader_cost: 0.68473, ips: 173.02266 images/sec, eta: 0:00:23
[2021/10/31 01:53:55] root INFO: [Train][Epoch 17/20][Avg]top1: 0.95686, top5: 0.98137, CELoss: 0.29560, loss: 0.29560
[2021/10/31 01:53:58] root INFO: [Train][Epoch 18/20][Iter: 0/4]lr: 0.00101, top1: 0.93750, top5: 0.98047, CELoss: 0.31542, loss: 0.31542, batch_cost: 1.47524s, reader_cost: 0.68058, ips: 173.53117 images/sec, eta: 0:00:17
[2021/10/31 01:54:01] root INFO: [Train][Epoch 18/20][Avg]top1: 0.94608, top5: 0.98627, CELoss: 0.29086, loss: 0.29086
[2021/10/31 01:54:04] root INFO: [Train][Epoch 19/20][Iter: 0/4]lr: 0.00042, top1: 0.97266, top5: 0.98438, CELoss: 0.24642, loss: 0.24642, batch_cost: 1.47376s, reader_cost: 0.67916, ips: 173.70590 images/sec, eta: 0:00:11
[2021/10/31 01:54:07] root INFO: [Train][Epoch 19/20][Avg]top1: 0.94608, top5: 0.97941, CELoss: 0.30998, loss: 0.30998
[2021/10/31 01:54:10] root INFO: [Train][Epoch 20/20][Iter: 0/4]lr: 0.00008, top1: 0.98047, top5: 0.98438, CELoss: 0.20209, loss: 0.20209, batch_cost: 1.47083s, reader_cost: 0.67647, ips: 174.05180 images/sec, eta: 0:00:05
[2021/10/31 01:54:13] root INFO: [Train][Epoch 20/20][Avg]top1: 0.95784, top5: 0.98922, CELoss: 0.25974, loss: 0.25974
[2021/10/31 01:54:16] root INFO: [Eval][Epoch 20][Iter: 0/4]CELoss: 0.47912, loss: 0.47912, top1: 0.91797, top5: 0.96094, batch_cost: 3.26175s, reader_cost: 3.02034, ips: 78.48538 images/sec
[2021/10/31 01:54:17] root INFO: [Eval][Epoch 20][Avg]CELoss: 0.54982, loss: 0.54982, top1: 0.88922, top5: 0.96667
[2021/10/31 01:54:18] root INFO: Already save model in ./output/ResNet50_vd/best_model
[2021/10/31 01:54:18] root INFO: [Eval][Epoch 20][best metric: 0.8892156844045601]
[2021/10/31 01:54:18] root INFO: Already save model in ./output/ResNet50_vd/epoch_20
[2021/10/31 01:54:18] root INFO: Already save model in ./output/ResNet50_vd/latest

可见日志输出比较混乱,没有以前那么清晰,最好使用visualdl来查看训练情况


四、预测


1.预测


from PIL import Image
img=Image.open('/home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg')
img

image.png

# 预测
!python3 tools/infer.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Infer.infer_imgs=/home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg  -o Global.pretrained_model=output/ResNet50_vd/best_model
/home/aistudio/PaddleClas/ppcls/arch/backbone/model_zoo/vision_transformer.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Callable
[2021/10/31 02:02:53] root INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================
[2021/10/31 02:02:53] root INFO: Arch : 
[2021/10/31 02:02:53] root INFO:     name : ResNet50_vd
[2021/10/31 02:02:53] root INFO: DataLoader : 
[2021/10/31 02:02:53] root INFO:     Eval : 
[2021/10/31 02:02:53] root INFO:         dataset : 
[2021/10/31 02:02:53] root INFO:             cls_label_path : valid.txt
[2021/10/31 02:02:53] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:02:53] root INFO:             name : ImageNetDataset
[2021/10/31 02:02:53] root INFO:             transform_ops : 
[2021/10/31 02:02:53] root INFO:                 DecodeImage : 
[2021/10/31 02:02:53] root INFO:                     channel_first : False
[2021/10/31 02:02:53] root INFO:                     to_rgb : True
[2021/10/31 02:02:53] root INFO:                 ResizeImage : 
[2021/10/31 02:02:53] root INFO:                     resize_short : 256
[2021/10/31 02:02:53] root INFO:                 CropImage : 
[2021/10/31 02:02:53] root INFO:                     size : 224
[2021/10/31 02:02:53] root INFO:                 NormalizeImage : 
[2021/10/31 02:02:53] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:02:53] root INFO:                     order : 
[2021/10/31 02:02:53] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:02:53] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:02:53] root INFO:         loader : 
[2021/10/31 02:02:53] root INFO:             num_workers : 4
[2021/10/31 02:02:53] root INFO:             use_shared_memory : True
[2021/10/31 02:02:53] root INFO:         sampler : 
[2021/10/31 02:02:53] root INFO:             batch_size : 256
[2021/10/31 02:02:53] root INFO:             drop_last : False
[2021/10/31 02:02:53] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:02:53] root INFO:             shuffle : False
[2021/10/31 02:02:53] root INFO:     Train : 
[2021/10/31 02:02:53] root INFO:         dataset : 
[2021/10/31 02:02:53] root INFO:             cls_label_path : train.txt
[2021/10/31 02:02:53] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:02:53] root INFO:             name : ImageNetDataset
[2021/10/31 02:02:53] root INFO:             transform_ops : 
[2021/10/31 02:02:53] root INFO:                 DecodeImage : 
[2021/10/31 02:02:53] root INFO:                     channel_first : False
[2021/10/31 02:02:53] root INFO:                     to_rgb : True
[2021/10/31 02:02:53] root INFO:                 RandCropImage : 
[2021/10/31 02:02:53] root INFO:                     size : 224
[2021/10/31 02:02:53] root INFO:                 RandFlipImage : 
[2021/10/31 02:02:53] root INFO:                     flip_code : 1
[2021/10/31 02:02:53] root INFO:                 NormalizeImage : 
[2021/10/31 02:02:53] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:02:53] root INFO:                     order : 
[2021/10/31 02:02:53] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:02:53] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:02:53] root INFO:         loader : 
[2021/10/31 02:02:53] root INFO:             num_workers : 4
[2021/10/31 02:02:53] root INFO:             use_shared_memory : True
[2021/10/31 02:02:53] root INFO:         sampler : 
[2021/10/31 02:02:53] root INFO:             batch_size : 256
[2021/10/31 02:02:53] root INFO:             drop_last : False
[2021/10/31 02:02:53] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:02:53] root INFO:             shuffle : True
[2021/10/31 02:02:53] root INFO: Global : 
[2021/10/31 02:02:53] root INFO:     checkpoints : None
[2021/10/31 02:02:53] root INFO:     class_num : 102
[2021/10/31 02:02:53] root INFO:     device : gpu
[2021/10/31 02:02:53] root INFO:     epochs : 20
[2021/10/31 02:02:53] root INFO:     eval_during_train : True
[2021/10/31 02:02:53] root INFO:     eval_interval : 5
[2021/10/31 02:02:53] root INFO:     image_shape : [3, 224, 224]
[2021/10/31 02:02:53] root INFO:     output_dir : ./output/
[2021/10/31 02:02:53] root INFO:     pretrained_model : output/ResNet50_vd/best_model
[2021/10/31 02:02:53] root INFO:     print_batch_step : 10
[2021/10/31 02:02:53] root INFO:     save_inference_dir : ./inference
[2021/10/31 02:02:53] root INFO:     save_interval : 5
[2021/10/31 02:02:53] root INFO:     use_visualdl : False
[2021/10/31 02:02:53] root INFO: Infer : 
[2021/10/31 02:02:53] root INFO:     PostProcess : 
[2021/10/31 02:02:53] root INFO:         class_id_map_file : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00030.jpg
[2021/10/31 02:02:53] root INFO:         name : Topk
[2021/10/31 02:02:53] root INFO:         topk : 5
[2021/10/31 02:02:53] root INFO:     batch_size : 10
[2021/10/31 02:02:53] root INFO:     infer_imgs : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg
[2021/10/31 02:02:53] root INFO:     transforms : 
[2021/10/31 02:02:53] root INFO:         DecodeImage : 
[2021/10/31 02:02:53] root INFO:             channel_first : False
[2021/10/31 02:02:53] root INFO:             to_rgb : True
[2021/10/31 02:02:53] root INFO:         ResizeImage : 
[2021/10/31 02:02:53] root INFO:             resize_short : 256
[2021/10/31 02:02:53] root INFO:         CropImage : 
[2021/10/31 02:02:53] root INFO:             size : 224
[2021/10/31 02:02:53] root INFO:         NormalizeImage : 
[2021/10/31 02:02:53] root INFO:             mean : [0.485, 0.456, 0.406]
[2021/10/31 02:02:53] root INFO:             order : 
[2021/10/31 02:02:53] root INFO:             scale : 1.0/255.0
[2021/10/31 02:02:53] root INFO:             std : [0.229, 0.224, 0.225]
[2021/10/31 02:02:53] root INFO:         ToCHWImage : None
[2021/10/31 02:02:53] root INFO: Loss : 
[2021/10/31 02:02:53] root INFO:     Eval : 
[2021/10/31 02:02:53] root INFO:         CELoss : 
[2021/10/31 02:02:53] root INFO:             weight : 1.0
[2021/10/31 02:02:53] root INFO:     Train : 
[2021/10/31 02:02:53] root INFO:         CELoss : 
[2021/10/31 02:02:53] root INFO:             weight : 1.0
[2021/10/31 02:02:53] root INFO: Metric : 
[2021/10/31 02:02:53] root INFO:     Eval : 
[2021/10/31 02:02:53] root INFO:         TopkAcc : 
[2021/10/31 02:02:53] root INFO:             topk : [1, 5]
[2021/10/31 02:02:53] root INFO:     Train : 
[2021/10/31 02:02:53] root INFO:         TopkAcc : 
[2021/10/31 02:02:53] root INFO:             topk : [1, 5]
[2021/10/31 02:02:53] root INFO: Optimizer : 
[2021/10/31 02:02:53] root INFO:     lr : 
[2021/10/31 02:02:53] root INFO:         learning_rate : 0.0125
[2021/10/31 02:02:53] root INFO:         name : Cosine
[2021/10/31 02:02:53] root INFO:         warmup_epoch : 5
[2021/10/31 02:02:53] root INFO:     momentum : 0.9
[2021/10/31 02:02:53] root INFO:     name : Momentum
[2021/10/31 02:02:53] root INFO:     regularizer : 
[2021/10/31 02:02:53] root INFO:         coeff : 1e-05
[2021/10/31 02:02:53] root INFO:         name : L2
[2021/10/31 02:02:53] root INFO: train with paddle 2.1.2 and device CUDAPlace(0)
W1031 02:02:53.626825  7656 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W1031 02:02:53.631515  7656 device_context.cc:422] device: 0, cuDNN Version: 7.6.
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:125: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:
[{'class_ids': [37, 35, 76, 28, 50], 'scores': [0.45998, 0.13054, 0.03585, 0.03207, 0.02833], 'file_name': '/home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg', 'label_names': []}]

可见,更新后的版本日志输出比较混乱。

最终输出

[{'class_ids': [37, 35, 76, 28, 50], 'scores': [0.45998, 0.13054, 0.03585, 0.03207, 0.02833], 'file_name': '/home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg', 'label_names': []}]

显示的是top5的概率,可见分类为37类。由于没有设置label_names,所以这处为空。


2.使用inference模型进行模型推理


2.1 inference格式转换


通过导出inference模型,PaddlePaddle支持使用预测引擎进行预测推理。

!python3 tools/export_model.py \
    -c ./ppcls/configs/quick_start/ResNet50_vd.yaml \
    -o Global.pretrained_model=output/ResNet50_vd/best_model
/home/aistudio/PaddleClas/ppcls/arch/backbone/model_zoo/vision_transformer.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Callable
[2021/10/31 02:30:38] root INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================
[2021/10/31 02:30:38] root INFO: Arch : 
[2021/10/31 02:30:38] root INFO:     name : ResNet50_vd
[2021/10/31 02:30:38] root INFO: DataLoader : 
[2021/10/31 02:30:38] root INFO:     Eval : 
[2021/10/31 02:30:38] root INFO:         dataset : 
[2021/10/31 02:30:38] root INFO:             cls_label_path : valid.txt
[2021/10/31 02:30:38] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:30:38] root INFO:             name : ImageNetDataset
[2021/10/31 02:30:38] root INFO:             transform_ops : 
[2021/10/31 02:30:38] root INFO:                 DecodeImage : 
[2021/10/31 02:30:38] root INFO:                     channel_first : False
[2021/10/31 02:30:38] root INFO:                     to_rgb : True
[2021/10/31 02:30:38] root INFO:                 ResizeImage : 
[2021/10/31 02:30:38] root INFO:                     resize_short : 256
[2021/10/31 02:30:38] root INFO:                 CropImage : 
[2021/10/31 02:30:38] root INFO:                     size : 224
[2021/10/31 02:30:38] root INFO:                 NormalizeImage : 
[2021/10/31 02:30:38] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:30:38] root INFO:                     order : 
[2021/10/31 02:30:38] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:30:38] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:30:38] root INFO:         loader : 
[2021/10/31 02:30:38] root INFO:             num_workers : 4
[2021/10/31 02:30:38] root INFO:             use_shared_memory : True
[2021/10/31 02:30:38] root INFO:         sampler : 
[2021/10/31 02:30:38] root INFO:             batch_size : 256
[2021/10/31 02:30:38] root INFO:             drop_last : False
[2021/10/31 02:30:38] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:30:38] root INFO:             shuffle : False
[2021/10/31 02:30:38] root INFO:     Train : 
[2021/10/31 02:30:38] root INFO:         dataset : 
[2021/10/31 02:30:38] root INFO:             cls_label_path : train.txt
[2021/10/31 02:30:38] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:30:38] root INFO:             name : ImageNetDataset
[2021/10/31 02:30:38] root INFO:             transform_ops : 
[2021/10/31 02:30:38] root INFO:                 DecodeImage : 
[2021/10/31 02:30:38] root INFO:                     channel_first : False
[2021/10/31 02:30:38] root INFO:                     to_rgb : True
[2021/10/31 02:30:38] root INFO:                 RandCropImage : 
[2021/10/31 02:30:38] root INFO:                     size : 224
[2021/10/31 02:30:38] root INFO:                 RandFlipImage : 
[2021/10/31 02:30:38] root INFO:                     flip_code : 1
[2021/10/31 02:30:38] root INFO:                 NormalizeImage : 
[2021/10/31 02:30:38] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:30:38] root INFO:                     order : 
[2021/10/31 02:30:38] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:30:38] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:30:38] root INFO:         loader : 
[2021/10/31 02:30:38] root INFO:             num_workers : 4
[2021/10/31 02:30:38] root INFO:             use_shared_memory : True
[2021/10/31 02:30:38] root INFO:         sampler : 
[2021/10/31 02:30:38] root INFO:             batch_size : 256
[2021/10/31 02:30:38] root INFO:             drop_last : False
[2021/10/31 02:30:38] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:30:38] root INFO:             shuffle : True
[2021/10/31 02:30:38] root INFO: Global : 
[2021/10/31 02:30:38] root INFO:     checkpoints : None
[2021/10/31 02:30:38] root INFO:     class_num : 102
[2021/10/31 02:30:38] root INFO:     device : gpu
[2021/10/31 02:30:38] root INFO:     epochs : 20
[2021/10/31 02:30:38] root INFO:     eval_during_train : True
[2021/10/31 02:30:38] root INFO:     eval_interval : 5
[2021/10/31 02:30:38] root INFO:     image_shape : [3, 224, 224]
[2021/10/31 02:30:38] root INFO:     output_dir : ./output/
[2021/10/31 02:30:38] root INFO:     pretrained_model : output/ResNet50_vd/best_model
[2021/10/31 02:30:38] root INFO:     print_batch_step : 10
[2021/10/31 02:30:38] root INFO:     save_inference_dir : ./inference
[2021/10/31 02:30:38] root INFO:     save_interval : 5
[2021/10/31 02:30:38] root INFO:     use_visualdl : False
[2021/10/31 02:30:38] root INFO: Infer : 
[2021/10/31 02:30:38] root INFO:     PostProcess : 
[2021/10/31 02:30:38] root INFO:         class_id_map_file : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00030.jpg
[2021/10/31 02:30:38] root INFO:         name : Topk
[2021/10/31 02:30:38] root INFO:         topk : 5
[2021/10/31 02:30:38] root INFO:     batch_size : 10
[2021/10/31 02:30:38] root INFO:     infer_imgs : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:30:38] root INFO:     transforms : 
[2021/10/31 02:30:38] root INFO:         DecodeImage : 
[2021/10/31 02:30:38] root INFO:             channel_first : False
[2021/10/31 02:30:38] root INFO:             to_rgb : True
[2021/10/31 02:30:38] root INFO:         ResizeImage : 
[2021/10/31 02:30:38] root INFO:             resize_short : 256
[2021/10/31 02:30:38] root INFO:         CropImage : 
[2021/10/31 02:30:38] root INFO:             size : 224
[2021/10/31 02:30:38] root INFO:         NormalizeImage : 
[2021/10/31 02:30:38] root INFO:             mean : [0.485, 0.456, 0.406]
[2021/10/31 02:30:38] root INFO:             order : 
[2021/10/31 02:30:38] root INFO:             scale : 1.0/255.0
[2021/10/31 02:30:38] root INFO:             std : [0.229, 0.224, 0.225]
[2021/10/31 02:30:38] root INFO:         ToCHWImage : None
[2021/10/31 02:30:38] root INFO: Loss : 
[2021/10/31 02:30:38] root INFO:     Eval : 
[2021/10/31 02:30:38] root INFO:         CELoss : 
[2021/10/31 02:30:38] root INFO:             weight : 1.0
[2021/10/31 02:30:38] root INFO:     Train : 
[2021/10/31 02:30:38] root INFO:         CELoss : 
[2021/10/31 02:30:38] root INFO:             weight : 1.0
[2021/10/31 02:30:38] root INFO: Metric : 
[2021/10/31 02:30:38] root INFO:     Eval : 
[2021/10/31 02:30:38] root INFO:         TopkAcc : 
[2021/10/31 02:30:38] root INFO:             topk : [1, 5]
[2021/10/31 02:30:38] root INFO:     Train : 
[2021/10/31 02:30:38] root INFO:         TopkAcc : 
[2021/10/31 02:30:38] root INFO:             topk : [1, 5]
[2021/10/31 02:30:38] root INFO: Optimizer : 
[2021/10/31 02:30:38] root INFO:     lr : 
[2021/10/31 02:30:38] root INFO:         learning_rate : 0.0125
[2021/10/31 02:30:38] root INFO:         name : Cosine
[2021/10/31 02:30:38] root INFO:         warmup_epoch : 5
[2021/10/31 02:30:38] root INFO:     momentum : 0.9
[2021/10/31 02:30:38] root INFO:     name : Momentum
[2021/10/31 02:30:38] root INFO:     regularizer : 
[2021/10/31 02:30:38] root INFO:         coeff : 1e-05
[2021/10/31 02:30:38] root INFO:         name : L2
[2021/10/31 02:30:38] root INFO: train with paddle 2.1.2 and device CUDAPlace(0)
W1031 02:30:38.361168 11634 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W1031 02:30:38.365787 11634 device_context.cc:422] device: 0, cuDNN Version: 7.6.
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:77: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  return (isinstance(seq, collections.Sequence) and

文件保存到了PaddleClas/inference/目录

inference.pdiparams  
inference.pdiparams.info  
inference.pdmodel


2.2 使用inference进行预测


%cd deploy
!python3 python/predict_cls.py \
    -c configs/inference_cls.yaml \
    -o Global.infer_imgs=/home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg \
    -o Global.inference_model_dir=../inference/ \
    -o PostProcess.Topk.class_id_map_file=None
/home/aistudio/PaddleClas/deploy
2021-10-31 02:34:50 INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================
2021-10-31 02:34:50 INFO: Global : 
2021-10-31 02:34:50 INFO:     batch_size : 1
2021-10-31 02:34:50 INFO:     cpu_num_threads : 10
2021-10-31 02:34:50 INFO:     enable_benchmark : True
2021-10-31 02:34:50 INFO:     enable_mkldnn : True
2021-10-31 02:34:50 INFO:     enable_profile : False
2021-10-31 02:34:50 INFO:     gpu_mem : 8000
2021-10-31 02:34:50 INFO:     infer_imgs : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00033.jpg
2021-10-31 02:34:50 INFO:     inference_model_dir : ../inference/
2021-10-31 02:34:50 INFO:     ir_optim : True
2021-10-31 02:34:50 INFO:     use_fp16 : False
2021-10-31 02:34:50 INFO:     use_gpu : True
2021-10-31 02:34:50 INFO:     use_tensorrt : False
2021-10-31 02:34:50 INFO: PostProcess : 
2021-10-31 02:34:50 INFO:     SavePreLabel : 
2021-10-31 02:34:50 INFO:         save_dir : ./pre_label/
2021-10-31 02:34:50 INFO:     Topk : 
2021-10-31 02:34:50 INFO:         class_id_map_file : None
2021-10-31 02:34:50 INFO:         topk : 5
2021-10-31 02:34:50 INFO:     main_indicator : Topk
2021-10-31 02:34:50 INFO: PreProcess : 
2021-10-31 02:34:50 INFO:     transform_ops : 
2021-10-31 02:34:50 INFO:         ResizeImage : 
2021-10-31 02:34:50 INFO:             resize_short : 256
2021-10-31 02:34:50 INFO:         CropImage : 
2021-10-31 02:34:50 INFO:             size : 224
2021-10-31 02:34:50 INFO:         NormalizeImage : 
2021-10-31 02:34:50 INFO:             channel_num : 3
2021-10-31 02:34:50 INFO:             mean : [0.485, 0.456, 0.406]
2021-10-31 02:34:50 INFO:             order : 
2021-10-31 02:34:50 INFO:             scale : 0.00392157
2021-10-31 02:34:50 INFO:             std : [0.229, 0.224, 0.225]
2021-10-31 02:34:50 INFO:         ToCHWImage : None
image_00033.jpg:  class id(s): [37, 35, 76, 28, 50], score(s): [0.46, 0.13, 0.04, 0.03, 0.03], label_name(s): []


五、模型评估


!python tools/eval.py \
        -c ./ppcls/configs/quick_start/ResNet50_vd.yaml \
        -o Global.pretrained_model=output/ResNet50_vd/best_model
/home/aistudio/PaddleClas/ppcls/arch/backbone/model_zoo/vision_transformer.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Callable
[2021/10/31 02:28:12] root INFO: 
===========================================================
==        PaddleClas is powered by PaddlePaddle !        ==
===========================================================
==                                                       ==
==   For more info please go to the following website.   ==
==                                                       ==
==       https://github.com/PaddlePaddle/PaddleClas      ==
===========================================================
[2021/10/31 02:28:12] root INFO: Arch : 
[2021/10/31 02:28:12] root INFO:     name : ResNet50_vd
[2021/10/31 02:28:12] root INFO: DataLoader : 
[2021/10/31 02:28:12] root INFO:     Eval : 
[2021/10/31 02:28:12] root INFO:         dataset : 
[2021/10/31 02:28:12] root INFO:             cls_label_path : valid.txt
[2021/10/31 02:28:12] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:28:12] root INFO:             name : ImageNetDataset
[2021/10/31 02:28:12] root INFO:             transform_ops : 
[2021/10/31 02:28:12] root INFO:                 DecodeImage : 
[2021/10/31 02:28:12] root INFO:                     channel_first : False
[2021/10/31 02:28:12] root INFO:                     to_rgb : True
[2021/10/31 02:28:12] root INFO:                 ResizeImage : 
[2021/10/31 02:28:12] root INFO:                     resize_short : 256
[2021/10/31 02:28:12] root INFO:                 CropImage : 
[2021/10/31 02:28:12] root INFO:                     size : 224
[2021/10/31 02:28:12] root INFO:                 NormalizeImage : 
[2021/10/31 02:28:12] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:28:12] root INFO:                     order : 
[2021/10/31 02:28:12] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:28:12] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:28:12] root INFO:         loader : 
[2021/10/31 02:28:12] root INFO:             num_workers : 4
[2021/10/31 02:28:12] root INFO:             use_shared_memory : True
[2021/10/31 02:28:12] root INFO:         sampler : 
[2021/10/31 02:28:12] root INFO:             batch_size : 256
[2021/10/31 02:28:12] root INFO:             drop_last : False
[2021/10/31 02:28:12] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:28:12] root INFO:             shuffle : False
[2021/10/31 02:28:12] root INFO:     Train : 
[2021/10/31 02:28:12] root INFO:         dataset : 
[2021/10/31 02:28:12] root INFO:             cls_label_path : train.txt
[2021/10/31 02:28:12] root INFO:             image_root : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:28:12] root INFO:             name : ImageNetDataset
[2021/10/31 02:28:12] root INFO:             transform_ops : 
[2021/10/31 02:28:12] root INFO:                 DecodeImage : 
[2021/10/31 02:28:12] root INFO:                     channel_first : False
[2021/10/31 02:28:12] root INFO:                     to_rgb : True
[2021/10/31 02:28:12] root INFO:                 RandCropImage : 
[2021/10/31 02:28:12] root INFO:                     size : 224
[2021/10/31 02:28:12] root INFO:                 RandFlipImage : 
[2021/10/31 02:28:12] root INFO:                     flip_code : 1
[2021/10/31 02:28:12] root INFO:                 NormalizeImage : 
[2021/10/31 02:28:12] root INFO:                     mean : [0.485, 0.456, 0.406]
[2021/10/31 02:28:12] root INFO:                     order : 
[2021/10/31 02:28:12] root INFO:                     scale : 1.0/255.0
[2021/10/31 02:28:12] root INFO:                     std : [0.229, 0.224, 0.225]
[2021/10/31 02:28:12] root INFO:         loader : 
[2021/10/31 02:28:12] root INFO:             num_workers : 4
[2021/10/31 02:28:12] root INFO:             use_shared_memory : True
[2021/10/31 02:28:12] root INFO:         sampler : 
[2021/10/31 02:28:12] root INFO:             batch_size : 256
[2021/10/31 02:28:12] root INFO:             drop_last : False
[2021/10/31 02:28:12] root INFO:             name : DistributedBatchSampler
[2021/10/31 02:28:12] root INFO:             shuffle : True
[2021/10/31 02:28:12] root INFO: Global : 
[2021/10/31 02:28:12] root INFO:     checkpoints : None
[2021/10/31 02:28:12] root INFO:     class_num : 102
[2021/10/31 02:28:12] root INFO:     device : gpu
[2021/10/31 02:28:12] root INFO:     epochs : 20
[2021/10/31 02:28:12] root INFO:     eval_during_train : True
[2021/10/31 02:28:12] root INFO:     eval_interval : 5
[2021/10/31 02:28:12] root INFO:     image_shape : [3, 224, 224]
[2021/10/31 02:28:12] root INFO:     output_dir : ./output/
[2021/10/31 02:28:12] root INFO:     pretrained_model : output/ResNet50_vd/best_model
[2021/10/31 02:28:12] root INFO:     print_batch_step : 10
[2021/10/31 02:28:12] root INFO:     save_inference_dir : ./inference
[2021/10/31 02:28:12] root INFO:     save_interval : 5
[2021/10/31 02:28:12] root INFO:     use_visualdl : False
[2021/10/31 02:28:12] root INFO: Infer : 
[2021/10/31 02:28:12] root INFO:     PostProcess : 
[2021/10/31 02:28:12] root INFO:         class_id_map_file : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/jpg/image_00030.jpg
[2021/10/31 02:28:12] root INFO:         name : Topk
[2021/10/31 02:28:12] root INFO:         topk : 5
[2021/10/31 02:28:12] root INFO:     batch_size : 10
[2021/10/31 02:28:12] root INFO:     infer_imgs : /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/
[2021/10/31 02:28:12] root INFO:     transforms : 
[2021/10/31 02:28:12] root INFO:         DecodeImage : 
[2021/10/31 02:28:12] root INFO:             channel_first : False
[2021/10/31 02:28:12] root INFO:             to_rgb : True
[2021/10/31 02:28:12] root INFO:         ResizeImage : 
[2021/10/31 02:28:12] root INFO:             resize_short : 256
[2021/10/31 02:28:12] root INFO:         CropImage : 
[2021/10/31 02:28:12] root INFO:             size : 224
[2021/10/31 02:28:12] root INFO:         NormalizeImage : 
[2021/10/31 02:28:12] root INFO:             mean : [0.485, 0.456, 0.406]
[2021/10/31 02:28:12] root INFO:             order : 
[2021/10/31 02:28:12] root INFO:             scale : 1.0/255.0
[2021/10/31 02:28:12] root INFO:             std : [0.229, 0.224, 0.225]
[2021/10/31 02:28:12] root INFO:         ToCHWImage : None
[2021/10/31 02:28:12] root INFO: Loss : 
[2021/10/31 02:28:12] root INFO:     Eval : 
[2021/10/31 02:28:12] root INFO:         CELoss : 
[2021/10/31 02:28:12] root INFO:             weight : 1.0
[2021/10/31 02:28:12] root INFO:     Train : 
[2021/10/31 02:28:12] root INFO:         CELoss : 
[2021/10/31 02:28:12] root INFO:             weight : 1.0
[2021/10/31 02:28:12] root INFO: Metric : 
[2021/10/31 02:28:12] root INFO:     Eval : 
[2021/10/31 02:28:12] root INFO:         TopkAcc : 
[2021/10/31 02:28:12] root INFO:             topk : [1, 5]
[2021/10/31 02:28:12] root INFO:     Train : 
[2021/10/31 02:28:12] root INFO:         TopkAcc : 
[2021/10/31 02:28:12] root INFO:             topk : [1, 5]
[2021/10/31 02:28:12] root INFO: Optimizer : 
[2021/10/31 02:28:12] root INFO:     lr : 
[2021/10/31 02:28:12] root INFO:         learning_rate : 0.0125
[2021/10/31 02:28:12] root INFO:         name : Cosine
[2021/10/31 02:28:12] root INFO:         warmup_epoch : 5
[2021/10/31 02:28:12] root INFO:     momentum : 0.9
[2021/10/31 02:28:12] root INFO:     name : Momentum
[2021/10/31 02:28:12] root INFO:     regularizer : 
[2021/10/31 02:28:12] root INFO:         coeff : 1e-05
[2021/10/31 02:28:12] root INFO:         name : L2
[2021/10/31 02:28:12] root INFO: train with paddle 2.1.2 and device CUDAPlace(0)
self._cls_path /home/aistudio/data/oxford-102-flowers/oxford-102-flowers/valid.txt
W1031 02:28:12.918593 11295 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W1031 02:28:12.923264 11295 device_context.cc:422] device: 0, cuDNN Version: 7.6.
[2021/10/31 02:28:21] root INFO: [Eval][Epoch 0][Iter: 0/4]CELoss: 0.47912, loss: 0.47912, top1: 0.91797, top5: 0.96094, batch_cost: 3.39170s, reader_cost: 2.99661, ips: 75.47843 images/sec
[2021/10/31 02:28:22] root INFO: [Eval][Epoch 0][Avg]CELoss: 0.54982, loss: 0.54982, top1: 0.88922, top5: 0.96667

eval结果

W1031 02:28:12.923264 11295 device_context.cc:422] device: 0, cuDNN Version: 7.6.
[2021/10/31 02:28:21] root INFO: [Eval][Epoch 0][Iter: 0/4]CELoss: 0.47912, loss: 0.47912, top1: 0.91797, top5: 0.96094, batch_cost: 3.39170s, reader_cost: 2.99661, ips: 75.47843 images/sec
[2021/10/31 02:28:22] root INFO: [Eval][Epoch 0][Avg]CELoss: 0.54982, loss: 0.54982, top1: 0.88922, top5: 0.96667


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
2月前
|
文字识别 API 数据安全/隐私保护
可以使用阿里云文字识别服务中的个人证照识别功能。
可以使用阿里云文字识别服务中的个人证照识别功能。【1月更文挑战第21天】【1月更文挑战第102篇】
28 1
|
23天前
|
人工智能 文字识别 达摩院
印刷文字识别产品使用合集之身份证是如何识别的
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
23天前
|
文字识别
印刷文字识别产品使用合集之可以支持对哪些类型的票据进行识别支持数电发票的ocr识别吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
24天前
|
文字识别 IDE 开发工具
印刷文字识别产品使用合集之有印章影响时,日期一直识别不完整,有什么解决办法吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
2月前
|
编解码 文字识别
印刷文字识别产品使用合集之增值税发票识别如何提升备注识别率
印刷文字识别(Optical Character Recognition, OCR)技术能够将图片、扫描文档或 PDF 中的印刷文字转化为可编辑和可搜索的数据。这项技术广泛应用于多个领域,以提高工作效率、促进信息数字化。以下是一些印刷文字识别产品使用的典型场景合集。
|
2月前
|
文字识别 API 数据安全/隐私保护
以使用阿里云文字识别服务中的个人证照识别功能
以使用阿里云文字识别服务中的个人证照识别功能【1月更文挑战第24天】【1月更文挑战第118篇】
110 2
|
2月前
|
算法 开发工具 计算机视觉
条形码识别研究
条形码识别研究
|
9月前
|
机器学习/深度学习 监控 数据格式
智能零售分析:使用YOLOv5进行客流量分析、商品识别和货架分析
智能零售分析:使用YOLOv5进行客流量分析、商品识别和货架分析
152 0
|
12月前
|
数据采集 存储 搜索推荐
分析新闻评论数据并进行情绪识别
爬取新闻评论数据并进行情绪识别的目的是为了从网页中抓取用户对新闻事件或话题的评价内容,并从中识别和提取用户的情绪或态度,如积极、消极、中立等。爬取新闻评论数据并进行情绪识别有以下几个优势: 1)可以了解用户对新闻事件或话题的看法和感受,以及影响他们情绪的因素; 2)可以分析用户的情绪变化和趋势,以及与新闻事件或话题的相关性和影响力; 3)可以根据用户的情绪进行个性化的推荐或服务,如提供正能量的内容、提供帮助或建议等;
192 1
彩码文字防伪的设计制作
多彩文字的主要作用是防伪,颜色可以固定、随机或指定几个颜色循环变化,其目的为了每一张标签的字符颜色具有唯一性或可辨识性,起到防伪作用。
62 0
彩码文字防伪的设计制作