news 2026/9/3 6:08:36

8万张图片245类垃圾分类数据集与TensorFlow实战:从数据到部署全流程解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
8万张图片245类垃圾分类数据集与TensorFlow实战:从数据到部署全流程解析

简介:本资源是一套面向人工智能初学者与计算机视觉实践者的垃圾分类图像识别完整方案,聚焦于真实场景下的细粒度分类任务,适用于课程设计、竞赛备赛及工业级垃圾识别模型快速验证。资源包含8万张高质量标注图片,覆盖245个具体垃圾子类(如‘碱性电池’‘PET塑料瓶’等),配套TensorFlow 2.x实现的训练/验证/推理全流程代码,含数据加载、数据增强、模型构建(支持ResNet/EfficientNet等主干)、评估脚本及类别映射JSON文件。压缩包共2000个文件,主体为1196张jpg与789张jpeg图像样本,辅以13个Python脚本(含train.py、predict.py等核心模块)、1个类别标签json及1份README说明文档,整体体积561.25MB,结构清晰、开箱即用。目前已有131人学习下载,无需额外标注或数据清洗,可直接用于模型微调、迁移学习或教学演示。

1. 项目概述:一个开箱即用的垃圾分类实战资源包

最近在社区里看到不少朋友在尝试做垃圾分类相关的AI项目,从智能垃圾桶到社区管理应用,需求挺多的。但大家普遍卡在第一步:数据。要么是找不到足够多、足够好的图片,要么是找到了数据但格式混乱,标签不统一,预处理起来极其耗时。更头疼的是,数据有了,还得自己从头搭建训练框架,调参、调试又是一大坑。

所以,当我看到这个“垃圾分类数据集和tf代码-8w张图片245个类(下载即用)”的资源时,第一反应是:这简直是给想快速上手垃圾分类视觉识别的研究者和开发者送了一份“大礼包”。它不是一个简单的图片压缩包,而是一个包含了海量标注数据、预处理脚本以及完整TensorFlow训练代码的工程化解决方案。8万张图片,覆盖245个细分类别,这个规模对于训练一个具备较强泛化能力的模型来说,已经具备了相当不错的基础。更重要的是,它提供了“下载即用”的承诺,意味着数据是清洗过的、格式统一的,代码是经过验证、能跑通的。这直接省去了项目前期最耗时的数据收集、清洗、标注和基础框架搭建工作,让你能立刻聚焦于模型调优、业务逻辑实现等更有价值的部分。

这个资源包的核心价值在于其“完整性”和“工程友好性”。它瞄准的不是学术前沿的刷榜,而是解决实际工程落地中的痛点。对于学生党来说,它是绝佳的课程设计或毕业课题素材;对于算法工程师,它是一个高质量的基准(Baseline)和快速原型验证工具;对于兴趣爱好者,它降低了深度学习应用的门槛,让你能亲手训练一个识别准确率不错的垃圾分类模型。接下来,我就结合自己处理类似项目的经验,对这个资源包进行深度拆解,看看它里面到底有什么,以及如何最高效地利用它。

2. 数据集深度解析:从宏观到微观

2.1 数据规模与类别体系:为什么是8万和245?

8万张图片,245个类别,这个数字组合并非随意设定,其背后反映了构建者对现实垃圾分类场景的深刻理解。

首先,8万张的规模在学术数据集(如ImageNet的千万级)面前不算巨大,但对于一个垂直领域(垃圾分类)的应用型数据集而言,这是一个非常实用的量级。它平衡了数据获取成本、处理难度与模型训练效果。我的经验是,对于像ResNet、EfficientNet这类现代卷积神经网络,每个类别若有300-500张图片,模型就能学到不错的特征表示。8万张均摊到245个类,平均每个类约有327张,这已经达到了启动有效训练的门槛。这个规模足以让模型避免严重的过拟合,同时又在个人或小团队的计算资源承受范围之内(例如,使用单张RTX 3090/4090显卡进行训练是可行的)。

