乐于分享
好东西不私藏

GeoAI语义分割

GeoAI语义分割

概述

语义分割是将遥感影像中的每个像素分配到特定语义类别的任务,如建筑物、道路、水体、植被等。在 GeoAI 中,与“文本提示式分割”关系最密切的是下面两类工具:

  1. 1. GroundedSAM - 结合 Grounding DINO 和 Segment Anything Model (SAM),先按文本提示检测目标,再由 SAM 生成实例级掩码
  2. 2. CLIPSegmentation - 使用 CLIP-Seg 模型,根据单个文本提示生成目标类别的概率图和二值掩码

需要注意:严格意义上的“多类别语义分割”通常依赖训练好的 U-Net、DeepLabV3+、SegFormer、timm/SMP 等模型;GroundedSAM 和 CLIPSegmentation 更像是开放词汇、文本提示驱动的分割工具,适合快速探索、辅助标注和特定类别提取。

主要特点

  • • 基于文本提示:通过自然语言描述指定要分割的目标
  • • 支持大影像:通过瓦片处理技术处理大幅遥感影像
  • • 地理空间输出:保留输入 GeoTIFF 的坐标参考信息,便于后续 GIS 分析
  • • 矢量化能力:GroundedSAM 可选导出边界框和多边形 GeoJSON
  • • 实例级表达:GroundedSAM 能在同一类别中保留多个目标实例,CLIPSegmentation 则主要输出单类别概率/二值掩码

语义分割流程

1. 整体流程

遥感语义分割模型结果对比

图:不同遥感语义分割模型在影像切片上的结果对比,可直观看到道路、建筑、水体、森林、农田等类别的像素级输出。该图适合理解“每个像素一个类别”的标准语义分割任务。

┌─────────────────────────────────────────────────┐│                语义分割流程                    │├─────────────────────────────────────────────────┤│ 1. 加载输入影像                              ││ 2. 切分影像为小瓦片                          ││ 3. 对每个瓦片执行分割                        ││    - 转换为RGB格式                           ││    - 检测目标(仅GroundedSAM)                ││    - 生成分割掩码                            ││    - 后处理(平滑、去噪等)                  ││ 4. 合并瓦片结果                              ││ 5. 生成输出文件                              ││    - 分割掩码(GeoTIFF)                     ││    - 边界框(GeoJSON,可选)                 ││    - 多边形(GeoJSON,可选)                 │└─────────────────────────────────────────────────┘

2. GroundedSAM 流程

GroundedSAM 文本提示分割流程

图:GroundedSAM 的核心思路是“文本提示 -> Grounding DINO 检测框 -> SAM 掩码”。它更接近开放词汇实例分割,最后可以把实例掩码合成为语义类别掩码。

┌─────────────────────────────────────────────────┐│             GroundedSAM 分割流程              │├─────────────────────────────────────────────────┤│ 1. 初始化模型                                 ││    - 加载 Grounding DINO 检测器              ││    - 加载 SAM 分割模型                       ││ 2. 处理输入影像                              ││    - 切分影像为瓦片                          ││    - 转换为RGB格式                           ││ 3. 目标检测                                  ││    - 使用 Grounding DINO 检测目标            ││    - 应用非极大值抑制(NMS)                 ││ 4. 实例分割                                  ││    - 使用 SAM 生成精确掩码                   ││    - 细化掩码(可选)                        ││ 5. 后处理                                    ││    - 高斯平滑减少块状效应                    ││    - 合并重叠掩码                            ││ 6. 输出结果                                  ││    - 保存分割掩码                            ││    - 导出边界框和多边形(可选)              │└─────────────────────────────────────────────────┘

3. CLIPSegmentation 流程

┌─────────────────────────────────────────────────┐│            CLIPSegmentation 分割流程           │├─────────────────────────────────────────────────┤│ 1. 初始化模型                                 ││    - 加载 CLIP-Seg 模型                      ││ 2. 处理输入影像                              ││    - 切分影像为瓦片                          ││    - 转换为RGB格式                           ││ 3. 文本提示分割                              ││    - 输入文本提示和影像                      ││    - 生成概率图                              ││ 4. 后处理                                    ││    - 高斯平滑                                ││    - 应用阈值生成二值掩码                    ││ 5. 输出结果                                  ││    - 保存二值分割掩码                        ││    - 保存概率分数                            │└─────────────────────────────────────────────────┘

核心算法

GroundedSAM 算法

