前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >带有Selenium的Apache ANT:完整教程

带有Selenium的Apache ANT:完整教程

作者头像
用户7466307
发布于 2020-06-17 02:49:06
发布于 2020-06-17 02:49:06
2K00
代码可运行
举报
运行总次数:0
代码可运行

什么是Apache Ant?

在创建完整的软件产品时,需要注意不同的第三方API,它们的类路径,清理先前的可执行二进制文件,编译我们的源代码,执行源代码,创建报告和部署代码库等。如果完成了这些任务一个接一个地手动操作,将花费大量时间,并且该过程容易出错。

这就是像Ant这样的构建工具的重要性。它按Ant配置文件(通常为build.xml)中提到的顺序存储,执行和自动化所有过程。

Apache ANT建造的好处

  1. Ant创建了应用程序生命周期,即清理,编译,设置依赖项,执行,报告等。
  2. 第三方API依赖关系可以由Ant设置,即其他Jar文件的类路径可以由Ant构建文件设置。
  3. 为端到端交付和部署创建了一个完整的应用程序。
  4. 它是一个简单的构建工具,其中所有配置都可以使用XML文件完成,并且可以从命令行执行。
  5. 由于配置与实际的应用程序逻辑分开,因此可以使您的代码清晰。

如何安装Ant

Windows中安装Ant的步骤如下

步骤1)转到http://ant.apache.org/bindownload.cgi从apache-ant-1.9.4-bin.zip 下载.zip文件

步骤2)解压缩文件夹,然后将路径复制到解压缩文件夹的根目录

步骤3)转到“开始”->“计算机”->“右键单击此处并选择”属性”,然后单击“高级系统设置”

步骤4)打开一个新窗口。单击“环境变量...”按钮。

步骤5)单击“新建…”按钮,并将变量名称设置为“ ANT_HOME”,并将变量值设置为解压缩文件夹的根路径,然后单击“确定”。

步骤6)现在从列表中选择“路径”变量,然后单击“编辑”并追加;%ANT_HOME%\ bin。

一次重新启动系统,现在就可以使用Ant构建工具了。

步骤7)要使用命令行检查Ant版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ant -version

了解Build.xml

Build.xml是Ant构建工具最重要的组件。对于Java项目,此文件中以XML格式提到了所有与清理,设置,编译和部署相关的任务。当我们使用命令行或任何IDE插件执行此XML文件时,写入该文件的所有指令都将按顺序执行。

让我们了解示例build.XML中的代码

1)项目标签用于提及项目名称和basedir属性。basedir是应用程序的根目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<project name="YTMonetize" basedir=".">

2) 属性标记在build.XML文件中用作变量,以在后续步骤中使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<property name="build.dir" value="${basedir}/build"/>
    <property name="external.jars" value=".\resources"/>
  <property name="ytoperation.dir" value="${external.jars}/YTOperation"/>
<property name="src.dir"value="${basedir}/src"/>

3) 目标标记用作将按顺序执行的步骤。Name属性是目标的名称。您可以在一个build.xml中包含多个目标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pathelement path="${basedir}/"/>

4) path标记用于逻辑上捆绑位于公共位置的所有文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<path id ="classpath_jars">

5) pathelement标记会将路径设置为存储所有文件的公共位置的根

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pathelement path="${basedir}/"/>

6) pathconvert标记,用于将path标记内的所有通用文件的路径转换为系统的classpath格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>          

7) 文件集标记,用于为我们项目中的其他第三方jar设置类路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<fileset dir="${ytoperation.dir}" includes="*.jar"/>

8) Echo标签用于在控制台上打印文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<echo message="deleting existing build directory"/>

9) 删除标签将清除给定文件夹中的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<delete dir="${build.dir}"/>                        

10) mkdir标签将创建一个新目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<mkdir dir="${build.dir}"/>

11) 用于编译Java源代码并将.class文件移动到新文件夹的javac标记

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <javac destdir="${build.dir}" srcdir="${src.dir}">
  <classpath refid="classpath_jars"/>