其次,245个类别的设定极具现实意义。它没有简单地分为“可回收”、“有害”、“厨余”、“其他”四类,而是做了极致的细化。例如,“可回收物”下面可能细分出“透明PET瓶”、“绿色玻璃瓶”、“报纸”、“瓦楞纸箱”、“铝制易拉罐”、“铁罐”等;“有害垃圾”会区分“充电电池”、“纽扣电池”、“过期药品”、“废杀虫剂罐”等。这种细粒度分类有两大好处:

  1. 模型能力更强:迫使模型学习更精细、更具判别性的特征,而不是粗糙地判断大类。一个能区分“塑料餐盒”和“泡沫塑料”的模型,其“视觉理解”能力远强于只能判断“塑料”的模型。
  2. 落地应用更灵活:后端业务系统可以基于细粒度识别结果进行灵活聚合。你可以根据不同城市的垃圾分类标准(有的城市分四类,有的分得更细),将245个类别的结果映射到本地规则上。这比训练多个针对不同标准的粗粒度模型要高效、准确得多。

注意:拿到数据集后,第一件事不是急着训练,而是打开类别标签文件(通常是classes.txtlabel_map.pbtxt),仔细浏览这245个类别。理解其分类逻辑,检查是否有你所在地区不常见的垃圾种类,或者是否有你特别需要但缺失的类别。这关系到后续模型是否“对口”。

2.2 数据质量与标注格式:开箱即用的关键

“下载即用”的核心前提是数据质量过硬且格式标准。一个优秀的数据集应该在这几方面经得起考验:

1. 图片质量与多样性:

  • 场景多样性:图片应该涵盖不同拍摄环境(室内、室外、白天、夜晚)、不同摆放状态(单独放置、堆叠、在垃圾桶内)、不同背景(干净背景、复杂背景)。这能提升模型的鲁棒性。
  • 成像质量:图片分辨率不宜过低(通常长边至少256像素),要避免大量模糊、过曝、过暗的图片。好的数据集会经过初步的自动或人工过滤。
  • 目标完整性:垃圾物体在图片中应尽可能完整,避免被严重遮挡或只出现一小部分。

2. 标注格式与一致性:这个资源包很可能采用深度学习领域最通用的标注格式之一。常见的有两种:

  • PASCAL VOC格式:每张图片对应一个XML文件,里面用<bndbox>记录物体边界框(Bounding Box)的(xmin, ymin, xmax, ymax)坐标,并用<name>指定类别。这种格式人类可读性好。
  • COCO格式:使用一个统一的JSON文件管理所有标注信息。它更紧凑,支持实例分割(多边形标注),但直接阅读不如XML直观。对于245个类别的目标检测任务,COCO格式更常见。

我推测该资源包极有可能采用COCO格式,因为其代码是TensorFlow的,而TF的官方检测API(tf.object_detection)对COCO格式支持得非常好。你需要检查压缩包内是否存在一个名为annotations的文件夹,里面包含instances_train2017.jsoninstances_val2017.json之类的文件。

3. 数据划分:一个负责任的数据集会预先划分好训练集(Train)、验证集(Validation)和测试集(Test)。通常比例是7:2:1或8:1:1。验证集用于训练过程中监控模型表现、调整超参数、防止过拟合;测试集则用于最终评估模型性能,在整个训练和调参过程中绝对不能使用,以保证评估的公正性。你需要确认资源包是否提供了明确的划分文件或目录结构。

2.3 数据目录结构猜想与查验

基于经验,一个规范的数据集目录结构通常如下所示:

垃圾分类数据集/ ├── images/ # 存放所有图片 │ ├── train/ # 训练集图片 │ ├── val/ # 验证集图片 │ └── test/ # 测试集图片(可能没有) ├── annotations/ # 存放所有标注文件 │ ├── instances_train.json # 训练集标注(COCO格式) │ ├── instances_val.json # 验证集标注 │ └── instances_test.json # 测试集标注 ├── label_map.pbtxt # 类别索引与名称的映射文件(TensorFlow格式) └── README.md # 数据集说明文档

下载后,你应该立即按照这个思路检查文件结构。如果发现图片和标注是混在一起的,或者只有一个大JSON文件,那就需要根据README或代码中的指引,运行其提供的预处理脚本(例如prepare_data.py)来重新组织数据。

