intellij入门(二)如何创建

在 IntelliJ IDEA 中创建一个新的 IntelliJ Platform 插件项目(IntelliJ Plugin Project),有几下方式:

一、使用官方模板(GitHub Clone)

1、复用模板

JetBrains 提供了一个官方的 IntelliJ Platform Plugin Template,你可以克隆这个仓库:

git clone https://github.com/JetBrains/intellij-platform-plugin-template.git

然后在 IntelliJ IDEA 中打开这个项目,它已经包含了所有必要的依赖和配置。 

2、设置正确的jdk

进入Project Settings--Modules,查看module sdk,如果是默认的jdk,需要改成plugin的sdk

MyIntelliJPlugin/
│── .github/                 # GitHub Actions CI/CD 配置
│── .gradle/                 # Gradle 缓存(运行后生成)
│── .idea/                   # IntelliJ IDEA 项目配置(IDE 相关)
│── build/                   # 编译输出目录(运行后生成)
│── gradle/                  # Gradle wrapper(自动管理 Gradle 版本)
│── src/                     # 主要的源代码目录
│   ├── main/
│   │   ├── java/            # Java 源代码(如果使用 Kotlin,则是 kotlin/)
│   │   │   └── com/example/plugin/
│   │   │       ├── MyPlugin.java      # 插件的主类
│   │   │       ├── MyAction.java      # 示例 Action(按钮/菜单)
│   │   │       ├── MyService.java     # 示例服务
│   │   ├── resources/      # 资源文件
│   │   │   ├── META-INF/
│   │   │   │   ├── plugin.xml         # 插件的核心配置文件
│   │   │   │   ├── pluginIcon.svg     # 插件的图标
│   │   │   ├── messages/              # 本地化(国际化)字符串
│   │   │   │   ├── MyBundle.properties
│   │   │   ├── icons/                 # 插件的图标资源
│   │   │   │   ├── myIcon.svg
│   ├── test/               # 测试代码目录
│── .gitignore              # Git 忽略文件
│── build.gradle.kts        # Gradle 构建脚本(Kotlin DSL)
│── settings.gradle.kts     # Gradle 设置
│── gradlew                 # 用于运行 Gradle 的 shell 脚本(Linux/macOS)
│── gradlew.bat             # 用于运行 Gradle 的批处理脚本(Windows)
│── README.md               # 项目说明文档

二、手动创建一个 IntelliJ 插件项目

1. 创建一个普通的 Gradle 项目
  • File → New → Project

  • 选择 Gradle

  • 选择 JavaKotlin

  • 配置项目名和路径

2. 编辑 build.gradle.kts,添加 IntelliJ Platform Plugin 依赖

build.gradle.kts 中,添加 IntelliJ Platform 插件依赖,然后 刷新 Gradle 使其生效。

plugins {
    id("org.jetbrains.intellij") version "1.14.1"
}

intellij {
    version.set("2023.2") // 替换为你的 IntelliJ 版本
    type.set("IC") // IntelliJ Community 版本(IC)或 Ultimate 版本(IU)
}

示例:

 idea 2023.2.8+jdk17

1、创建一个插件工程

选择 File | New | Project,或者选择Project Structure--Modules--New Module 创建一个新工程,

左侧栏中选择 IntelliJ Platform Plugin 工程类型即可

生成后,查看项目结构:

其中plugin.xml:

<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
  <!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
  <id>com.test.my_test_tool</id>

  <!-- Public plugin name should be written in Title Case.
       Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
  <name>My_test_tool</name>

  <!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
  <vendor email="support@yourcompany.com" url="https://www.yourcompany.com">YourCompany</vendor>

  <!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
       Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
       Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
  <description><![CDATA[
    Enter short description for your plugin here.<br>
    <em>most HTML tags may be used</em>
  ]]></description>

  <!-- Product and plugin compatibility requirements.
       Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
  <depends>com.intellij.modules.platform</depends>

  <!-- Extension points defined by the plugin.
       Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
  <extensions defaultExtensionNs="com.intellij">

  </extensions>
</idea-plugin>

三、使用 IntelliJ IDEA 自带的插件模板

1. 打开 IntelliJ IDEA

如果已经打开了一个项目,可以通过 File → New → Project 打开新建项目窗口。

2. 选择 "IntelliJ Platform Plugin"

在 "New Project" 窗口中:

  • 左侧菜单 选择 "IntelliJ Platform Plugin"

  • 右侧确保 GradleMaven 被选中(推荐 Gradle)

  • 点击 Next

3. 配置项目信息
  • Project Name(项目名称): 例如 MyIntelliJPlugin

  • Project Location(项目存放路径): 选择合适的位置

  • Build System(构建工具): 推荐选择 Gradle

  • Language(语言): 选择 JavaKotlin

  • Gradle DSL: 选择 Kotlin DSL(推荐)Groovy

  • IntelliJ Platform Plugin SDK: 选择本机已安装的 IntelliJ IDEA 版本

4. 点击 Finish,等待项目初始化

IntelliJ IDEA 会自动下载依赖并初始化项目。

四、说明

无论使用哪种方式创建工程,默认的都是kotlin语言即只有src/main/kotlin 目录,而没有 src/main/java 目录。默认情况下,IntelliJ IDEA 会为 Kotlin 项目创建 src/main/kotlin 目录,而不会自动创建 src/main/java 目录。可以在 src/main/ 目录下,右键点击 kotlin 目录,选择 New -> Directory输入java,之后点击Java就可以create package/class了。

并且在gradle.properties中加上:

platformBundledPlugins = com.intellij.java,com.intellij.gradle

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_t_y_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值