GroundedSAM 结合了两个强大的模型:

  • • Grounding DINO:一个开放词汇目标检测器,能够根据文本提示检测图像中的目标
  • • Segment Anything Model (SAM):一个通用的分割模型,能够生成精确的分割掩码

工作原理

  1. 1. 使用 Grounding DINO 根据文本提示检测目标,生成边界框
  2. 2. 将检测到的边界框作为输入传递给 SAM
  3. 3. SAM 根据边界框生成精确的分割掩码
  4. 4. 对掩码进行后处理,如高斯平滑、多边形细化等
  5. 5. 合并瓦片结果,生成综合掩码、按提示分离的掩码,以及可选的边界框/多边形矢量数据

因此,GroundedSAM 的输出可以服务于语义分割任务,但它本身的技术路线是“检测 + 实例分割”,不是传统的端到端多类别语义分割网络。

CLIPSegmentation 算法

CLIPSegmentation 使用 CLIP-Seg 模型。CLIP-Seg 在冻结的 CLIP 视觉/文本骨干上增加轻量解码器,可根据文本或图像提示生成二值分割结果。在 GeoAI 的封装中,它接收一个文本提示,输出两波段 GeoTIFF:第一波段是二值掩码,第二波段是概率分数。

工作原理

  1. 1. 将输入影像切分为瓦片,并转换为 RGB 图像
  2. 2. 将文本提示和瓦片影像输入 CLIP-Seg 处理器和模型
  3. 3. 通过模型 logits 经 sigmoid 得到像素级概率图
  4. 4. 根据 threshold 生成二值分割掩码
  5. 5. 对概率图进行平滑处理,减少瓦片边界和块状效应

核心代码分析

GroundedSAM 类

初始化方法

def__init__(    self,    detector_id: str = "IDEA-Research/grounding-dino-tiny",    segmenter_id: str = "facebook/sam-vit-base",    device: Optional[str] = None,    tile_size: int = 1024,    overlap: int = 128,    threshold: float = 0.3,) -> None:# 设置模型和参数self.detector_id = detector_idself.segmenter_id = segmenter_idself.tile_size = tile_sizeself.overlap = overlapself.threshold = threshold# 设置设备if device isNone:self.device = "cuda"if torch.cuda.is_available() else"cpu"else:self.device = device# 加载模型self._load_models()

代码说明

  • • 初始化 GroundedSAM 类,设置模型参数和设备
  • • 自动检测可用设备,优先使用 CUDA
  • • 加载 Grounding DINO 和 SAM 模型

核心分割方法

defsegment_image(    self,    input_path: str,    output_path: str,    text_prompts: Union[strList[str]],    polygon_refinement: bool = False,    export_boxes: bool = False,    export_polygons: bool = True,    smoothing_sigma: float = 1.0,    nms_threshold: float = 0.5,    min_polygon_area: int = 50,    simplify_tolerance: float = 2.0,) -> Dict[strstr]:# 处理文本提示ifisinstance(text_prompts, str):        text_prompts = [text_prompts]# 打开输入影像with rasterio.open(input_path) as src:# 获取元数据        meta = src.meta        height = src.height        width = src.width        transform = src.transform        crs = src.crs# 创建输出元数据        out_meta = meta.copy()        out_meta.update(            {"count"len(text_prompts) + 1"dtype""uint8""nodata"0}        )# 创建结果数组        all_masks = np.zeros((len(text_prompts), height, width), dtype=np.uint8)        all_boxes = []        all_polygons = []# 计算有效瓦片大小        effective_tile_size = self.tile_size - 2 * self.overlap# 计算瓦片数量        n_tiles_x = max(1int(np.ceil(width / effective_tile_size)))        n_tiles_y = max(1int(np.ceil(height / effective_tile_size)))# 处理瓦片for y inrange(n_tiles_y):for x inrange(n_tiles_x):# 计算瓦片坐标                x_start = max(0, x * effective_tile_size - self.overlap)                y_start = max(0, y * effective_tile_size - self.overlap)                x_end = min(width, (x + 1) * effective_tile_size + self.overlap)                y_end = min(height, (y + 1) * effective_tile_size + self.overlap)# 读取瓦片                window = Window(x_start, y_start, x_end - x_start, y_end - y_start)                tile_data = src.read(window=window)# 处理瓦片# 1. 转换为RGB格式# 2. 检测目标# 3. 分割目标# 4. 处理结果# 生成合并掩码        combined_mask = np.any(all_masks, axis=0).astype(np.uint8)# 保存输出with rasterio.open(output_path, "w", **out_meta) as dst:            dst.write(combined_mask, 1)for i, mask inenumerate(all_masks):                dst.write(mask, i + 2)# 导出边界框和多边形# ...return result_files