3. TensorFlow代码框架拆解:不止于跑通

提供的TF代码是这份资源的另一半灵魂。它不应该只是一个能启动训练的脚本,而应该是一个体现了良好工程实践的迷你项目。

3.1 模型架构选型:平衡速度与精度

代码中预置的模型选择直接决定了项目的起点。常见的候选者有:

  • SSD (Single Shot MultiBox Detector) with MobileNetV2/V3:这是移动端和边缘设备上的经典组合,速度极快,精度尚可,非常适合部署到算力有限的设备(如智能垃圾桶的嵌入式主板)。
  • Faster R-CNN with ResNet-50/101:两阶段检测器的代表,精度高,但速度慢,计算开销大。适合对精度要求极高、且服务器端运行的场景(如社区垃圾房的后台分析系统)。
  • EfficientDet-D0/D1:谷歌推出的兼顾速度与精度的高效检测器家族,近年来非常流行。D0到D7模型复杂度递增,D0适合移动端,D1/D2适合服务器端。

你需要查看代码的配置文件(通常是pipeline.config,如果使用了TF Object Detection API)或模型定义部分,来确定它使用的是哪一种。我个人的倾向是,对于垃圾分类这种需要实时或准实时响应的应用,优先考虑SSD或EfficientDet-D0/D1这类轻量级模型。可以先在轻量模型上跑出基准,如果精度不满足要求,再考虑换用更大的模型。

3.2 代码结构解析:如何优雅地组织项目

一个优秀的代码包应该模块清晰,职责分离。我期望看到类似下面的结构:

tf_code/ ├── configs/ # 配置文件目录 │ ├── ssd_mobilenet_v2.config # 模型配置 │ └── ...其他模型配置 ├── datasets/ # 数据集处理脚本 │ ├── build_coco_dataset.py # 将数据转换为TFRecord格式(如果用了TF API) │ └── visualize_annotations.py # 标注可视化工具,用于检查数据 ├── models/ # 模型定义(可能直接引用TF API) ├── scripts/ # 实用脚本 │ ├── train.py # 训练主脚本 │ ├── eval.py # 评估脚本 │ ├── export_inference_graph.py # 模型导出脚本(用于部署) │ └── run_training.sh # 一键训练脚本(封装命令) ├── outputs/ # 训练输出目录(日志、检查点) │ ├── train/ # 训练日志和检查点 │ └── eval/ # 评估结果 └── requirements.txt # Python依赖列表

关键脚本说明:

  • train.py:这是核心。它应该支持从配置文件读取参数、构建模型、加载数据、设置优化器和学习率调度、启动训练循环并定期保存检查点(Checkpoint)。优秀的代码会在训练中同时计算并在控制台/日志中输出损失值,方便监控。
  • eval.py:在验证集上定期评估模型性能,计算mAP(平均精度均值)、AP per class等关键指标。训练和评估最好能异步进行,即一边训练一边评估,这样能随时掌握模型状态。
  • export_inference_graph.py:将训练得到的检查点文件(.ckpt)冻结(Freeze)成包含网络结构和权重的单个文件(通常是.pb.savedmodel格式),这是模型部署到生产环境(如TensorFlow Serving、移动端)的必要步骤。

3.3 配置文件解读:参数调整的战场

如果使用了TF Object Detection API,那么pipeline.config文件就是整个训练过程的控制中心。你需要重点关注以下几个部分:

