我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

利用deeplab v3+开源代码训练PASCAL VOC 2012数据集 deeplab v3+环境配置好之后则可以进行模型的训练 1、准备PASCAL VOC 2012数据集:可以在ubantu命令行上运行 #From the tensorflow/models/research/deeplab/datasets directory. sh download_and_convert_voc2012.sh 下载并把数据集转换成 TFRecord格式 我已有VOC ... 阅读详情

     PASCAL VOC(Visual Object Classes)http://host.robots.ox.ac.uk/pascal/VOC/竞赛项目提供了用于目标分类识别的图片数据集以及development kit(用于访问数据和标签的MATLAB代码),分四种竞赛:

对象分类/识别竞赛(Classification/Detection Competitions)

 

目标轮廓划分竞赛(Segmentation Competition)

  

人的动作预测竞赛(Action Classification Competition)

   

人体各部分识别竞赛(Person Layout Taster Competition)

   

     注:上面四张图片截取自PASCAL VOC网站,我觉得这些图片非常直观的解释了上面的四种任务,懒得用大段的文字说明来解释,所以截图过来在此用作示例。

   

    把VOC2012数据集VOCtrainval_11-May-2012.tar下载下来后展开,可以看到ImageSets目录下对应有四个目录Main、Segmentation、Action、Layout,即分别用于上面四种竞赛:

   

执行下面命令把PASCAL VOC数据转换成tfrecord格式数据:

cd D:\AI\dataset\VOC2012

python D:\AI\tensorflow\models\research\object_detection\dataset_tools\create_pascal_tf_record.py ^
   --label_map_path=D:\AI\tensorflow\models\research\object_detection\data\pascal_label_map.pbtxt ^
   --data_dir=D:\AI\dataset ^
   --year=VOC2012 ^
   --set=train ^
   --output_path=pascal_train.record

python D:\AI\tensorflow\models\research\object_detection\dataset_tools\create_pascal_tf_record.py ^
   --label_map_path=D:\AI\tensorflow\models\research\object_detection\data\pascal_label_map.pbtxt ^
   --data_dir=D:\AI\dataset ^
   --year=VOC2012 ^
   --set=val ^
   --output_path=pascal_val.record

可以看到生成了两个tfrecord数据文件:

  把D:\AI\tensorflow\models\research\object_detection\samples\configs\ssd_mobilenet_v1_pets.config拷贝到D:\AI\dataset\VOC2012下并改名为ssd_mobilenet_v1_voc2012.config,修改其内容如下:

# SSD with Mobilenet v1 configuration for MSCOCO Dataset.
# Users should configure the fine_tune_checkpoint field in the train config as
# well as the label_map_path and input_path fields in the train_input_reader and
# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that
# should be configured.


