OWASP dep-scan实战:容器镜像深度漏洞扫描与CI/CD集成指南
1. 项目概述为什么容器安全扫描是“必修课”最近在给一个微服务项目做安全审计发现团队里不少人对容器镜像的安全扫描还停留在“用Docker官方扫描一下”或者“等云平台告警”的阶段。这其实挺危险的。一个典型的场景是你从Docker Hub拉取了一个看似稳定的node:18-alpine基础镜像用它构建了你的应用镜像并部署到了生产环境。你可能觉得这是官方镜像应该没问题。但事实是这个基础镜像里包含的底层系统库比如libssl、zlib或者你通过apk add安装的运行时依赖可能早就存在已知的高危漏洞CVE。攻击者利用这些漏洞可以轻松实现容器逃逸、获取宿主机权限或者窃取你应用里的敏感数据。这就是为什么我们需要专门的工具像外科手术刀一样精准地剖析我们构建的Docker镜像找出其中每一层可能潜藏的风险。今天要聊的OWASP dep-scan就是这样一把好用的“手术刀”。它不是一个新概念但在实际落地中我发现很多团队对它要么不了解要么用得不深。dep-scan的核心优势在于它专攻“软件成分分析”SCA能深度解析你镜像里所有软件包包括操作系统包、编程语言包、甚至二进制文件的依赖关系然后对照多个权威漏洞数据库进行扫描给出非常详细的报告。和传统的docker scan基于Snyk或者一些商业SAST工具相比dep-scan是开源、命令行驱动的可以无缝集成到你的CI/CD流水线里。比如在Jenkins Pipeline的一个构建步骤后或者GitHub Actions的一个Job里自动执行扫描如果发现严重漏洞就“卡住”流程不让有问题的镜像流入下一步。这对于追求“安全左移”和DevSecOps的团队来说是成本极低但效果显著的一环。接下来我会结合一次完整的实战从环境准备、扫描执行、报告解读到集成CI/CD把dep-scan的里里外外讲清楚。2. 核心工具解析OWASP dep-scan的独特之处2.1 dep-scan vs. 其他扫描工具定位与差异在容器安全扫描领域工具不少各有侧重。弄清楚dep-scan的定位能帮你更好地在什么场景下用它。首先是最常见的docker scan命令。这是Docker Desktop内置的功能背后对接的是Snyk的引擎。它的优点是开箱即用无需复杂配置对个人开发者和小团队友好。但缺点也很明显扫描深度有限通常只分析显式声明的依赖如package.json、requirements.txt对操作系统层的包分析较弱其次免费版有扫描次数限制且严重依赖网络连通性。其次是像Trivy、Grype这类开源工具。它们非常流行速度快覆盖的漏洞库也全。Trivy不仅能扫镜像还能扫文件系统、仓库。它们更像是“全面手”。而dep-scan则更像一个“专项专家”。它的核心强项是深度依赖分析和精准的风险评估。dep-scan的独特之处在于混合扫描模式它不仅能像Trivy一样通过镜像的“文件系统”直接分析已安装的包支持Alpine、Debian、RHEL等多种发行版还能针对项目源码目录解析其中的依赖声明文件如Python的Pipfile.lock Node.js的package-lock.json Java的pom.xml等。这意味着你可以在构建镜像前先扫描项目依赖构建镜像后再扫描镜像本身实现双重保障。风险量化与审计功能dep-scan的报告不仅仅是列出CVE编号和严重等级。它会计算一个综合的风险评分并突出显示那些有已知可利用Exploit代码的漏洞这能帮你快速定位必须优先处理的“定时炸弹”。此外它还支持生成供审计使用的CycloneDX或SPDX格式的软件物料清单SBOM这对于满足某些行业合规要求至关重要。高度可集成作为一个Python命令行工具它可以通过pip轻松安装输出是结构化的JSON或HTML非常容易被其他脚本或平台如Jenkins, GitLab CI解析和处理。简单来说如果你的需求是快速、简单地知道镜像里有没有高危漏洞Trivy可能更合适。但如果你需要更深入的依赖分析、风险优先级排序、生成合规所需的SBOM或者想要一个能深度融入开发流程的扫描环节那么dep-scan是更专业的选择。在实际项目中我常将两者结合使用用Trivy做快速门禁检查用dep-scan做深度审计和报告生成。2.2 安装与配置三种主流方式详解dep-scan的安装不复杂但根据你的使用环境有几种不同的推荐方式。方式一使用pip直接安装最通用这是最直接的方法前提是你的系统有Python 3.7和pip。pip install owasp-dep-scan安装完成后直接运行dep-scan --help验证是否成功。这种方式适合大多数Linux开发机、CI Runner如GitHub Actions的ubuntu-latest环境。但要注意如果你的生产环境或CI环境是极度精简的镜像如alpine可能需要额外安装Python和编译依赖可能会稍显笨重。方式二使用Docker容器运行推荐用于CI/CD这是我最推荐在自动化流水线中使用的方式。它保证了环境的一致性无需在Runner上安装任何依赖。docker run --rm -v $(pwd):/app -w /app shiftleft/scan scan --src /app --type scan_type这里用到的shiftleft/scan是官方维护的dep-scan Docker镜像。-v $(pwd):/app将当前目录挂载到容器的/app目录--src /app指定扫描源。这种方式干净利落特别是在使用Kubernetes集群的Jenkins或GitLab Runner时直接以容器方式运行Job非常方便。方式三从源码安装用于开发或定制如果你想研究其源码或者需要基于某个特定版本进行定制可以从GitHub克隆。git clone https://github.com/owasp-dep-scan/dep-scan.git cd dep-scan pip install -e .这种方式通常只有在你需要修改扫描逻辑或添加对新包格式的支持时才用得上。注意关于漏洞数据库。dep-scan首次运行时会自动从多个源头如NVD、GitHub Advisory等下载漏洞数据库到本地缓存默认在~/.cache/dep-scan。这个过程可能会比较慢取决于你的网络。在CI环境中建议将缓存目录通过卷volume持久化或者在Pipeline中增加一个前置步骤来预热缓存以避免每次构建都重复下载。3. 实战演练对Docker镜像进行深度漏洞扫描理论说了这么多是时候动手了。我们以一个简单的Python Flask应用镜像为例演示完整的扫描流程。3.1 准备一个待扫描的“问题”镜像首先我们创建一个有“问题”的Dockerfile。这里我们故意使用一个较旧的、已知包含漏洞的Python基础镜像并安装一个有过期版本的requests库。# Dockerfile FROM python:3.9-slim-buster # 这个标签的镜像底层Debian系统可能包含老旧库 WORKDIR /app # 复制依赖声明文件 COPY requirements.txt . # 假设requirements.txt里写的是 requests2.25.1 (这个版本有CVE-2021-33503等漏洞) RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [python, app.py]requirements.txt内容requests2.25.1 flask2.0.1构建这个镜像docker build -t my-vulnerable-app:latest .3.2 执行扫描命令、参数与输出解读现在我们用dep-scan来扫描这个刚构建好的镜像。基本扫描命令dep-scan --src my-vulnerable-app:latest --type docker--src: 指定扫描源这里可以是镜像名、镜像ID、或者一个目录路径。--type: 指定扫描类型。对于Docker镜像用docker对于项目源码目录用dir。使用更详细的参数获取丰富报告dep-scan --src my-vulnerable-app:latest --type docker \ --report report.html \ --format html \ --no-banner--report: 指定报告输出文件名。--format: 输出格式支持json默认适合机器解析、html适合人工阅读、cyclonedx/spdx生成SBOM。--no-banner: 隐藏工具启动时的横幅信息让输出更干净。执行命令后dep-scan会做以下几件事拉取镜像如果镜像不在本地会尝试从仓库拉取。分析镜像层解压镜像分析每一层文件系统识别所有安装的软件包通过dpkg、rpm、apk等包管理器数据库。解析应用依赖同时它也会查找并解析镜像中的依赖文件如requirements.txt,package-lock.json。匹配漏洞将识别到的所有软件包及其版本与本地漏洞数据库进行比对。生成报告输出扫描结果。HTML报告解读生成的report.html用浏览器打开内容非常清晰。报告通常分为几个部分摘要Summary展示扫描的组件总数、发现的漏洞总数并按严重程度Critical, High, Medium, Low分类统计。一眼就能看出整体风险状况。漏洞列表Vulnerabilities这是核心。每个漏洞条目会包含CVE ID 漏洞的唯一编号如CVE-2021-33503。严重程度Severity 根据CVSS分数划分。组件Component 出问题的软件包名和版本例如requests 2.25.1。修复版本Fixed Version这是最关键的信息dep-scan会告诉你哪个版本修复了该漏洞例如2.26.0。这直接指导你的修复行动。描述Description 漏洞的简要说明。可利用性Exploit 会标记该漏洞是否有公开的利用代码。标有“Exploit Available”的漏洞需要最高优先级处理。风险评分Risk Score dep-scan综合漏洞严重性、可利用性等因素计算出的一个分数帮助排序。依赖图Dependency Graph如果扫描类型支持以可视化方式展示包与包之间的依赖关系对于理解复杂依赖中漏洞的传递性很有帮助。在我们的例子中报告里很可能会看到针对python:3.9-slim-buster基础镜像中某个libssl版本的中危漏洞以及针对requests2.25.1的多个中高危漏洞。修复建议就是升级基础镜像到更新版本如python:3.9-slim-2023xxxx以及将requests升级到2.26.0。3.3 高级用法自定义策略与忽略漏洞在实际团队协作中我们不可能一遇到漏洞就阻塞发布。有些漏洞可能误报有些在当前上下文下风险可接受有些则需要时间排期修复。dep-scan提供了策略文件来应对这些情况。创建策略文件.depcheck.yaml你可以在项目根目录或指定路径创建一个策略文件。# .depcheck.yaml version: 1 ignore: # 1. 忽略特定CVE需注明理由和过期时间 - cve: CVE-2018-12886 reason: 该漏洞在容器化环境中利用条件苛刻经安全团队评估风险可接受。 expires: 2024-12-31 # 2. 忽略某个组件的所有特定版本以下的漏洞 - component: libgnutls30 version: 3.6.13-2 reason: 升级该基础库涉及重大兼容性变更计划在下个季度升级。 # 3. 仅忽略特定严重等级以下的漏洞谨慎使用 # severity: MEDIUM # 通常不建议全局忽略某一等级 policy: # 定义扫描失败的门槛 fail: - severity: CRITICAL - severity: HIGH and exploit: True # 高严重性且存在公开利用的漏洞必须失败 warn: - severity: HIGH # 高严重性但无公开利用的发出警告但不失败在扫描命令中引用策略文件dep-scan --src my-vulnerable-app:latest --type docker --policy .depcheck.yaml这样扫描结果会根据策略文件进行过滤和判断。如果发现了策略中定义为fail的漏洞dep-scan会以非零退出码结束这可以直接用于CI/CD流程的失败判定。实操心得策略文件的管理。策略文件.depcheck.yaml应该纳入版本控制如Git。但其中可能会包含一些临时性的忽略理由。建议团队建立Code Review流程任何对策略文件的修改特别是添加ignore规则都需要经过安全负责人或团队评审并且必须设置合理的expires过期时间防止“临时”忽略变成“永久”忽略。4. 集成到CI/CD流水线让安全扫描自动化单次扫描的价值有限只有把扫描动作自动化、流程化嵌入到每一次代码提交和镜像构建中才能形成持续的安全防护。下面以GitHub Actions为例展示如何集成。4.1 GitHub Actions集成示例在你的项目根目录创建.github/workflows/dep-scan.ymlname: Container Security Scan on: push: branches: [ main, develop ] pull_request: branches: [ main ] # 也可以手动触发 workflow_dispatch: jobs: dep-scan: runs-on: ubuntu-latest # 如果构建镜像需要可以在这里添加构建步骤 steps: - name: Checkout code uses: actions/checkoutv4 - name: Build Docker image (示例) run: docker build -t my-app:${{ github.sha }} . - name: Run OWASP dep-scan uses: docker://shiftleft/scan:latest with: args: scan --src my-app:${{ github.sha }} --type docker --format json --report dep-scan-report.json --no-banner # 注意这里直接使用docker镜像作为action - name: Upload scan report as artifact if: always() # 即使扫描失败也上传报告 uses: actions/upload-artifactv4 with: name: dep-scan-report path: dep-scan-report.json - name: Fail on critical/high with exploit run: | # 一个简单的脚本解析JSON报告并根据策略决定是否失败 # 这里假设报告中有severity和exploit字段 # 可以使用jq工具进行解析 # 示例如果存在CRITICAL或HIGH且exploit为true的漏洞则退出1 HIGH_EXPLOIT_COUNT$(jq [.vulnerabilities[] | select(.severity HIGH and .exploit true)] | length dep-scan-report.json) CRITICAL_COUNT$(jq [.vulnerabilities[] | select(.severity CRITICAL)] | length dep-scan-report.json) if [ $HIGH_EXPLOIT_COUNT -gt 0 ] || [ $CRITICAL_COUNT -gt 0 ]; then echo 发现必须立即处理的高危漏洞流程失败。 exit 1 else echo 未发现必须立即阻断的高危漏洞。 fi这个工作流做了几件事在代码推送到主分支或发起Pull Request时触发。构建Docker镜像此步骤根据你项目实际情况调整可能不需要。使用官方的dep-scan Docker镜像运行扫描输出JSON格式报告。将报告上传为工作流制品便于后续下载查看。执行一个简单的Shell脚本使用jq解析JSON如果发现“严重”或“高危且存在公开利用”的漏洞则主动让工作流失败阻止合并或部署。4.2 与其他工具链的协作dep-scan可以成为你安全工具链中的一环与其他工具配合与Trivy联动可以在同一个Pipeline中先后运行Trivy和dep-scan。Trivy做快速筛选如果通过再用dep-scan做深度分析和SBOM生成。两者的报告可以一并归档。与镜像仓库集成在将镜像推送到私有仓库如Harbor, Nexus后可以触发一个后置钩子webhook调用一个运行dep-scan的服务对推送的镜像进行扫描并将结果更新到镜像的元数据中。与安全仪表盘集成将dep-scan生成的JSON报告通过脚本推送到你的集中式安全运营平台如DefectDojo, ThreadFix或自建仪表盘实现漏洞的集中管理和跟踪。注意事项CI中的性能与缓存。在CI中运行镜像扫描最大的瓶颈往往是时间。一个几百MB的镜像下载、解压、分析、匹配漏洞可能需要几分钟。为了优化使用更小的基础镜像如Alpine Linux能显著减少扫描范围和时间。缓存漏洞数据库如前所述在CI Runner上持久化dep-scan的缓存目录~/.cache/dep-scan可以避免每次Job都重新下载几百MB的漏洞数据。在GitHub Actions中可以使用actions/cache动作来实现。选择性扫描如果不是每次提交都需要全量扫描可以配置为仅在合并到主分支或创建发布标签时进行深度扫描日常开发分支进行轻量扫描。5. 常见问题与排查技巧实录即使按照指南操作在实际使用中还是会遇到各种问题。这里记录几个我踩过的坑和解决方法。5.1 扫描失败或结果为空问题现象执行dep-scan后很快结束报告里没有漏洞或者提示“No packages found”。排查思路检查扫描类型--type扫描本地目录用了docker类型或者扫描镜像用了dir类型都会导致分析对象错误。检查镜像或目录权限确保运行dep-scan的用户有权限读取Docker守护进程如果扫描本地镜像或目标目录。查看详细日志添加-v或--verbose参数运行查看dep-scan具体在执行哪个步骤时出了问题。常见问题可能是无法下载漏洞数据库网络问题或者无法解析某种特定格式的包文件。确认镜像/目录内容对于镜像可以用docker run -it image sh进入容器看看预期的软件包是否真的存在。对于目录确认依赖文件如package-lock.json是否在指定路径下。5.2 漏洞数据库更新失败问题现象扫描时长时间卡在“Downloading vulnerability database...”或提示数据库过期。解决方法手动更新运行dep-scan --update可以强制更新本地漏洞数据库。更换数据源镜像如果因为网络问题无法连接默认源如NVD可以尝试在命令中通过环境变量指定可用的镜像源但这需要查阅dep-scan的文档看是否支持配置。使用预置的数据库在离线环境或内网可以在一台能联网的机器上更新好数据库然后将整个缓存目录~/.cache/dep-scan打包复制到内网机器或CI Runner的对应位置。5.3 误报与漏报的处理没有任何工具是100%准确的。误报False Positive工具报告了漏洞但该漏洞在你的特定环境或使用方式下无法被利用。例如一个存在于某个底层库中的漏洞但你的应用代码从未调用到相关函数。处理这就是前面提到的策略文件.depcheck.yaml的用武之地。通过ignore规则在评估后将其忽略并记录理由和负责人。漏报False Negative工具没有报告实际存在的漏洞。处理更棘手一些。首先确保你的漏洞数据库是最新的dep-scan --update。其次检查dep-scan是否支持识别你镜像中特定的包管理器或编程语言。如果确认是工具支持范围的问题可以考虑在流水线中引入另一种扫描工具如Trivy作为交叉验证。最后可以向dep-scan项目的GitHub仓库提交Issue提供能复现漏报的镜像或项目样例。5.4 在CI中控制流程的进阶技巧简单的“发现高危漏洞就失败”策略有时过于粗暴。你可能希望对新引入的漏洞零容忍对已有的漏洞设置宽限期。只阻断有公开利用代码的漏洞。这需要更精细地解析JSON报告并编写判断逻辑。以下是一个进阶的Shell脚本片段示例可以与5.1章节中的GitHub Actions示例结合#!/bin/bash # fail-on-vulnerability.sh REPORT_FILEdep-scan-report.json # 从报告中提取所有漏洞生成一个“指纹”例如CVE ID组件版本 CURRENT_VULNS$(jq -c .vulnerabilities[] | {cve:.id, component:.component.name, version:.component.version} $REPORT_FILE | sort) # 读取上一次扫描通过的“基线”漏洞列表这个文件需要在上次成功构建时生成并保存为制品 # 假设我们有一个方式获取到 BASELINE_VULNS # BASELINE_VULNS$(cat baseline_vulns.json | jq ... | sort) # 比较差异找出当前有而基线中没有的漏洞即新引入的 # NEW_VULNS$(comm -13 (echo $BASELINE_VULNS) (echo $CURRENT_VULNS)) # 这里简化处理我们只检查是否有CRITICAL或HIGH且exploit的漏洞 FAIL_VULNS$(jq [.vulnerabilities[] | select(.severity CRITICAL or (.severity HIGH and .exploit true))] $REPORT_FILE) if [ $(echo $FAIL_VULNS | jq length) -gt 0 ]; then echo 发现必须立即处理的高危漏洞 echo $FAIL_VULNS | jq -r .[] | \(.id) - \(.component.name)\(.component.version) - 严重性:\(.severity) - 有利用代码:\(.exploit) exit 1 fi # 如果没有必须立即失败的漏洞则保存当前漏洞列表作为新的基线用于下次比较 # echo $CURRENT_VULNS baseline_vulns.json echo 扫描通过未发现需立即阻断的高危漏洞。这个脚本提供了更灵活的控制思路。你可以将它放入你的CI脚本中实现基于漏洞基线的差分检查从而更智能地管理技术债务。将dep-scan这样的工具用起来最大的挑战往往不是技术本身而是如何将其平滑地融入团队现有的开发节奏并让所有人都理解其价值。从一次手动扫描开始到把它变成PR合并前的一道自动关卡再逐步完善扫描策略和漏洞处理流程这才是提升容器安全性的可持续之路。