代码说明

  • • 处理输入影像和文本提示
  • • 计算瓦片数量和位置
  • • 遍历处理每个瓦片
  • • 对每个瓦片执行目标检测和分割
  • • 合并瓦片结果,生成最终分割掩码
  • • 导出分割结果和可选的边界框、多边形

目标检测方法

def_detect(self, image: Image.Image, labels: List[str]) -> List[DetectionResult]:# 确保标签以句号结尾    labels = [label if label.endswith("."else label + "."for label in labels]    results = self.object_detector(        image, candidate_labels=labels, threshold=self.threshold    )    results = [DetectionResult.from_dict(result) for result in results]return results

代码说明

  • • 使用 Grounding DINO 检测目标
  • • 确保标签格式正确(以句号结尾)
  • • 将检测结果转换为 DetectionResult 对象

实例分割方法

def_segment(    self,    image: Image.Image,    detection_results: List[DetectionResult],    polygon_refinement: bool = False,) -> List[DetectionResult]:ifnot detection_results:return detection_results    boxes = self._get_boxes(detection_results)    inputs = self.processor(        images=image, input_boxes=boxes, return_tensors="pt"    ).to(self.device)    outputs = self.segmentator(**inputs)    masks = self.processor.post_process_masks(        masks=outputs.pred_masks,        original_sizes=inputs.original_sizes,        reshaped_input_sizes=inputs.reshaped_input_sizes,    )[0]    masks = self._refine_masks(masks, polygon_refinement)for detection_result, mask inzip(detection_results, masks):        detection_result.mask = maskreturn detection_results

代码说明

  • • 从检测结果中提取边界框
  • • 使用 SAM 生成分割掩码
  • • 后处理掩码,如多边形细化
  • • 将掩码添加到检测结果中

CLIPSegmentation 类

初始化方法

def__init__(    self,    model_name: str = "CIDAS/clipseg-rd64-refined",    device: Optional[str] = None,    tile_size: int = 512,    overlap: int = 32,) -> None:self.tile_size = tile_sizeself.overlap = overlap# 自动选择设备from .utils.device import get_deviceself.device = str(device or get_device())# 加载模型和处理器self.processor = CLIPSegProcessor.from_pretrained(model_name)self.model = CLIPSegForImageSegmentation.from_pretrained(model_name).to(self.device    )

代码说明

  • • 初始化 CLIPSegmentation 类,设置模型参数和设备
  • • 自动检测可用设备
  • • 加载 CLIP-Seg 模型和处理器

核心分割方法

defsegment_image(    self,    input_path: str,    output_path: str,    text_prompt: str,    threshold: float = 0.5,    smoothing_sigma: float = 1.0,) -> str:# 打开输入影像with rasterio.open(input_path) as src:# 获取元数据        meta = src.meta        height = src.height        width = src.width# 创建输出元数据        out_meta = meta.copy()        out_meta.update({"count"2"dtype""float32""nodata"None})# 创建结果数组        segmentation = np.zeros((height, width), dtype=np.float32)        probabilities = np.zeros((height, width), dtype=np.float32)# 计算有效瓦片大小        effective_tile_size = self.tile_size - 2 * self.overlap# 计算瓦片数量        n_tiles_x = max(1int(np.ceil(width / effective_tile_size)))        n_tiles_y = max(1int(np.ceil(height / effective_tile_size)))# 处理瓦片for y inrange(n_tiles_y):for x inrange(n_tiles_x):# 计算瓦片坐标                x_start = max(0, x * effective_tile_size - self.overlap)                y_start = max(0, y * effective_tile_size - self.overlap)                x_end = min(width, (x + 1) * effective_tile_size + self.overlap)                y_end = min(height, (y + 1) * effective_tile_size + self.overlap)# 读取瓦片                window = Window(x_start, y_start, x_end - x_start, y_end - y_start)                tile_data = src.read(window=window)# 处理瓦片# 1. 转换为RGB格式# 2. 处理CLIP-Seg# 3. 生成概率图# 4. 后处理# 生成二值分割掩码        segmentation = (probabilities >= threshold).astype(np.float32)# 保存输出with rasterio.open(output_path, "w", **out_meta) as dst:            dst.write(segmentation, 1)            dst.write(probabilities, 2)return output_path