model { ssd { num_classes: 245 # 必须修改为你的类别数!这是最常见的错误。 # ... 其他网络结构参数 } } train_config { batch_size: 24 # 根据你的GPU内存调整。越大越好,但会爆内存。 num_steps: 50000 # 总训练步数。8万数据,通常需要数万步。 optimizer { ... } # 优化器配置,如动量SGD、Adam。 learning_rate { ... } # 学习率调度策略,如余弦衰减、分段常数衰减。 } train_input_reader { label_map_path: "path/to/your/label_map.pbtxt" tf_record_input_reader { input_path: "path/to/your/train.record" } } eval_input_reader { # ... 类似,指向验证集数据 }

必须修改的参数:

  1. num_classes: 务必将其从默认值(如90)改为245
  2. batch_size: 这是影响训练稳定性和速度的关键参数。从一个小值(如8或16)开始尝试,如果GPU内存有富余,再逐步调大。更大的batch size通常有助于稳定训练。
  3. fine_tune_checkpoint: 如果你是从预训练模型(在COCO等大数据集上训练过的)开始微调(Fine-tuning),这里需要指向预训练模型的检查点路径。这是提升小数据集上模型性能和收敛速度的标准做法
  4. 所有文件路径:确保label_map_pathinput_path等路径指向你本地正确的文件位置。

4. 从零开始的完整实操流程

假设你现在已经下载好了数据集和代码,并且有一台装有NVIDIA显卡的Linux/Windows机器。下面是我推荐的端到端操作流程。

4.1 环境准备与依赖安装

步骤1:创建并激活虚拟环境强烈建议使用虚拟环境(如conda或venv)来隔离项目依赖,避免包版本冲突。

# 使用 conda conda create -n garbage_classification python=3.8 conda activate garbage_classification # 或者使用 venv python -m venv garbage_env source garbage_env/bin/activate # Linux/Mac # garbage_env\Scripts\activate # Windows

步骤2:安装TensorFlow根据你的CUDA和cuDNN版本,安装对应的TensorFlow GPU版本。例如,对于CUDA 11.x:

pip install tensorflow-gpu==2.10.0 # 具体版本需匹配,TF 2.10是一个较稳定的版本

安装后,在Python中运行import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))来确认GPU是否被正确识别。

步骤3:安装项目特定依赖进入tf_code目录,安装requirements.txt中列出的包。

cd path/to/tf_code pip install -r requirements.txt

如果项目使用了TF Object Detection API,可能需要额外安装该API包。官方推荐的方式是克隆TensorFlow Models仓库并安装:

git clone https://github.com/tensorflow/models.git cd models/research protoc object_detection/protos/*.proto --python_out=. # 编译Protobuf文件 cp object_detection/packages/tf2/setup.py . pip install .

4.2 数据预处理与格式转换

步骤1:检查并理解原始数据按照第2.3节的方法,浏览数据集目录和标注文件。用提供的可视化脚本(如果有)随机查看几张图片和标注框,确保数据看起来正常。

步骤2:转换为TFRecord格式(如果需要)TF Object Detection API通常要求数据为TFRecord格式,这是一种高效的TensorFlow原生数据格式。运行代码包中提供的转换脚本,例如:

python datasets/build_coco_dataset.py \ --train_image_dir=垃圾分类数据集/images/train \ --val_image_dir=垃圾分类数据集/images/val \ --train_annotations_file=垃圾分类数据集/annotations/instances_train.json \ --val_annotations_file=垃圾分类数据集/annotations/instances_val.json \ --output_dir=垃圾分类数据集/tfrecords \ --label_map_file=垃圾分类数据集/label_map.pbtxt

这个脚本会生成train.recordval.record文件。同时,确保label_map.pbtxt文件内容正确,格式如下:

item { id: 1 name: 'plastic_bottle' } item { id: 2 name: 'newspaper' } # ... 一直到 id: 245

4.3 模型训练与监控

步骤1:配置修改复制一份配置文件(如configs/ssd_mobilenet_v2.config)到你的工作目录,并修改关键参数:

  • num_classes: 245
  • fine_tune_checkpoint: 指向预训练模型路径(例如pre-trained-models/ssd_mobilenet_v2_coco/checkpoint/ckpt-0)。
  • train_input_readereval_input_reader中的label_map_pathinput_path
  • batch_size: 根据你的GPU内存调整(例如从16开始)。
  • num_steps: 可以先设为20000,观察损失曲线再决定是否增加。

步骤2:启动训练使用提供的训练脚本,或直接使用TF OD API的命令行工具:

# 假设你在代码根目录,且配置文件为 my_config.config python scripts/train.py \ --logtostderr \ --pipeline_config_path=my_config.config \ --model_dir=outputs/train