相关新闻

Arduino串口通讯从入门到精通:原理、编程与多机通信实战

Arduino串口通讯从入门到精通:原理、编程与多机通信实战

1. 项目概述:为什么串行通讯是Arduino的“咽喉要道”? 如果你刚接触Arduino,点亮了第一个LED,或者让蜂鸣器响了起来,可能会觉得单片机编程不过如此。但当你试图让Arduino和电脑“说说话”,或者让两块Arduin…

2026/7/28 6:42:20 阅读更多 →
多轮对话系统中的上下文理解与记忆机制实践

多轮对话系统中的上下文理解与记忆机制实践

1. 多轮对话系统的核心挑战在构建AI对话系统时,单轮问答相对容易实现,但当对话延伸到多轮交互时,系统需要具备理解上下文和记忆历史信息的能力。这就像两个人聊天,如果对方每句话都当作全新的开始,对话很快就会变得支离…

2026/7/28 6:42:20 阅读更多 →
SAP BTP ABAP环境安全通信全景解析:TLS、mTLS与Web防护实战

SAP BTP ABAP环境安全通信全景解析:TLS、mTLS与Web防护实战

1. 项目概述:为什么SAP BTP ABAP环境的安全通信值得深挖?如果你正在或即将在SAP BTP的ABAP环境里折腾应用,尤其是那些需要对外暴露服务、与外部系统对话、或者有个前端界面需要保护的场景,那么“安全通信”这四个字绝对是你绕不开…