model {
  ssd {
    num_classes: 20
    box_coder {
      faster_rcnn_box_coder {
        y_scale: 10.0
        x_scale: 10.0
        height_scale: 5.0
        width_scale: 5.0
      }
    }
    matcher {
      argmax_matcher {
        matched_threshold: 0.5
        unmatched_threshold: 0.5
        ignore_thresholds: false
        negatives_lower_than_unmatched: true
        force_match_for_each_row: true
      }
    }
    similarity_calculator {
      iou_similarity {
      }
    }
    anchor_generator {
      ssd_anchor_generator {
        num_layers: 6
        min_scale: 0.2
        max_scale: 0.95
        aspect_ratios: 1.0
        aspect_ratios: 2.0
        aspect_ratios: 0.5
        aspect_ratios: 3.0
        aspect_ratios: 0.3333
      }
    }
    image_resizer {
      fixed_shape_resizer {
        height: 300
        width: 300
      }
    }
    box_predictor {
      convolutional_box_predictor {
        min_depth: 0
        max_depth: 0
        num_layers_before_predictor: 0
        use_dropout: false
        dropout_keep_probability: 0.8
        kernel_size: 1
        box_code_size: 4
        apply_sigmoid_to_scores: false
        conv_hyperparams {
          activation: RELU_6,
          regularizer {
            l2_regularizer {
              weight: 0.00004
            }
          }
          initializer {
            truncated_normal_initializer {
              stddev: 0.03
              mean: 0.0
            }
          }
          batch_norm {
            train: true,
            scale: true,
            center: true,
            decay: 0.9997,
            epsilon: 0.001,
          }
        }
      }
    }
    feature_extractor {
      type: 'ssd_mobilenet_v1'
      min_depth: 16
      depth_multiplier: 1.0
      conv_hyperparams {
        activation: RELU_6,
        regularizer {
          l2_regularizer {
            weight: 0.00004
          }
        }
        initializer {
          truncated_normal_initializer {
            stddev: 0.03
            mean: 0.0
          }
        }
        batch_norm {
          train: true,
          scale: true,
          center: true,
          decay: 0.9997,
          epsilon: 0.001,
        }
      }
    }
    loss {
      classification_loss {
        weighted_sigmoid {
        }
      }
      localization_loss {
        weighted_smooth_l1 {
        }
      }
      hard_example_miner {
        num_hard_examples: 3000
        iou_threshold: 0.99
        loss_type: CLASSIFICATION
        max_negatives_per_positive: 3
        min_negatives_per_image: 0
      }
      classification_weight: 1.0
      localization_weight: 1.0
    }
    normalize_loss_by_num_matches: true
    post_processing {
      batch_non_max_suppression {
        score_threshold: 1e-8
        iou_threshold: 0.6
        max_detections_per_class: 100
        max_total_detections: 100
      }
      score_converter: SIGMOID
    }
  }
}

train_config: {
  batch_size: 24
  optimizer {
    rms_prop_optimizer: {
      learning_rate: {
        exponential_decay_learning_rate {
          initial_learning_rate: 0.004
          decay_steps: 800720
          decay_factor: 0.95
        }
      }
      momentum_optimizer_value: 0.9
      decay: 0.9
      epsilon: 1.0
    }
  }
fine_tune_checkpoint: "D:\\AI\\tensorflow\\models\\research\\object_detection\\ssd_mobilenet_v1_coco_2017_11_17\\model.ckpt"
  from_detection_checkpoint: true
  # Note: The below line limits the training process to 200K steps, which we
  # empirically found to be sufficient enough to train the pets dataset. This
  # effectively bypasses the learning rate schedule (the learning rate will
  # never decay). Remove the below line to train indefinitely.
  num_steps: 50000
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
}


train_input_reader: {
  tf_record_input_reader {
    input_path: "D:\\AI\\dataset\\voc2012\\pascal_train.record"
  }
  label_map_path: "D:\\AI\\tensorflow\\models\\research\\object_detection\\data\\pascal_label_map.pbtxt"
}


eval_config: {
  num_examples: 5717
  # Note: The below line limits the evaluation process to 10 evaluations.
  # Remove the below line to evaluate indefinitely.
  max_evals: 10
}


eval_input_reader: {
  tf_record_input_reader {
    input_path: "D:\\AI\\dataset\\voc2012\\pascal_val.record"
  }
  label_map_path: "D:\\AI\\tensorflow\\models\\research\\object_detection\\data\\pascal_label_map.pbtxt"
  shuffle: false
  num_readers: 1
}

     

     根据实际情况需要修改D:\AI\tensorflow\models\research\object_detection\model_main.py,如果你需要打开日志并且需要限制GPU的内存占用的话:

from tensorflow.core.protobuf import config_pb2
tf.logging.set_verbosity(tf.logging.INFO)

...

def main(unused_argv):
  flags.mark_flag_as_required('model_dir')
  flags.mark_flag_as_required('pipeline_config_path')
  gpu_options= config_pb2.GPUOptions(per_process_gpu_memory_fraction=0.5)
  session_config = config_pb2.ConfigProto(log_device_placement=True,gpu_options=gpu_options)

  config = tf.estimator.RunConfig(model_dir=FLAGS.model_dir,session_config=session_config)

在D:\AI\dataset\VOC2012下面创建train_result和eval_result目录,然后执行下面的命令开始训练或测试/验证:

cd D:\AI\tensorflow\models\research\object_detection

python model_main.py ^
   --logtostderr ^
   --model_dir=D:\AI\dataset\voc2012\train_result ^
   --pipeline_config_path=D:\AI\dataset\voc2012\ssd_mobilenet_v1_voc2012.config ^
   --num_train_steps=50000

