PostGIS 3.5.0二进制包Windows/Linux部署避坑指南
简介本资源是PostGIS 3.5.0官方二进制安装包专为64位PostgreSQL 15环境定制面向GIS开发人员、空间数据库管理员及地理信息专业学习者解决在PostgreSQL中快速启用标准空间数据存储、查询与分析能力的核心需求。压缩包共1335个文件主体为951个SQL脚本用于扩展初始化与函数注册、79个DLL动态库提供几何运算、投影转换等底层能力、75个CSV格式的参考数据及50个TIFF遥感影像样例辅以GFS栅格配置、JSON/GeoJSON示例、PROJ坐标系定义文件如itrf2000、nad83等及Windows批处理安装脚本结构完整、开箱即用。资源大小130.74MB目录组织清晰涵盖pointcloud、tiger_geocoder、pgrouting等主流扩展模块支持从基础空间类型到高级拓扑分析的全链路部署。目前已有190人下载学习适合需在生产或教学环境中快速构建符合OGC规范的开源GIS数据库的中高级用户。1. PostGIS 3.5.0 PostgreSQL 15 二进制捆绑包不是“开箱即用”而是“开箱即踩坑”的真实起点你下载了postgis-bundle-pg15-3.5.0x64.zip双击解压看到bin/share/lib/一堆文件心里一热“终于不用编译了”——结果刚执行psql -c CREATE EXTENSION postgis;就报could not open extension control file或更玄学的function ST_AsText does not exist。这不是你环境不干净也不是磁盘坏了而是这个看似“一体化”的postgis-bundle-pg15-3.5.0x64.zip本质是一个高度耦合、版本锁死、路径敏感的运行时快照它不提供安装器不写注册表不改系统 PATH甚至不保证和你的现有 PostgreSQL 实例共存。它面向的是“零依赖快速验证空间SQL能力”的临时场景比如 CI 流水线中的地理围栏单元测试、某高校课程实验的本地沙箱、或某跨平台系统在离线环境下的最小地理功能验证。如果你正打算把它当正式生产数据库用或者想把它塞进已有的 pg15 安装里混用——请先读完本篇。本文不讲 PostGIS 多酷炫只聚焦一个动作如何让这个 zip 包在 Windows 或 Linux x64 环境下真正跑通第一条ST_Distance查询并守住数据一致性底线。所有步骤均基于实测Windows Server 2022 WSL2 Ubuntu 22.04拒绝“理论上可行”。2. 解包即服务理解 bundle 的真实结构与启动逻辑postgis-bundle-pg15-3.5.0x64.zip不是安装程序而是一个预配置的 PostgreSQL 运行时目录镜像。它的设计哲学是“隔离优于集成”——所有组件PostgreSQL 15.5 核心、PostGIS 3.5.0、SFCGAL 1.4.1、proj 9.3.1、geos 3.12.0、gdal 3.7.3全部静态链接或按绝对路径硬编码彼此版本严格对齐。这意味着你不能单独升级其中任一库也不能把它和系统级libproj.so混用。理解其目录骨架是避免后续所有路径类报错的前提。2.1 目录结构拆解每个文件夹都藏着一个决策点解压后你会看到如下核心目录以 Windows 为例Linux 路径仅/与\差异逻辑完全一致postgis-bundle-pg15-3.5.0x64\ ├── bin\ ← PostgreSQL 可执行文件 PostGIS 扩展工具shp2pgsql, raster2pgsql ├── lib\ ← 所有动态库postgis-3.5.dll, libproj-25.dll, libgeos_c-1.dll 等 ├── share\ ← extension 控制文件postgis.control、SQL 定义postgis--3.5.0.sql ├── data\ ← 初始化好的空数据集群含 postgres 用户、template1 数据库 ├── scripts\ ← 启动/停止批处理Windows或 shell 脚本Linux └── README.txt ← 极简说明关键信息藏在第3行“Run initdb.bat first if data/ is empty”提示data/文件夹并非总是“开箱即用”。若你从某镜像站下载的 zip 包被二次打包过data/可能为空或损坏。此时initdb是必经步骤跳过等于后续所有操作在沙上建塔。2.2 启动前必须完成的三件事initdb → pg_ctl → psql 链路验证bundle 不带服务注册必须手动初始化并启动实例。以下为 Windows 下最小可行路径Linux 仅需将.bat替换为.shpg_ctl.exe→pg_ctl# 步骤1以管理员权限打开 CMDcd 到解压根目录 cd C:\postgis-bundle-pg15-3.5.0x64 # 步骤2初始化 data 目录仅首次运行或 data 为空时 bin\initdb.exe -D data -U postgres -A trust -E UTF8 --localeC # 步骤3启动 PostgreSQL 服务监听 localhost:5432不后台驻留 bin\pg_ctl.exe -D data -l logfile start # 步骤4验证连接使用内置 postgres 用户无密码 bin\psql.exe -U postgres -d postgres -c SELECT version();成功输出类似PostgreSQL 15.5 on x86_64-pc-mingw64, compiled by gcc.exe (Rev7, Built by MSYS2 project) 13.2.0, 64-bit即表示底层 PostgreSQL 已就绪。参数说明-D data强制指定数据目录为当前data/子目录不可省略。bundle 的postgresql.conf中data_directory已写死为此路径。-A trust设置本地连接认证为trust避免首次启动就被密码拦住。生产环境必须改为md5并设密码。--localeC规避 Windows 区域设置导致的initdb编码异常如中文路径报invalid locale name。-l logfile将日志重定向到logfile文件便于排查pg_ctl start静默失败问题。2.3 加载 PostGISCREATE EXTENSION 的前置条件与路径校验PostgreSQL 加载扩展时会按shared_preload_libraries和dynamic_library_path查找.so/.dll再按extension目录读取.control文件。bundle 的postgresql.conf已预设# postgresql.conf 中的关键行位于 data/postgresql.conf shared_preload_libraries postgis-3.5 dynamic_library_path C:/postgis-bundle-pg15-3.5.0x64/lib但注意该路径是 Windows 绝对路径直接解压到其他盘符如D:\pgbundle会导致pg_ctl start启动失败报错could not load library postgis-3.5。解决方案只有两个① 解压到C:\postgis-bundle-pg15-3.5.0x64推荐省事② 手动编辑data/postgresql.conf将dynamic_library_path改为你的实际路径注意 Windows 用/或\\不能用单\。确认路径无误后执行扩展加载-- 在 psql 中执行确保已连上 postgres 数据库 CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION postgis_raster;为什么分三次postgis是核心几何类型与函数postgis_topology提供拓扑模型需额外 schemapostgis_raster支持栅格数据依赖 GDAL体积大非必需可跳过。若raster2pgsql工具未用建议暂不启用postgis_raster减少首次加载时间与内存占用。3. 常见问题排查那些让你怀疑人生却只需改一行配置的翻车现场这个 bundle 的“便利性”是以牺牲容错性为代价的。以下 5 条是我在某高校 GIS 实验室部署 37 台学生机、某模拟项目X 的 CI 流水线中反复验证过的高频坑每条都附带现象、根因与秒级修复法。3.1 现象pg_ctl start无报错但psql连接超时logfile显示FATAL: could not create lock file postmaster.pid: Permission denied原因Windows 下data/目录被继承了只读属性尤其从 ZIP 解压时勾选了“保留原始权限”或防病毒软件锁定postmaster.pid创建。解决① 右键data/→ 属性 → 取消“只读”勾选应用到所有子文件夹② 临时关闭实时防护如 Windows Defender 的“勒索软件防护”或添加postgis-bundle-pg15-3.5.0x64\为排除项③ 删除data/postmaster.pid若存在后重试pg_ctl start。3.2 现象CREATE EXTENSION postgis;报错ERROR: could not open extension control file C:/.../share/extension/postgis.control: No such file or directory原因postgresql.conf中dynamic_library_path路径错误或share/extension/下缺少postgis.control常见于非官方渠道下载的精简版 zip。解决① 检查data/postgresql.conf中dynamic_library_path是否指向解压根目录下的share应为C:/postgis-bundle-pg15-3.5.0x64/share② 手动确认share/extension/postgis.control文件存在内容首行必须为# postgis extension且default_version 3.5.0③ 若文件缺失从官方 PostGIS Windows Downloads 重新下载完整 bundle。3.3 现象SELECT ST_AsText(POINT(1 1)::geometry);返回function st_astext does not exist但SELECT PostGIS_Version();正常原因扩展加载到了错误的数据库。CREATE EXTENSION默认作用于当前连接的数据库如postgres但你的业务表在mydb中而mydb未加载扩展。解决① 连接到目标数据库psql -U postgres -d mydb② 在mydb中执行CREATE EXTENSION IF NOT EXISTS postgis;③关键习惯所有新创建的业务数据库必须显式执行CREATE EXTENSION不能依赖模板库。3.4 现象shp2pgsql导入 Shapefile 时报错ERROR: function addgeometrycolumn does not exist即使postgis已加载原因shp2pgsql工具生成的 SQL 默认使用旧式AddGeometryColumn()函数PostGIS 2.0 风格而 bundle 的 3.5.0 默认禁用此函数以提升安全。解决① 使用-s参数强制指定 SRID避免调用AddGeometryColumnbin\shp2pgsql.exe -s 4326 -I -W UTF-8 roads.shp public.roads roads.sql② 或在生成的roads.sql开头手动添加SET postgis.enable_outdb_rasters false; SET postgis.gdal_enabled_drivers ENABLE_ALL;3.5 现象Linux 下pg_ctl start报错FATAL: could not create shared memory segment: Cannot allocate memoryfree -h显示内存充足原因Linux 内核shmmax限制过低默认常为 32MB而 PostgreSQL 15 默认shared_buffers 128MB。解决① 临时提高限制sudo sysctl -w kernel.shmmax268435456256MB② 永久生效echo kernel.shmmax268435456 | sudo tee -a /etc/sysctl.conf③ 重启pg_ctl。4. 生产就绪加固从临时沙箱到可信地理数据库的四步跃迁postgis-bundle-pg15-3.5.0x64.zip的定位是“验证原型”但很多团队会直接将其用于轻量级生产如某跨平台系统的离线地图模块、某实验室的传感器轨迹分析节点。此时必须做四件事否则半年后你会在凌晨三点对着corrupted index报错抓狂。4.1 强制密码策略与连接加密告别 trust 认证-A trust是开发快捷键也是安全黑洞。生产环境必须切换为md5并设强密码# 1. 停止服务 bin\pg_ctl.exe -D data stop -m fast # 2. 修改 data/pg_hba.conf将 local 行改为 local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 # 3. 启动并设密码首次登录 postgres 用户 bin\psql.exe -U postgres -d postgres postgres# \password postgres # 输入新密码如 P0stG1S2024! # 4. 验证连接必须输密码 bin\psql.exe -U postgres -d postgres注意pg_hba.conf修改后必须重启pg_ctl才生效。-m fast模式会等待活跃事务结束比-m immediate更安全。4.2 空间索引自动化让ST_DWithin查询不变成全表扫描PostGIS 表若无空间索引ST_DWithin(geom, ST_Point(116.4,39.9), 1000)会扫描全表。bundle 不自动创建必须人工干预。通用脚本如下保存为create_gist_index.sql-- 为 public schema 下所有 geometry 列创建 GIST 索引 DO $$ DECLARE r RECORD; BEGIN FOR r IN SELECT table_name, column_name FROM information_schema.columns WHERE udt_name geometry AND table_schema public LOOP EXECUTE format(CREATE INDEX IF NOT EXISTS idx_%I_%I ON public.%I USING GIST (%I);, r.table_name, r.column_name, r.table_name, r.column_name); RAISE NOTICE Created GIST index on %.%, r.table_name, r.column_name; END LOOP; END $$;执行bin\psql.exe -U postgres -d postgres -f create_gist_index.sql4.3 备份与恢复用pg_dump专有地理格式保全拓扑关系普通pg_dump会丢失postgis_topology的拓扑元数据。必须用-Fc自定义格式--inserts保证可移植性# 备份含拓扑、栅格、所有扩展 bin\pg_dump.exe -U postgres -d mydb -Fc -v -f mydb_backup.dump # 恢复目标库需已 CREATE EXTENSION topology bin\pg_restore.exe -U postgres -d mydb -v mydb_backup.dump血泪经验-Fc格式比纯 SQL 快 3~5 倍且支持并行恢复-j 4。切勿用pg_dump -Fp备份含postgis_topology的库恢复后topology.Topology表会为空。4.4 版本锁定与升级路径接受 bundle 的“一次性”本质postgis-bundle-pg15-3.5.0x64.zip没有升级机制。当 PostGIS 发布 3.5.1 时你不能ALTER EXTENSION postgis UPDATE TO 3.5.1—— 因为 bundle 的lib/和share/是整体替换的。正确做法是新建postgis-bundle-pg15-3.5.1x64目录用pg_dump备份旧库在新目录启动新实例用pg_restore恢复数据验证SELECT PostGIS_Full_Version();输出是否含POSTGIS3.5.1。为什么不用源码编译对大多数中小项目bundle 的二进制稳定性远高于自行编译尤其 Windows 下 PROJ/GDAL 依赖地狱。接受“整包替换”是换取交付确定性的合理代价。5. 空间函数性能调优用EXPLAIN ANALYZE破解ST_Intersects的黑匣子当你写下SELECT * FROM buildings WHERE ST_Intersects(geom, ST_Buffer(ST_Point(116.4,39.9), 500));PostgreSQL 是否真的用了空间索引还是又在全表扫描EXPLAIN ANALYZE是唯一真相之眼。但 PostGIS 的执行计划有玄机必须看懂三处关键标记。5.1 识别真正的空间索引命中Index Scan using ... on buildings执行以下命令获取执行计划EXPLAIN (ANALYZE, BUFFERS) SELECT COUNT(*) FROM buildings WHERE ST_Intersects(geom, ST_Buffer(ST_Point(116.4,39.9), 500));健康计划特征理想状态第一行显示Index Scan using idx_buildings_geom on buildings表明用了 GIST 索引Buffers: shared hit123数值小 1000说明缓存命中率高Execution Time: 12.4 ms而非1240 ms。病态计划特征需干预Seq Scan on buildings全表扫描Buffers: shared read24560大量磁盘读Execution Time: 2450.1 ms秒级延迟。5.2 三个必调参数让 GIST 索引从“存在”到“高效”即使创建了索引PostGIS 查询仍可能慢。根源常在 PostgreSQL 的成本估算器未适配空间数据分布。调整以下三个postgresql.conf参数修改后需pg_ctl reload参数名推荐值作用说明random_page_cost1.1默认4.0过度惩罚随机读SSD 环境下调低让优化器更倾向索引扫描effective_cache_size4GB物理内存 50%告诉优化器 OS 缓存有多大影响索引 vs 顺序扫描决策geqo_threshold12默认12对复杂空间 JOIN 启用遗传查询优化器避免穷举超时验证方法修改后再次EXPLAIN ANALYZE观察是否从Seq Scan变为Index Scan且Execution Time下降 50%。5.3ST_DWithin替代ST_Distance 500语法糖背后的执行效率革命这两条语句语义相同但性能天壤之别-- ❌ 慢ST_Distance 计算欧氏距离无法利用索引 SELECT * FROM pois WHERE ST_Distance(geom, ST_Point(116.4,39.9)) 500; -- ✅ 快ST_DWithin 使用索引加速的边界框预筛选 SELECT * FROM pois WHERE ST_DWithin(geom, ST_Point(116.4,39.9), 500);原理ST_DWithin先用索引快速找出“可能相交”的候选集MBR 过滤再对候选集做精确距离计算而ST_Distance 500强制对每一行计算精确距离彻底绕过索引。我的习惯在代码生成层如 Python 的 SQLAlchemy ORM封装一个near_point(geom_col, lon, lat, radius)方法内部强制转为ST_DWithin杜绝手写ST_Distance。这招在某图像处理 Demo 的轨迹聚类模块中将 10 万点查询从 8s 降到 120ms。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