2026/7/28 6:42:20 阅读更多 →

最新新闻

ITIL4框架下运维交付真实性分析与改进实践

ITIL4框架下运维交付真实性分析与改进实践

1. ITIL4发布计划引发的行业反思:运维交付真实性探讨最近在准备公司ITIL4落地实施时,我翻看了二十多家企业的运维交付报告,发现一个惊人现象:近90%的运维团队在交付物中注水。这不是简单的数据造假,而是整个行业对&quo…

2026/7/28 6:53:25 阅读更多 →
scikit-video与OpenCV对比:哪个更适合你的视频处理项目?

scikit-video与OpenCV对比:哪个更适合你的视频处理项目?

scikit-video与OpenCV对比:哪个更适合你的视频处理项目? 【免费下载链接】scikit-video Video Processing in Python 项目地址: https://gitcode.com/gh_mirrors/sci/scikit-video 在Python视频处理领域,scikit-video和OpenCV是两个备…

2026/7/28 6:53:25 阅读更多 →
构建AI技能交易平台:VS Code扩展与Docker容器化实践

构建AI技能交易平台:VS Code扩展与Docker容器化实践

1. 项目背景与核心价值休假第一天就动手写代码的开发者故事,往往藏着最真实的技术热情。这次我选择构建的Agent Skills Marketplace,本质上是一个面向开发者的技能交易平台——就像给AI智能体(Agent)准备的"应用商店"。…