python model_main.py ^
   --logtostderr ^
   --model_dir=D:\AI\dataset\voc2012\eval_result ^
   --checkpoint_dir=D:\AI\dataset\voc2012\train_result ^
   --pipeline_config_path=D:\AI\dataset\voc2012\ssd_mobilenet_v1_voc2012.config ^
   --num_eval_steps=5000

 

我的AI之路(1)--前言

我的AI之路(2)--安装Fedora 28

我的AI之路(3)--安装Anaconda3 和Caffe

我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8

我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

我的AI之路(6)--在Anaconda3 下安装PyTorch

我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm

我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

我的AI之路(9)--使用scikit-learn

我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误

我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误

我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型

我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(17)--Tensorflow和Caffe的API及Guide

我的AI之路(18)--Tensorflow的模型安装之object_detection

我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI

我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

我的AI之路(22)--使用Object_Detection_Tensorflow_API

我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow

 

python实现批量修改Pascal VOC数据集Annotation     学习DL过程中,各位同学一定会经历数据的标定工作,本篇按照Pascal VOC数据集格式,通过python实现Annotation文件的批量修改.    举个例子 <?xml version="1.0" ?><annotation> <folder>HK</folder> <filename>101.jpg</fil.. 阅读详情

相关推荐

362张真实林火检测数据集:小样本场景下的工程级实践指南

目标检测是计算机视觉中识别与定位物体的基础技术,其核心性能高度依赖高质量训练数据。在林业防火、无人机巡检等边缘AI应用中,小样本、高置信度、多场景覆盖的数据尤为关键。本文围绕一个362张实拍林火图像构成的工程级数据集,解析其VOC与YOLO双格式结构设计原理、真实光照与火点分布带来的建模挑战,以及如何通过标注一致性、时空分层划分和HSV增强等策略提升YOLOv8在低数据量下的泛化能力。该数据集不仅支撑森林火灾检测任务,更可作为小样本目标检测、野外鲁棒性训练的典型范例,适用于安防监控、生态监测等需快速落地的工

weixin_34005042的博客 463

使用tensorflow复现faster-rcnn 一.pascal voc数据集的处理

更新:项目开源github地址:https://github.com/LongJun123456/Faster-rcnn-tensorflow Faster-rcnn作为经典的两步检测网络,其anchor的概念与思想在之后的很多检测网络中也有应用。像Yolo中bounding box的思想就是借鉴的anchor的思想。并且Faster-rcnn的性能放在今天也还算是比较不错的,在很多领域内都是通...

weixin_40446651的博客 1958

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 405

目标检测Faster rcnn及Pascal voc数据集

1、PASCAL VOC2012数据集讲解与制作自己的数据集 Pascal VOC 2012数据集下载-把镜像网址复制到迅雷中进行下载,能达到10M/s pascal_voc是xml文件 labelimg-xml文件 labelme-json文件 train.txt和val.txt是互斥的,trainval.txt是用来训练最终网络的,可以用voc2007test数据集去做验证。 目标.txt-(1表示有该目标物,-1表示无该目标物,0表示检测起来difficult),对每一个目标都有train\va

weixin_43741711的博客 3369

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

UniApp 与 Taro 深度解析:如何根据项目需求选择最佳跨平台框架?

本文深度对比了UniApp和Taro两大主流跨平台开发框架。UniApp基于Vue生态,提供开箱即用的高效开发体验,尤其适合快速覆盖多端小程序;Taro则根植React范式,架构灵活,便于与现有React生态集成,更适合对性能和原生体验有高要求的复杂项目。文章结合团队技术栈、项目类型及性能需求,为开发者提供了清晰的选型指南。

snow3的博客 204

《tf object detection API使用教程--第二讲》利用tensorflow的API,把VOCtrainval_11-May-2012数据集转换成tf.record格式的数据

进入到tensorflow/models/research路径下 执行命令wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar,下载数据集VOC2012 解压数据集 tar -xvf VOCtrainval_11-May-2012.tar python object_detecti...

luccao的博客 999