代码说明

  • • 处理输入影像和文本提示
  • • 计算瓦片数量和位置
  • • 遍历处理每个瓦片
  • • 对每个瓦片执行 CLIP-Seg 分割
  • • 生成概率图和二值分割掩码
  • • 保存输出结果

使用示例

示例 1:使用 GroundedSAM 提取建筑物

import geoai# 初始化 GroundedSAM 模型grounded_sam = geoai.GroundedSAM(    detector_id="IDEA-Research/grounding-dino-tiny",    segmenter_id="facebook/sam-vit-base",    device="cuda")# 提取建筑物result = grounded_sam.segment_image(    input_path="satellite_image.tif",    output_path="buildings_segmented.tif",    text_prompts="building",    export_polygons=True,    min_polygon_area=100,    simplify_tolerance=2.0)print("建筑物提取完成!")print(f"分割结果保存到: {result['segmentation']}")print(f"多边形结果保存到: {result['polygons']}")

示例 2:使用 GroundedSAM 提取多种地物

import geoai# 初始化 GroundedSAM 模型grounded_sam = geoai.GroundedSAM(    detector_id="IDEA-Research/grounding-dino-tiny",    segmenter_id="facebook/sam-vit-base",    device="cuda")# 提取建筑物、道路和水体result = grounded_sam.segment_image(    input_path="aerial_image.tif",    output_path="multiple_features.tif",    text_prompts=["building""road""water"],    export_polygons=True,    min_polygon_area=50,    simplify_tolerance=1.0)print("多特征提取完成!")print(f"分割结果保存到: {result['segmentation']}")print(f"多边形结果保存到: {result['polygons']}")

示例 3:使用 CLIPSegmentation 提取水体

import geoai# 初始化 CLIPSegmentation 模型clip_seg = geoai.CLIPSegmentation(    model_name="CIDAS/clipseg-rd64-refined",    device="cuda")# 提取水体output_path = clip_seg.segment_image(    input_path="satellite_image.tif",    output_path="water_segmented.tif",    text_prompt="water body",    threshold=0.5,    smoothing_sigma=1.0)print(f"水体提取完成!结果保存到: {output_path}")

示例 4:批量处理多个影像

import geoaiimport os# 初始化 CLIPSegmentation 模型clip_seg = geoai.CLIPSegmentation(    model_name="CIDAS/clipseg-rd64-refined",    device="cuda")# 批量处理多个影像input_folder = "input_images"output_folder = "output_segmented"text_prompt = "building"# 创建输出目录os.makedirs(output_folder, exist_ok=True)# 获取所有影像文件image_files = [f for f in os.listdir(input_folder) if f.endswith('.tif')]# 批量处理output_paths = clip_seg.segment_image_batch(    input_paths=[os.path.join(input_folder, f) for f in image_files],    output_dir=output_folder,    text_prompt=text_prompt,    threshold=0.5,    smoothing_sigma=1.0)print(f"批量处理完成!处理了 {len(output_paths)} 个影像")

业务应用场景

1. 城市规划

应用:提取建筑物、道路、绿地等城市要素,生成城市现状图

优势

  • • 快速获取城市建成区范围
  • • 监测城市扩张
  • • 辅助城市规划决策

示例

# 提取城市建筑物和道路grounded_sam.segment_image(    input_path="city_image.tif",    output_path="city_features.tif",    text_prompts=["building""road""park"],    export_polygons=True)

2. 环境监测

应用:提取水体、植被等环境要素,监测环境变化

优势

  • • 快速识别水体边界
  • • 监测植被覆盖变化
  • • 评估环境质量

示例

# 提取水体和植被clip_seg.segment_image(    input_path="environment_image.tif",    output_path="water_vegetation.tif",    text_prompt="water and vegetation",    threshold=0.5)

3. 农业管理

应用:提取农田、作物等农业要素,监测农业生产

优势

  • • 识别农田边界
  • • 监测作物生长状况
  • • 辅助精准农业决策

示例

# 提取农田clip_seg.segment_image(    input_path="agriculture_image.tif",    output_path="farmland.tif",    text_prompt="farmland",    threshold=0.5)

4. 灾害响应

应用:提取建筑物、道路等要素,评估灾害损失

优势

  • • 快速评估建筑物受损情况
  • • 识别道路阻塞
  • • 辅助救援决策

示例