2026/7/28 6:53:25 阅读更多 →
MFTCoder 核心优势揭秘:从 LoRA 到 QLoRA,3 种微调模式满足不同需求

MFTCoder 核心优势揭秘:从 LoRA 到 QLoRA,3 种微调模式满足不同需求

MFTCoder 核心优势揭秘:从 LoRA 到 QLoRA,3 种微调模式满足不同需求 【免费下载链接】MFTCoder High Accuracy and efficiency multi-task fine-tuning framework for Code LLMs. This work has been accepted by KDD 2024. 项目地址: https://gitcode…

2026/7/28 6:53:25 阅读更多 →
未来功能前瞻:SoulSync路线图与社区贡献指南

未来功能前瞻:SoulSync路线图与社区贡献指南

未来功能前瞻:SoulSync路线图与社区贡献指南 【免费下载链接】SoulSync Intelligent Music & Video Automation Platform 项目地址: https://gitcode.com/gh_mirrors/so/SoulSync SoulSync 作为智能音乐与视频自动化平台,正通过持续创新为用户…

2026/7/28 6:53:24 阅读更多 →
TPIC7710EVM评估板深度解析:从硬件设计到软件调试的汽车电子实践

TPIC7710EVM评估板深度解析:从硬件设计到软件调试的汽车电子实践

1. 项目概述:为什么你需要深入了解TPIC7710EVM?在汽车电子,尤其是车身控制和安全系统领域,电子驻车制动(EPB)正迅速取代传统的机械拉线手刹。它带来的不仅是操作的便利性,更是系统集成度、可靠性…

2026/7/28 6:52:24 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