【软件逆向】带壳带反调试找flag教程(VMProtect3.0+X64dbg+ScyllaHide)

【软件逆向】带壳带反调试找flag教程(VMProtect 3.0+X64dbg+ScyllaHide)

zhangjiuding的博客 7510

Faster-rcnn 制作PASCAL VOC 自己的数据集

    理论上数据集的格式名称等没有强制的要求,但是为了尽量少的修改代码,我们用PASCAL VOC 格式制作数据集,这样制作完之后替换原来数据集的相应文件就可以了。    VOC数据集下载之后解压后是下面的几个文件夹:           其中在图像物体识别上着重需要了解的是Annotations、ImageSets和JPEGImages,这三个文件夹该文件夹下存放着所有的训练集图片,格式都是....

ytusdc的博客 2675

EUV光源技术路线深度解析

EUV光刻技术的关键瓶颈在于13.5纳米光源的稳定高效获取。主流技术路线从DPP放电等离子体发展为LPP激光等离子体方案,后者通过激光轰击锡液滴实现更高功率输出。新出现的LDP技术综合激光预热与放电优势,虽功率扩展性有限,但为光源技术提供了有益补充。目前LPP仍是唯一通过量产验证的方案,而LDP可能作为过渡技术应用于特定场景。EUV光源的发展实质是能量转化效率与系统可靠性的持续优化过程,各种技术路线的探索共同推动着这一核心工艺的进步。

硬核科技 556

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

tensorflow object_detection API 跑faster r-cnn ,在VOC2012数据集上 ubuntu18

一:配置环境 安装哪一快先不说了。。。 添加环境变量: export PYTHONPATH=$PYTHONPATH:`pwd`:'pwd'/slim 即添加了python 路径:(pwd 是输出当前目录的命令,这里为什么可以这样,还不懂)添加了两个路径,分别为 /home/.../models-master/research 和  /home/.../models-master/resea...

xingtianyao的博客 608

使用MATLAB实时处理摄像头图像

本文介绍了如何使用MATLAB进行实时图像处理,包括从摄像头获取图像、对图像进行处理并显示处理结果。我们将演示如何使用MATLAB的图像处理工具箱来实现常见的图像处理任务,如图像增强、边缘检测和物体检测。

XsiJava的博客 921

tensorflow object detection api v1训练自己的数据集详细教程

1. 安装 拉取镜像 docker pull nvcr.io/nvidia/tensorflow:21.02-tf1-py3 启动容器 container_name=tf21.02 docker run -itd –name {container_name} -v /workspace:/workspace nvcr.io/nvidia/tensorflow:21.02-tf1-py3 /bin/bash 进入容器 docker exec -it {container_name} /bin/

weixin_44533869的博客 384

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GLM-5.3-Flash-NVFP4架构深度解析:KDA线性注意力、DSA稀疏注意力与288专家之谜

**GLM-5.3-Flash-NVFP4** 是 GLM-5.3-Flash 多模态 MoE 大模型的 NVFP4 4-bit 量化版本,将 328.4 GB 的权重压缩到 **194.6 GB**(W4A16,仅量化权重),同时完整保留了 KDA 线性注意力、DSA 稀疏注意力、288 路由专家和 1M 上下文等核心能力。本文基于仓库内的配置文件,带你快速看懂它"快在哪、省在哪、强在哪"。

gitblog_00546的博客 803

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Qwen2.5-VL-7B-Instruct-NVFP4部署实战:TensorRT-LLM LLM API多模态推理完全指南

Qwen2.5-VL-7B-Instruct-NVFP4 是 NVIDIA 基于阿里 Qwen2.5-VL-7B-Instruct 官方量化发布的多模态大模型:它使用 NVFP4 4比特量化技术,支持图文多模态输入,可直接通过 TensorRT-LLM 的 LLM API 部署推理。本文将带你从零跑通部署流程,理解量化配置、文件结构、运行参数与合规要点。 ## 一、模型速览:这是一个什么模型?

gitblog_01177的博客 338

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

抖音下载器 3 分钟快速上手:批量保存无水印视频