--model_dir指定了训练日志和检查点保存的位置。

步骤3:监控训练过程

  • 控制台输出:观察损失(loss)值是否在稳步下降。分类损失和定位损失都应呈下降趋势。
  • TensorBoard:这是最强大的可视化工具。在另一个终端启动TensorBoard:
    tensorboard --logdir outputs/train
    然后在浏览器打开localhost:6006。你可以看到损失曲线、学习率变化、验证集评估指标(mAP)等,一目了然。
  • 定期评估:在训练的同时,可以另开一个进程运行评估脚本(或使用TensorBoard的Eval结果),监控模型在验证集上的性能。当验证集指标不再提升时,可能意味着模型已经收敛或开始过拟合。

4.4 模型评估与导出

步骤1:在测试集上最终评估训练完成后,使用最终的检查点(通常是model_dir中步数最大的那个)在从未使用过的测试集上运行评估,得到客观的性能报告。

python scripts/eval.py \ --pipeline_config_path=my_config.config \ --checkpoint_dir=outputs/train \ --eval_dir=outputs/eval

步骤2:导出为部署格式选择在验证集上性能最好的一个检查点(不一定是最后一步),将其导出。

python scripts/export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path my_config.config \ --trained_checkpoint_prefix outputs/train/model.ckpt-18000 \ # 指定具体检查点 --output_directory outputs/exported_model

导出的outputs/exported_model/saved_model目录下,会包含saved_model.pb和变量文件夹,这就是可以用于部署的模型。

5. 避坑指南与性能优化实战

5.1 训练过程中的常见问题与解决

  1. Loss为NaN或突然爆炸

    • 原因:学习率(Learning Rate)设置过高是最常见原因。特别是当从头开始训练(而非微调)时。
    • 解决:立即停止训练。将配置文件中的初始学习率调低一个数量级(例如从0.001降到0.0001),或者使用更温和的学习率调度策略(如余弦衰减)。如果使用了预训练模型微调,学习率通常可以设得更小(如1e-4到1e-5)。
  2. 验证集mAP很低,但训练集Loss正常下降

    • 原因:模型过拟合。它在记忆训练数据,而非学习通用特征。
    • 解决
      • 数据增强(Data Augmentation):检查并增强配置文件中的数据增强选项。随机水平翻转、随机裁剪、颜色抖动等都是有效的。但注意,过度增强也可能损害性能。
      • 正则化(Regularization):增加权重衰减(Weight Decay),或在网络中适当添加Dropout层(如果模型支持)。
      • 早停(Early Stopping):持续监控验证集mAP,当其在连续多个评估周期(Epoch)内不再提升时,停止训练。
  3. GPU内存溢出(OOM)

    • 原因batch_size太大,或图片输入分辨率太高。
    • 解决:首先降低batch_size。如果降到很小(如4)还不行,可以考虑在配置文件中降低输入图片的heightwidth(如从300x300降到256x256)。这会牺牲一些精度,但能换来可训练性。

5.2 提升模型精度的实战技巧

  1. 微调(Fine-tuning)策略

    • 固定主干网络(Backbone),只训练检测头:对于数据量相对较小的任务(8万张对于245类来说,每个类的样本仍有限),这是一种稳定且高效的策略。在配置文件中,通常可以通过设置freeze_variablesload_all_detection_checkpoint_vars等参数来实现。先让检测头适应新任务,再解冻主干网络进行联合微调,往往能取得更好效果。
    • 分层学习率:对主干网络和检测头使用不同的学习率。主干网络用更小的学习率(如1e-5),以保护预训练的特征;检测头用较大的学习率(如1e-4),以快速适应新类别。
  2. 数据增强的学问

    • 垃圾分类图片中,目标物体通常有固定的朝向(如瓶子通常是竖着的)。因此,谨慎使用大角度的随机旋转,这可能会引入不真实的样本。水平翻转通常是安全的。
    • 可以尝试CutMix或Mosaic这类较新的增强技术,它们能在一个batch内混合多张图片,有助于模型学习更鲁棒的特征,但对实现要求较高。
  3. 模型集成与测试时增强(TTA)

    • 如果对精度有极致要求,可以训练多个不同模型(如SSD、EfficientDet、YOLO),然后将它们的预测结果进行融合(加权平均或投票)。
    • 测试时增强(Test Time Augmentation):对一张测试图片,进行多次不同的增强(如翻转、缩放),分别预测,然后对结果进行平均。这能小幅提升精度,但会成倍增加推理时间。