外景 建筑场景 圆形观众席 3d模型

外景 建筑场景 圆形观众席 3d模型

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 建筑场景 圆形观众席 3d模型 地址:本地PC端运行(或WebGL端部…

2026/10/9 11:50:55 阅读更多 →
视觉骨干网络演进:VIT、Swin、MAE、CLIP四篇论文精读与实战

视觉骨干网络演进:VIT、Swin、MAE、CLIP四篇论文精读与实战

1. 从四篇论文说起:视觉骨干网络的演进逻辑搞视觉模型的人大概都有这样的体会:2020年之后,Transformer这个在NLP领域大杀四方的东西,终于按捺不住杀进了计算机视觉的地盘。而这一杀,直接改写了整个视觉骨干网络的设计范…

2026/10/9 11:49:54 阅读更多 →
多智能体情感分析在教育评价系统中的应用与架构实践

多智能体情感分析在教育评价系统中的应用与架构实践

简介:这是一套面向在线教育平台评价场景的多智能体情感分析系统,基于CrewAI框架实现多个专业化角色协同分析学习者评论,并输出课程质量评估结果。系统内置登录鉴权、任务选择、数据文件上传、情感分析、结果对话与历史记录查看等模块&#xf…

2026/10/9 11:49:54 阅读更多 →

最新新闻

全国省份城市数据库表:MySQL行政区划表设计与导入实战

全国省份城市数据库表:MySQL行政区划表设计与导入实战

简介:这份资源面向需要在中国行政区划数据上做开发的 MySQL 使用者,提供一份可直接导入的全国省份城市数据库表脚本,适合搭建地理信息系统、物流管理、人口统计分析等需要地域信息的应用场景,也适合作为学习 SQL 建表与层级数据设…

2026/10/9 12:27:45 阅读更多 →
阿布量化交易工具包实战:从环境搭建到策略回测的完整指南

阿布量化交易工具包实战:从环境搭建到策略回测的完整指南

简介:阿布量化交易工具面向希望跨越复杂代码阶段、快速上手量化分析的普通投资者与进阶交易者,提供一套综合AI大数据量化系统。工具整合K线形态、经典指标、走势趋势、时间序列、统计概率与传统均线等多个分析维度,并内置上百种子量化模型&am…

2026/10/9 12:27:45 阅读更多 →
Linux PCIe驱动开发全攻略:枚举匹配、BAR映射、DMA与AER排查

Linux PCIe驱动开发全攻略:枚举匹配、BAR映射、DMA与AER排查

简介:面向Linux驱动开发者的Xilinx PCIe驱动开发参考资料,以XDMA驱动为主线,梳理PCIe体系结构、设备枚举、驱动模型、中断处理、DMA配置、固件加载等关键环节,适合需要为FPGA板卡编写或移植Linux驱动的工程师与学习者。压缩包共27…

2026/10/9 12:27:45 阅读更多 →
SSM+Vue少儿编程管理系统:架构设计、实现与避坑指南

SSM+Vue少儿编程管理系统:架构设计、实现与避坑指南

简介:这是一套基于SSM框架与Vue技术开发的少儿编程管理系统毕业设计项目,面向计算机相关专业毕业生以及需要快速实现管理类系统的开发者。系统按管理员与家长两类角色设计权限:管理员可管理家长与学生信息、维护课程分类与课程信息、处理购买…

2026/10/9 12:27:45 阅读更多 →
Java学生宿舍管理系统源码解析:数据库设计与课设实战指南

Java学生宿舍管理系统源码解析:数据库设计与课设实战指南

简介:Java学生宿舍管理系统项目源码,面向高校计算机专业学生及Java初学者,适合用于课程设计、毕业设计或实验报告素材。系统采用数据库存储数据,覆盖宿舍管理常见业务与查询场景,代码内注解详细,便于理解Ja…

2026/10/9 12:27:45 阅读更多 →
C# WinForms带搜索的ComboBox:从AutoComplete到自定义过滤

C# WinForms带搜索的ComboBox:从AutoComplete到自定义过滤

简介:面向 WPF 和 C# 桌面应用开发者的技术文档,解决标准 ComboBox 控件无法按关键字快速筛选列表项的常见痛点。文档从自定义一个继承自 ComboBox 的组合框控件入手,讲解如何新建依赖属性以接管数据源,如何在控件首次获得焦点时查…

2026/10/9 12:26:43 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/9 6:17:20 阅读更多 →