想把某博主主页 30 个作品、再加一条视频里的原声音乐完整存到本地?手工复制粘贴、逐个下载、整理文件夹,半小时起步。开源项目 douyin-downloader 用一份 YAML 配置批量完成这些需求,无水印、可去重、自动重试,把 1 小时的活压到 20 分钟以内。 ## 初次上手:3 分钟完成第一次下载 1. 克隆仓库并安装依赖 ```bash git clone https://gitc

gitblog_01136的博客 346

51c深度学习~合集8

方法的完整数学描述略显复杂,如果只是想了解主要思想,可以只看上面 PatchMix的流程图即可(其实只是公式多,每个公式也不复杂,后续有机会做个演示动画,帮助大家理解。这个方法也可以用简单的 Mask 方法实现,但是本方法在大规模图像处理上效率是最高的),对该工作感兴趣的同行可以看一下,我尽量写得清楚一些。结合 PatMix 的流程图,主要过程如下:由于混合图像和混合图像之间,重叠比例的不同,mix-to-mix label 中每一项的权重分数是不同的,根据上图,可以得到权重系数可以表示为。

whaosoft~aiotの开发板商城 2962

深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍

PASCAL-VOC2012数据集介绍官网:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html 数据集下载地址:benchmark_RELEASE:下载地址 voc2012:下载地址 VOC2012数据集分为20类,包括背景为21类,分别如下: - Person: person - Animal: bird, cat, co

老潘的博客 3万+

将voc数据集转换成.tfrecord格式供tensorflow训练用

把现成的东西捋了一遍,主要是我想训练自己想要的模型,格式和分类类别不一样。所以先把VOC捋顺了,为以后改成适合自己的做准备。此处记录一下。就一个文件搞定(现在啥都分布式,读起来费劲)。#coding=utf-8 import os import sys import random import numpy as np import tensorflow as tf # process a xml...

郭云飞的专栏 1万+

YOLO-tensorflow代码解析一(pascal_voc)

import os import xml.etree.ElementTree as ET import numpy as np import cv2 import pickle import copy import yolo.config as cfg class pascal_voc(object): def __init__(self, phase, rebuild=False):...

qq_36411093的博客 629

python 处理pascal voc数据 读取xml文件

Pascal VOC数据的annotation是xml文件,要利用xml文件里的标注信息裁剪出数据~~

1万+

DeepLabV3+(tensorflow)工程应用系列(二)—— TFRecord生成VOC2012训练数据

文章目录一、PASCAL VOC 2012简介二、什么是TFRecord?三、生成 TFRecord 文件   在上一篇博文中,我们介绍如何借助【Labelme】软件制作原始的语义分割的标注数据。那么,如何将标注生成的数据(比如掩码图)转化为训练直接可以使用的数据?本篇博文将详细如何使用TFRecord生成【PASCAL VOC2012】训练数据。 一、PASCAL VOC 2012简介   该数据集是常用的语义分割数据集,总共有20类分割目标。在我之前的博文中,详细介绍了该数据集的详细内容,请参考博文:P

DAOCHI 1172

tensorflow object detection的简单使用(一)

在上一篇博文中,简单介绍了如何在ubuntu16.04上安装google提供的基于tensorflow的object detection模块。本篇博文简单介绍如何去使用这个模块,主要以训练PASCALVOC2012数据集为例进行讲解。什么是PASCAL VOC,如果有不了解的同学可以抽点时间看下这篇博文这个博主讲的很详细,简单来说就是拥有20个类别的目标检测数据集(当然除了目标检测还有目标分割等...

霹雳吧啦Wz 5891

Py-faster-rcnn实现自己的数据train和demo

在我的上两个博客中已经对py-faster-rcnn配置运行demo.py和py-faster-rcnn配置运行faster_rcnn_end2end—VGG_CNN_M_1024做出了相应说明,在本博客中我将对py-faster-rcnn实现自己的数据train和demo做出具体操作说明,希望可以解决大家在训练自己数据时出现的问题。 注意:如果对py-faster-rcnn配置运行dem...

samylee的博客 3万+
上一篇: 我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集
下一篇: 我的AI之路(22)--使用Object_Detection_Tensorflow_API
Arnold-FY-Chen
博客等级 码龄19年 925粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值