# 提取建筑物和道路grounded_sam.segment_image(    input_path="disaster_image.tif",    output_path="disaster_assessment.tif",    text_prompts=["building""road"],    export_polygons=True)

性能优化

1. 内存优化

  • • 瓦片大小调整:根据 GPU 内存调整 tile_size 参数
  • • 逐景处理:对多个影像逐一处理,避免一次性加载过多数据
  • • 模型选择:选择轻量级模型,如 "grounding-dino-tiny" 和 "sam-vit-base"

2. 速度优化

  • • GPU 加速:使用 GPU 加速模型推理
  • • 合理放大瓦片:在显存允许的前提下适当增大 tile_size,减少瓦片数量
  • • 模型缓存:缓存模型,避免重复加载
  • • 瓦片重叠:合理设置 overlap 参数;overlap 越大,边缘更稳定,但有效步长会变小、瓦片数量会增加

3. 质量优化

  • • 阈值调整:根据具体任务调整 threshold 参数
  • • 平滑处理:使用 smoothing_sigma 参数减少块状效应
  • • 多边形简化:使用 simplify_tolerance 参数控制多边形复杂度
  • • 面积过滤:使用 min_polygon_area 参数过滤小面积多边形

常见问题解决

1. 内存不足

解决方案

  • • 减小 tile_size 参数
  • • 选择更小的模型
  • • 使用 CPU 模式(速度会变慢)

2. 分割结果不准确

解决方案

  • • 调整 threshold 参数
  • • 使用更具体的文本提示
  • • 增加 min_polygon_area 参数,过滤小面积噪声
  • • GroundedSAM 场景下可调高检测阈值或 NMS 阈值,减少误检和重复框
  • • CLIPSegmentation 场景下可对同一区域尝试多个等价英文提示,如 "water body"、"river"、"lake"

3. 处理速度慢

解决方案

  • • 使用 GPU 加速
  • • 在显存允许的前提下增大 tile_size
  • • 适当减小 overlap 参数,减少重复推理区域
  • • 选择轻量级模型

4. 边缘效应

解决方案

  • • 增加 overlap 参数
  • • 使用平滑处理减少边缘差异

5. 多边形质量差

解决方案

  • • 增加 simplify_tolerance 参数
  • • 启用 polygon_refinement 参数
  • • 增加 min_polygon_area 参数

GeoAI 的 GroundedSAM 和 CLIPSegmentation 能够基于文本提示从遥感影像中提取建筑物、道路、水体等地理要素。更准确地说,GroundedSAM 是“开放词汇检测 + SAM 实例分割”的组合,CLIPSegmentation 是“单文本提示 -> 概率图/二值掩码”的分割工具;二者都可以用于语义分割工作流,但不等同于经过训练的多类别语义分割模型。

这些方法具有以下优势:

  1. 1. 基于文本提示:通过自然语言描述指定要分割的目标,无需手动标注
  2. 2. 支持大影像:通过瓦片处理技术处理大幅遥感影像
  3. 3. 地理空间输出:输出 GeoTIFF 掩码,并保留空间参考信息
  4. 4. GIS 工作流友好:结果可继续用于叠加分析、矢量化、面积统计和人工校核
  5. 5. 实例/矢量导出:GroundedSAM 可导出边界框和多边形,便于后续 GIS 编辑

通过合理配置参数和选择适当的模型,可以高效地从遥感影像中提取各种地理要素,为城市规划、环境监测、农业管理和灾害响应等应用提供有力支持。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-28 16:10:48 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/807199.html
  2. 运行时间 : 0.219981s [ 吞吐率:4.55req/s ] 内存消耗:4,893.71kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5f6914a456dd357eeadb9ef0513c48f7
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001107s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001593s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000755s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000672s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001272s ]
  6. SELECT * FROM `set` [ RunTime:0.000606s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000541s ]
  8. SELECT * FROM `article` WHERE `id` = 807199 LIMIT 1 [ RunTime:0.000797s ]
  9. UPDATE `article` SET `lasttime` = 1782634249 WHERE `id` = 807199 [ RunTime:0.015852s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000415s ]
  11. SELECT * FROM `article` WHERE `id` < 807199 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005811s ]
  12. SELECT * FROM `article` WHERE `id` > 807199 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000928s ]
  13. SELECT * FROM `article` WHERE `id` < 807199 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007828s ]
  14. SELECT * FROM `article` WHERE `id` < 807199 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010536s ]
  15. SELECT * FROM `article` WHERE `id` < 807199 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010448s ]
0.221654s