</javac>

12) jar标签将从.class文件创建jar文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<jar destfile="${ytoperation.dir}/YTOperation.jar" basedir="${build.dir}">

13) manifest标签将设置您的主类以便执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<manifest>
    <attribute name="Main-Class" value="test.Main"/>
</manifest>   

14) “依赖”属性用于使一个目标依赖于另一个目标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<target name="run" depends="compile">

15) java标记将从编译目标部分中创建的jar中执行main函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<java jar="${ytoperation.dir}/YTOperation.jar" fork="true"/>                  

使用Eclipse插件运行Ant

要从eclipse运行Ant,请转到build.xml文件->右键单击文件-> Run as ...->单击Build文件

例:

我们将使用一个小示例程序,该程序将非常清楚地解释Ant功能。我们的项目结构看起来像–

在此示例中,我们有4个目标

  1. 设置外部jar的类路径,
  2. 清理以前编译的代码
  3. 编译现有的Java代码
  4. 运行代码

Guru99AntClass.class

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package testAnt;    
import java.util.Date;    

public class Guru99AntClass {        
   public static void main(String...s){                         
    System.out.println("HELLO GURU99 ANT PROGRAM");                  
    System.out.println("TODAY's DATE IS->"+ currentDate() );            
}               
public static String currentDate(){                  
  return new Date().toString();            
  }    
}

Build.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"  standalone="no"?>                  
<!--用于提及项目名称的项目标记,basedir属性将是应用程序的根目录-->  

<project name="YTMonetize" basedir=".">                
     <!--属性标记将用作build.xml文件中的变量,以便在以后的步骤中使用-->  

  <property name="build.dir" value="${basedir}/build"/>                
    <property name="external.jars" value=".\resources"/>                
    <property name="ytoperation.dir" value="${external.jars}/YTOperation"/>
<property name="src.dir"value="${basedir}/src"/>
<!--用作将按顺序执行的步骤的目标标记。name属性将是目标的名称,用于使一个目标依赖于另一个目标-->    
         <target name="setClassPath">          
      <path id="classpath_jars">            
        <pathelement  path="${basedir}/"/>          
      </path>                 
<pathconvert  pathsep=";"property="test.classpath" refid="classpath_jars"/>  
</target>        
  <target name="clean">            
    <!--echo标记将用于在控制台-->   
    <echo message="deleting existing build directory"/>            
    <!--删除标记将清除给定文件夹中的数据-->   
    <delete dir="${build.dir}"/>            
  </target>        
<target name="compile" depends="clean,setClassPath">                
  <echo message="classpath:${test.classpath}"/>          
      <echo message="compiling.........."/>            
 <!--mkdir标记将创建新的控制器-->             
  <mkdir dir="${build.dir}"/>            
    <echo message="classpath:${test.classpath}"/>            
    <echo message="compiling.........."/>            
<!--用于编译java源代码并将.class文件移动到新文件夹-->    
  <javac destdir="${build.dir}" srcdir="${src.dir}">                
      <classpath refid="classpath_jars"/>            
  </javac>        
  <!--jar标记将从.class文件-->    
  <jar  destfile="${ytoperation.dir}/YTOperation.jar"basedir="${build.dir}">                
              <!--manifest标记将设置要执行的主类-->   
            <manifest>        
              <attribute name="Main-Class" value="testAnt.Guru99AntClass"/>  
</manifest>    
</jar>        
    </target>        
  <target name="run" depends="compile">                
    <!--java标记将从编译目标部分-->  
<java jar="${ytoperation.dir}/YTOperation.jar"fork="true"/>      
</target>        
  </project>    

如何使用Ant执行TestNG代码

在这里,我们将创建一个类TestNG的方法和组级道路测试中的build.xml。

现在要执行testng方法,我们将创建另一个testng.xml文件,并从build.xml文件中调用该文件。

步骤1)我们在包testAnt中创建一个“ Guru99AntClass.class”

