【目标检测系列:四】SSP-Net论文阅读 解析

本文介绍了SSP-Net(Spatial Pyramid Pooling in Deep Convolutional Networks)在视觉识别中的应用,它通过在卷积层顶部添加SPP层来解决全连接层对固定输入尺寸的需求,实现不同尺度输入的处理。SPP层采用多大小的滑动窗口进行池化,确保输出长度固定,提高目标检测的速度和效率。在训练过程中,SSP-Net支持单尺寸和多尺寸训练,尽管在微调阶段无法对所有卷积层进行后向传播。

2015
SSP-Net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Introduce

  • R-CNN为什么检测速度这么慢?

    • 对图像提完Region Proposal(2000个左右)之后将每个Proposal当成一张图像进行后续处理(CNN提特征+SVM分类)
      实际上对一张图像进行了2000次提特征和分类的过程!

    • 将Region Proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个Region Proposal的卷积层特征输入到全连接层做后续操作.

    • 但是全连接层输入必须是固定的长度
      CNN 需要固定输入图像的尺寸

      • 卷积层对于图像是没有尺寸限制要求的,全连接层需要固定输入向量的维数
      • 全连接层输入向量的维数对应全连接层的神经元个数,所以如果输入向量的维数不固定,那么全连接的权值参数个数也是不固定的,这样网络就是变化的,而在卷积层中,我们需要学习的kernal filter 参数个数是固定的。
  • SPP为的就是解决上述的问题,做到的效果为:不管输入的图片是什么尺度,都能够正确的传入网络.

    • 思路:CNN的卷积层是可以处理任意尺度的输入的,只是在全连接层处有限制尺度——换句话说,如果找到一个方法,在全连接层之前将其输入限制到等长,那么就解决了这个问题.

    • 在最后一个卷积层的顶部添加一个SPP层。SPP层池化特征并生成固定长度的输出,然后将其输入全连接层(或其他分类器)。

    • 将 图像划分为从更精细到更粗的级别的分区,并聚合其中的局部特征