5.3 从训练到部署的最后一公里

模型训练好只是第一步,让它真正跑起来才是目的。

  1. 模型轻量化

    • 如果部署在手机或嵌入式设备上,导出的.pb模型可能仍然太大、太慢。可以使用TensorFlow Lite进行转换和优化。
    # 将 saved_model 转换为 TFLite converter = tf.lite.TFLiteConverter.from_saved_model(‘outputs/exported_model/saved_model’) converter.optimizations = [tf.lite.Optimize.DEFAULT] # 启用默认优化(量化等) tflite_model = converter.convert() with open(‘model.tflite’, ‘wb’) as f: f.write(tflite_model)
    • 进一步可以使用量化(Quantization),将模型权重从32位浮点数转换为8位整数,能大幅减小模型体积、提升推理速度,对精度影响通常可控。
  2. 部署与推理

    • 服务器端(Python):使用tf.saved_model.load加载模型,然后调用infer函数即可。
    • 移动端(Android/iOS):集成TensorFlow Lite库,加载.tflite文件进行推理。
    • Web端:可以使用TensorFlow.js,将模型转换为Web格式。
    • 生产环境服务化:对于高并发场景,可以使用TensorFlow ServingNVIDIA Triton Inference Server来部署模型,它们提供了高性能、可扩展的模型服务能力。
  3. 业务逻辑集成

    • 模型输出的是一组边界框、类别和置信度。你需要根据业务规则进行后处理:
      • 非极大值抑制(NMS):去除重叠的冗余框。
      • 置信度阈值过滤:只保留置信度高于某个阈值(如0.5)的预测结果。
      • 类别映射:将模型输出的245个细分类别,映射到你业务系统中需要的粗分类别(如“可回收”、“有害”)。

处理这个数据集和代码包的过程,让我再次体会到,在AI项目里,高质量、工程化的数据和平实、可复现的代码,其价值不亚于一个精巧的算法。这个资源包提供了一个坚实的起点,但真正的挑战和乐趣,在于你如何在此基础上进行迭代、优化,并最终解决一个具体的实际问题。比如,你可以尝试用更高效的EfficientDet替换SSD,可以针对“透明塑料袋”这种难分的类别补充数据做增量学习,也可以探索在树莓派上部署轻量化模型实现实时识别。这个8万张图片、245个类别的世界,足够你探索一阵子了。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 6:08:24

Spring Boot国际化实战:构建多语言祝福语生成引擎

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 6:07:39

Aspen Plus流程模拟入门:从物性方法到精馏塔建模实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 6:07:31

基于51单片机的智能温控风扇设计:从传感器到PWM驱动的完整实践

简介&#xff1a;本资源是一套完整的基于51单片机的智能温控风扇设计开发包&#xff0c;面向嵌入式初学者、课程设计学生及电子类实训人员&#xff0c;解决温度感知—逻辑判断—PWM调速—人机交互一体化实现问题。压缩包共24个文件&#xff0c;约718KB&#xff0c;涵盖原理图&a…

作者头像 李华
网站建设 2026/9/3 6:06:38

Mega路卡利欧对战配置:配招、联防与收割时机全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 6:06:34

HAProxy SFTP代理

一、引言 前面我们有讲过如何使用Nginx作SFTP服务器的代理&#xff0c;详见【Nginx SFTP代理】。其实除了使用Nginx之外&#xff0c;还可以通过HAProxy作为SFTP代理用&#xff0c;至于SFTP概念&#xff0c;这里不作过多介绍&#xff0c;各位读者自行百度比我个人陈述要更好&…

作者头像 李华