Guru99AntClass.class

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package testAnt;
import java.util.Date;
import org.testng.annotations.Test;    
public class Guru99AntClass {        
    @Test      
  public void Guru99AntTestNGMethod(){               
    System.out.println("HELLO GURU99 ANT PROGRAM");          
    System.out.println("TODAY's DATE IS->"+ currentDate() );          
  }    
  public static String currentDate(){          
    return new Date().toString();          
  }    
}

步骤2)创建一个目标以在Build.xml中加载此类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--加载testNG并添加到应用程序的类路径-->
  <target name="loadTestNG" depends="setClassPath">
<!—using taskdef  tag we can add a task to run on the current project. In below line, we are adding testing task in this project. Using testing task here now we can run testing code using the ant script -->
    <taskdef resource="testngtasks" classpath="${test.classpath}"/>
</target>

步骤3)建立testng.xml

testng.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="YT"thread-count="1">
      <test name="GURU99TestNGAnt">
      <classes>
         <class name="testAnt.Guru99AntClass">
  </class>
</classes>
</test>
</suite>

步骤4)在Build.xml中创建目标以运行此TestNG代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<target name="runGuru99TestNGAnt" depends="compile">
<!--testng标记将用于使用相应的testng.xml文件执行testng代码。这里的classpath属性将testng的jar的classpath设置为项目-->
  <testng classpath="${test.classpath};${build.dir}">
<!—xmlfileset tag is used here to run testng's code using testing.xml file. Using includes tag we are mentioning path to testing.xml file-->
   <xmlfileset dir="${basedir}" includes="testng.xml"/>
</testng>      

步骤5)完整的Build.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0"encoding="UTF-8"standalone="no"?>
<!--用于提及项目名称的项目标记,basedir属性将是应用程序的根目录-->
      <project name="YTMonetize" basedir=".">
           <!--属性标记将用作build.xml文件中的变量,以便在以后的步骤中使用-->
      <property name="build.dir"value="${basedir}/build"/>
<!--将testng相关的jar放在资源文件夹-->
        <property name="external.jars" value=".\resource"/>
        <property name="src.dir" value="${basedir}/src"/>
<!--用作将按顺序执行的步骤的目标标记。name属性将是name
使一个目标依赖另一个目标-->
<!--加载testNG并添加到应用程序的类路径-->
         <target name="loadTestNG"depends="setClassPath">
        <taskdef resource="testngtasks"classpath="${test.classpath}"/>
    </target>
    <target name="setClassPath">
           <path id="classpath_jars">
          <pathelement path="${basedir}/"/>
          <fileset dir="${external.jars}" includes="*.jar"/>
         </path>
        <pathconvert pathsep=";"property="test.classpath"refid="classpath_jars"/>
  </target>
  <target name="clean">
             <!--echo标记将用于在控制台-->
                 <echo message="deleting existing build directory"/>
               <!--删除标记将清除给定文件夹中的数据-->
                 <delete        dir="${build.dir}"/>
      </target>
<target name="compile"depends="clean,setClassPath,loadTestNG">
           <echo message="classpath:${test.classpath}"/>
                 <echo  message="compiling.........."/>
           <!--mkdir标记将创建新的控制器-->
            <mkdir dir="${build.dir}"/>
          <echo message="classpath:${test.classpath}"/>
      <echo message="compiling.........."/>
 <!--用于编译java源代码并将.class文件移动到新文件夹-->
          <javac destdir="${build.dir}"srcdir="${src.dir}">
               <classpath refid="classpath_jars"/>
    </javac>
  </target>
<target name="runGuru99TestNGAnt"depends="compile">
   <!--testng标记将用于使用相应的testng.xml文件-->
      <testng classpath="${test.classpath};${build.dir}">
               <xmlfileset dir="${basedir}"includes="testng.xml"/>
  </testng>
</target>
</project>

步骤6)输出

带有Selenium Webdriver的Ant:

到目前为止,我们已经了解到,使用ANT,我们可以将所有第三方jar放在系统中的特定位置,并为我们的项目设置它们的路径。使用这种方法,我们可以在一个地方设置项目的所有依赖项,并使其更可靠地进行编译,执行和部署。