在cursor中,我配置了maven相关设置{ "window.commandCenter": true, "java.jdt.ls.java.home": "D:\\jdk", "java.configuration.runtimes": [ { "name": "JavaSE-1.8", "path": "D:\\jdk",//同home路径,这里是你本地jdk根目录 "default": true //是否默认 } ], "java.compile.nullAnalysis.mode": "automatic", "java.configuration.maven.userSettings": "D:\\maven\\apache-maven-3.6.1\\conf\\setting-daas.xml", "maven.executable.path": "D:\\maven\\apache-maven-3.6.1\\bin\\mvn.cmd", "maven.terminal.useJavaHome": true, "java.import.maven.enabled": true, "redhat.telemetry.enabled": true, "cursor.cpp.enablePartialAccepts": true, "editor.fontSize": 18, "git.autofetch": true, } 并且在project settings中可以看到关于ssp的依赖,这些都在我的本地仓库中,但是为什么编译项目或这启动时报错Failed to execute goal on project dc-daas: Could not resolve dependencies for project com.digitalchina:dc-daas:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: com.digitalchina.ssp:ssp-cloud-base-api:jar:1.0.0-TEST, com.digitalchina.ssp:ssp-cloud-flowable-api:jar:1.0.0-TEST, com.digitalchina.ssp:ssp-cloud-thirdpart-api:jar:1.0.0-TEST, com.digitalchina.ssp:ssp-cloud-message-api:jar:1.0.0-TEST, com.digitalchina.ssp:ssp-cloud-sap-api:jar:1.0.0, com.digitalchina.ssp:ssp-cloud-logging-api:jar:1.0.0-TEST, com.digitalchina.ssp:ssp-cloud-sign-api:jar:1.0.0-TEST: Failure to find com.digitalchina.ssp:ssp-cloud-base-api:jar:1.0.0-TEST in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of aliyun has elapsed or updates are forced -> [Help 1]
最新发布
07-22
<think>我们面对的问题是:在Cursor中配置Maven后,项目编译或启动时无法解析本地仓库中存在的依赖,报错'Could not resolve dependencies',特别是针对com.digitalchina.ssp包依赖无法解析,尽管本地仓库存在该依赖。 根据引用[1][2][3]提供的线索,这类问题通常由以下原因引起: 1. 本地仓库中依赖的元数据损坏(.pom或.lastUpdated文件问题)[^2] 2. Maven多模块项目构建顺序错误(未先构建父模块或依赖模块)[^3] 3. Maven本地仓库索引与实际内容不一致 4. Maven配置(settings.xml)中仓库配置错误,导致未正确指向本地仓库或远程仓库 结合用户描述“本地仓库存在但未被正确识别”,我们重点排查以下方面: ### 步骤1:验证本地仓库中依赖是否存在且完整 - 定位本地仓库路径(默认在用户目录下的`.m2/repository`) - 检查依赖是否存在:进入`com/digitalchina/ssp`目录,确认对应版本的目录存在,且内部有完整的jar包、pom文件等。 - 检查是否存在`.lastUpdated`文件:这些文件表示下载失败,需删除这些文件并重新下载依赖[^2]。 - 删除命令示例(在依赖目录下): ```bash find . -name "*.lastUpdated" -exec rm -f {} \; ``` ### 步骤2:强制更新Maven本地仓库索引 - 在Cursor中打开终端,执行以下命令强制更新依赖: ```bash mvn clean install -U ``` `-U`参数强制检查远程仓库更新,即使本地已存在依赖。 ### 步骤3:检查Maven项目结构构建顺序 如果是多模块项目(根据引用[3]): 1. 先对父模块执行`clean install`(在父模块目录下): ```bash mvn clean install ``` 2. 再对依赖模块(例如`itripbiz`)执行相同操作。 ### 步骤4:验证Maven配置 - 在Cursor中检查Maven配置: - 打开设置(Settings),搜索`maven`,确认`Maven Executable Path`指向正确的Maven安装目录。 - 检查`User Settings`路径是否正确指向你的`settings.xml`文件(通常位于`~/.m2/settings.xml`)。 - 检查`settings.xml`内容: - 确认本地仓库路径配置(`<localRepository>`)与实际路径一致。 - 检查镜像仓库(mirror)配置,确保没有错误的覆盖规则导致依赖无法下载。 ### 步骤5:清除Maven本地仓库并重新下载 如果上述步骤无效,可尝试: 1. 备份后删除整个本地仓库目录(例如`rm -rf ~/.m2/repository`)。 2. 重新执行`mvn clean install -U`重新下载所有依赖。 ### 步骤6:检查依赖作用域(Scope)和传递性 - 确保依赖的`scope`(如`compile`、`provided`)符合预期。 - 使用`mvn dependency:tree`分析依赖树,确认是否存在版本冲突或排除传递依赖。 针对用户报错中的`com.digitalchina.ssp`,特别检查: - 该依赖是否在项目的`pom.xml`中正确定义。 - 该依赖是否在Maven中央仓库或配置的私有仓库中可用。 ### 示例:依赖树分析 在项目根目录执行: ```bash mvn dependency:tree -Dincludes=com.digitalchina.ssp ``` 这将显示该依赖的传递路径,帮助定位问题。 ### 解决步骤总结 1. **清理残留文件**:删除`.lastUpdated`文件。 2. **强制更新**:使用`mvn -U`强制更新快照依赖。 3. **正确构建顺序**:多模块项目按父模块→子模块顺序构建。 4. **验证配置**:检查Maven的`settings.xml`和Cursor的Maven路径配置。 5. **核验依赖**:使用`dependency:tree`分析依赖关系。 6. **终极方案**:清除本地仓库并重新下载。 如果问题仍然存在,请提供: - `pom.xml`中关于`com.digitalchina.ssp`的依赖定义。 - `mvn dependency:tree`的输出片段。 - `settings.xml`中仓库和镜像配置。 通过以上步骤,大部分“本地仓库存在但无法解析”的问题可被解决[^1][^2][^3]。 §§相关问题§§ 1. 如何在Cursor中配置Maven的私有仓库镜像? 2. Maven多模块项目的构建顺序有什么最佳实践? 3. 如何分析Maven依赖冲突并解决?</think>根据您提供的错误信息和引用内容,问题主要在于 Maven 无法正确解析本地仓库中已存在的依赖(特别是 `com.digitalchina.ssp` 包)。以下是系统化的排查和解决方案: --- ### 一、核心问题诊断(基于引用线索) 1. **依赖元数据损坏**(引用[2]) `.lastUpdated` 文件或 `.pom` 文件损坏会导致 Maven 误判依赖状态 2. **构建顺序错误**(引用[3]) 多模块项目中未按正确顺序构建父模块和子模块 3. **仓库配置冲突** Cursor 未正确继承 Maven 的本地仓库路径或镜像配置 4. **快照依赖更新问题**(引用[2]) `-SNAPSHOT` 版本依赖的更新策略导致缓存失效 --- ### 二、解决方案步骤 #### 步骤 1:清理损坏的依赖元数据 ```bash # 在本地仓库中搜索并删除损坏文件 find ~/.m2/repository -name "*.lastUpdated" -exec rm -fv {} \; find ~/.m2/repository/com/digitalchina/ssp -name "*.repositories" -delete ``` > 此操作清除 Maven 的失败下载记录[^2] #### 步骤 2:验证本地仓库路径配置 在 Cursor 中检查 Maven 配置: 1. 打开命令面板 (`Ctrl+Shift+P`) 2. 搜索 `Preferences: Open User Settings` 3. 确认路径配置: ```json "maven.executable.path": "/path/to/your/maven/bin/mvn", "maven.settingsFile": "/path/to/settings.xml", "maven.localRepository": "/path/to/.m2/repository" // 必须与本地仓库实际路径一致 ``` #### 步骤 3:强制更新依赖(关键步骤) 在项目根目录执行: ```bash mvn clean install -U -Dmaven.main.skip=true ``` - `-U`:强制检查快照更新[^2] - `-Dmaven.main.skip`:跳过主代码编译(仅解决依赖) #### 步骤 4:多模块项目构建顺序修正(引用[3]) ```mermaid graph LR A[父模块] --> B[clean install] B --> C[被依赖子模块 clean install] C --> D[其他模块操作] ``` 1. 先在**父模块目录**执行: ```bash mvn clean install -N ``` 2. 再在**被依赖模块**(如 `itripbiz`)执行: ```bash mvn clean install ``` #### 步骤 5:检查依赖作用域冲突 在问题模块的 `pom.xml` 中添加显式依赖声明: ```xml <dependency> <groupId>com.digitalchina</groupId> <artifactId>ssp</artifactId> <version>1.0.0</version> <!-- 添加排除项解决冲突 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> ``` --- ### 三、配置验证要点 1. **检查 `settings.xml` 镜像配置**: ```xml <mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 2. **确认本地仓库权限**: ```bash ls -ld ~/.m2/repository/com/digitalchina/ssp # 确保当前用户有读写权限 ``` --- ### 、高级排查工具 ```bash # 生成依赖树分析冲突 mvn dependency:tree -Dincludes=com.digitalchina:ssp # 检查依赖有效性 mvn validate ``` > 输出中查找 `omitted for conflict` 提示,处理版本冲突 --- ### 效果验证 执行后观察日志关键点: ``` [INFO] --- maven-dependency-plugin:3.6.1:tree (default-cli) @ itripbiz --- [INFO] com.example:itripbiz:jar:1.0 [INFO] \- com.digitalchina:ssp:jar:1.0.0:compile [VALID] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值