同样,对于我们使用硒的测试项目,我们可以在build.xml中轻松提及硒依赖性,而无需在应用程序中手动添加它的类路径。

因此,现在您可以忽略下面提到的为项目设置类路径的传统方法。

例:

我们将修改前面的示例

步骤1)将属性selenium.jars设置为资源文件夹中与硒相关的jar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<property name="selenium.jars" value=".\selenium"/>

步骤2)在目标setClassPath中,添加Selenium文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<target name="setClassPath">
          <path id="classpath_jars">
        <pathelement path="${basedir}/"/>  
        <fileset dir="${external.jars}" includes="*.jar"/>
              <!-- selenium jar added here -->
                  <fileset dir="${selenium.jars}" includes="*.jar"/>
         </path>    

步骤3)完成Build.xml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--用于提及项目名称的项目标记,basedir属性将是应用程序的根目录-->
      <project name="YTMonetize" basedir=".">
                  <!--属性标记将用作build.xml文件中的变量,以便在以后的步骤中使用-->
        <property name="build.dir" value="${basedir}/build"/>
      <!--将testng相关的jar放在资源文件夹-->
         <property name="external.jars" value=".\resource"/>
<!--将selenium相关的jar放入资源文件夹-->
     <property name="selenium.jars" value=".\selenium"/>
      <property name="src.dir" value="${basedir}/src"/>
        <!--用作将按顺序执行的步骤的目标标记。name属性将是name
使一个目标依赖另一个目标-->
<!--加载testNG并添加到应用程序的类路径-->
       <target name="loadTestNG" depends="setClassPath">
        <taskdef resource="testngtasks" classpath="${test.classpath}"/>
    </target>
<target name="setClassPath">
          <path id="classpath_jars">
        <pathelement path="${basedir}/"/>
          <fileset dir="${external.jars}" includes="*.jar"/>
      <!--Selenium jar 添加在这里-->
              <fileset dir="${selenium.jars}"includes="*.jar"/>
        </path>
   <pathconvert pathsep=";" property="test.classpath" refid="classpath_jars"/>
</target>
<target name="clean">
<!--echo标记将用于在控制台-->
               <echo message="deleting existing build directory"/>
                  <!--删除标记将清除给定文件夹中的数据-->
                   <delete dir="${build.dir}"/>
        </target>
<target name="compile" depends="clean,setClassPath,loadTestNG">
         <echo message="classpath:${test.classpath}"/>
                <echo message="compiling.........."/>
        <!--mkdir标记将创建新的控制器-->
          <mkdir dir="${build.dir}"/>
                <echo message="classpath:${test.classpath}"/>
      <echo message="compiling.........."/>
  <!--用于编译java源代码并将.class文件移动到新文件夹-->
     <javac destdir="${build.dir}"srcdir="${src.dir}">
             <classpath refid="classpath_jars"/>
  </javac>
</target>
<target name="runGuru99TestNGAnt" depends="compile">
    <!--testng标记将用于使用相应的testng.xml文件-->
      <testng classpath="${test.classpath};${build.dir}">
               <xmlfileset dir="${basedir}" includes="testng.xml"/>
    </testng>
  </target>
</project>

步骤4)现在,用新代码更改以前创建的类Guru99AntClass.java。

Guru99AntClass.java:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package testAnt;    
import java.util.List;    
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;  
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class Guru99AntClass {

  @Test    
    public void Guru99AntTestNGMethod(){
        WebDriver driver = new FirefoxDriver();  
      driver.get("http://demo.guru99.com/test/guru99home/");
      List<WebElement> listAllCourseLinks = driver.findElements(By.xpath("//div[@class='canvas-middle']//a"));                      
          for(WebElement webElement : listAllCourseLinks) {
      System.out.println(webElement.getAttribute("href"));
          }
    }
}

步骤5)成功执行后,输出将如下所示:

摘要:

Ant是Java的构建工具。

Ant用于代码编译,部署,执行过程。

可以从Apache网站下载Ant 。

Build.xml文件,用于使用Ant配置执行目标。

可以从命令行或合适的IDE插件(如eclipse)运行Ant。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试test 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
KRF:一种新的6D姿态估计改进方法
原文:KRF: Keypoint Refinement with Fusion Network for 6D Pose Estimation
一点人工一点智能
2022/12/27
9720
KRF:一种新的6D姿态估计改进方法
大盘点|6D姿态估计算法汇总(上)
主要思想:用于从RGB-D图像中估计一组已知对象的6D位姿,分别处理两个数据源,并使用一种新的dense fusion network来提取像素级的 dense feature embedding,并从中估计姿态。实验结果表明,该方法在YCB-Video和Linemod两种数据集上均优于现有的方法。论文还将所提出的方法应用到一个真实的机器人上,根据所估计的姿态来抓取和操纵物体。
3D视觉工坊
2020/12/11
1.6K0
大盘点|6D姿态估计算法汇总(上)
HybridPose:混合表示下的6D对象姿势估计
论文题目:Single-Stage 6D Object Pose Estimation
计算机视觉
2020/12/11
5340
HybridPose:混合表示下的6D对象姿势估计
李飞飞团队、康奈尔Weinberger团队、密歇根大学最新CVPR热点论文作者解读
今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区
数据猿
2019/07/23
7180
基于RGB-D的6D目标检测算法
这里给出RGB部分方法的性能进行对比,RGB-D的指标是采用的ADD(-S), 所以我们就只看第3,4,5列的指标
Mezereon
2023/05/07
7300
基于RGB-D的6D目标检测算法
【点云论文速读】6D位姿估计
机器人与其他智能设备需要根据自身搭载的视觉系统实现高效的目标级场景表达以进行接触、物理、遮挡等推理。已知的精确目标模型在未知结构的非参数化重建中起着十分重要的作用。我们提出了一种系统,该系统能够估计实时多视角场景中接触、遮挡已知目标的精确位姿。我们的方法能从单一的RGBD视角估计3D目标位姿,随着相机的移动,能够从多个视角累积位姿估计和非参数化的occupancy信息,并执行联合优化来对接触的多个接触目标进行一致非交叉的位姿估计。
点云PCL博主
2020/05/21
9390
上交通和英国格拉斯哥大学提出 SEMPose: 一种用于多目标姿态估计的单端到端网络 !
在机器视觉领域,六自由度(6D)位姿估计起着至关重要的作用。这种技术可以测量物体的位置(沿x、y、z轴的坐标)和方向(俯仰角、偏航角)。因此,它可以帮助机器人准确理解物体的空间姿态,这对于机器人抓取、移动或操作物体[1]至关重要。在这些过程中,常常会遇到需要估计多个物体的场景。这些物体通常大小不一,并且可能会相互遮挡。然而,尽管6D位姿估计技术取得了显著的进展,但现有的方法在处理多物体场景时仍然存在困难。
未来先知
2024/12/19
2140
上交通和英国格拉斯哥大学提出 SEMPose: 一种用于多目标姿态估计的单端到端网络 !
HybridPose:混合表示下的6D对象姿态估计
论文题目:HybridPose: 6D Object Pose Estimation under Hybrid Representations
3D视觉工坊
2020/12/11
5740
HybridPose:混合表示下的6D对象姿态估计
SilhoNet:一种用于3D对象位姿估计和抓取规划的RGB方法
论文题目:SilhoNet:An RGB Method for 3D Object Pose Estimation and Grasp Planning
计算机视觉
2020/12/11
9160
SilhoNet:一种用于3D对象位姿估计和抓取规划的RGB方法
大盘点|6D姿态估计算法汇总(下)
http://mi.eng.cam.ac.uk/projects/relocalisation/
3D视觉工坊
2020/12/11
1.2K0
大盘点|6D姿态估计算法汇总(下)
6DoF 姿态估计&目标抓取论文汇总(ICRA2021)
1、ICRA2021 - Fast Uncertainty Quantification for Deep Object Pose Estimation
3D视觉工坊
2021/08/24
2.6K0
基于对应点的6D姿态识别
最近读取了一些针对Corresponding-based方法的6D姿态识别paper,在这里分享下思路。
3D视觉工坊
2020/12/11
1.1K0
基于对应点的6D姿态识别
ES6D: 利用对称性进行高效的6D姿态检测
该文章提出了一个全卷积的特征提取网络 XYZNet,比 PVN3D[1] 以及 DenseFusion[2] 要更加高效
Mezereon
2023/05/11
4810
ES6D: 利用对称性进行高效的6D姿态检测
【目标跟踪】开源 | ROFT:一种卡尔曼滤波方法,从RGB-D图像流中快速、精确的跟踪6D目标的姿态和速度
备注:研究方向+地点+学校/公司+昵称,更快通过申请,长按加细分领域技术交流群,目前有细分领域:图像分割、图像目标检测、论文写作、车道检测、模型优化、目标跟踪、SLAM、点云处理(分割检测)、深度学习。
CNNer
2021/12/22
7260
【目标跟踪】开源 | ROFT:一种卡尔曼滤波方法,从RGB-D图像流中快速、精确的跟踪6D目标的姿态和速度
CVPR 2022 | OVE6D:用于基于深度的6D对象姿势估计的对象视点编码
OVE6D: Object Viewpoint Encoding for Depth-based 6D Object Pose Estimation
3D视觉工坊
2022/04/13
8480
CVPR 2022 | OVE6D:用于基于深度的6D对象姿势估计的对象视点编码
综述:基于深度学习的物体姿态估计
本文综述了基于深度学习的物体姿态估计方法,内容涵盖了实例级、类别级和未见物体三种问题形式。主要内容包括:
一点人工一点智能
2024/05/16
5510
综述:基于深度学习的物体姿态估计
6D目标检测简述
传统的2D目标检测,像是SSD、YOLO等,识别的结果是一个边界框(bounding box)
Mezereon
2023/04/28
7020
6D目标检测简述
CVPR 2024 | 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步
物体姿态估计在许多现实世界应用中起到至关重要的作用,例如具身智能、机器人灵巧操作和增强现实等。
机器之心
2024/03/26
5810
CVPR 2024 | 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步
Github项目推荐 | 目标姿态检测数据集与渲染方法
标准化数据集在多媒体研究中至关重要。今天,我们要给大家推荐一个汇总了姿态检测数据集和渲染方法的 Github 项目。
AI研习社
2019/08/20
3.1K0
Github项目推荐 | 目标姿态检测数据集与渲染方法
用于类别级物体6D姿态和尺寸估计的标准化物体坐标空间
本文的目的是估计RGB-D图像中未见过的对象实例的6D姿态和尺寸。与“实例级”6D姿态估计任务相反,我们的问题假设在训练或测试期间没有可用的精确对象CAD模型。为了处理给定类别中不同且未见过的对象实例,我们引入了标准化对象坐标空间(NOCS)-类别中所有可能对象实例的共享规范表示。然后,我们训练了基于区域的神经网络,可以直接从观察到的像素向对应的共享对象表示(NOCS)推断对应的信息,以及其他对象信息,例如类标签和实例蒙版。可以将这些预测与深度图结合起来,共同估算杂乱场景中多个对象的6D姿态和尺寸。为了训练我们的网络,我们提出了一种新的上下文感知技术,以生成大量完全标注的混合现实数据。为了进一步改善我们的模型并评估其在真实数据上的性能,我们还提供了具有大型环境和实例变化的真实数据集。大量实验表明,所提出的方法能够稳健地估计实际环境中未见过的对象实例的姿态和大小,同时还能在标准6D姿态估计基准上实现最新的性能。
计算机视觉
2020/12/29
8010
推荐阅读
相关推荐
KRF:一种新的6D姿态估计改进方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档