众所周知巧妇难为无米之炊,在如今深度学习大行其道的时代,一个数量大、质量好的数据集犹如一块璞玉,就等着算法去雕刻。今天介绍的就是来自商汤与新加坡南洋理工大学联合制作的大规模多相机通用物品场景数据集MessyTable,MessyTable包括5500+ 手工设计的场景,共计5万多张图片和120万个密集标注的检测框,其对应论文已被ECCV 2020接收。针对现实生活中多相机系统应用的难点,如相似相同的物品、密集遮挡、大角度差等问题,我们设计了大量真实、有趣又极富挑战的场景:围绕着混乱的餐桌(Messy Table)部署了多个视角的相机,其任务是关联不同相机视角中的实例。看似简单任务却要求算法能够分辨细微的外观差别、从邻近的区域获取线索以及巧妙地使用几何约束等。我们同时提出了利用多相机场景下周围信息的新算法。我们希望MessyTable不仅可以作为极富挑战的基线为后续研究指明方向,也可以作为高度真实的预训练源为算法落地开辟道路。本文我们以7次问答的方式总结了我们的工作:
问题1:MessyTable与现有的ReID和跟踪有什么关系?问题2:MessyTable有哪些挑战?问题3:MessyTable的规模有多大?问题4:MessyTable有哪些设计上的考量?问题5:各种算法在MessyTable上的表现如何?问题6:多相机关联还没有解决的问题和下一步的研究方向有什么?问题7:我可以怎么使用 MessyTable?1
MessyTable与现有的ReID和跟踪有什么关系?
答:
ReID和跟踪本质上都可以理解为实例的关联,往往需要利用外观信息等。MessyTable虽然主要是为了多相机场景中实例的关联的研究,但是它包含的分辨细微的外观差别、密集遮挡、大角度差等挑战都是和其它实例关联共通的。我们希望MessyTable在服务多相机这个特定场景之外,成为一个实例关联任务通用的数据集,成为新算法的测试场。
2
MessyTable有哪些挑战?
答:
主要的挑战有:
1、相机之间有大角度差,实例的外观在不同视角中差别很大(如图1的Instance ID为5的罐头);
2、部分(图2a)甚至完全(图2b)遮挡,为依靠外观信息的关联算法增加了困难;
3、相似(图2c)或相同(图2d)的物体,因此仅仅使用类似传统ReID的基于外观的算法是不足够的;
4、物体的堆叠(图2e/f)贴近现实生活中的混乱程度,使用传统的单应性矩阵投影等方法无法解决。
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
在平台注册账号登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数
类型
默认值
描述
userid
String
无
平台注册账号
appid
String
无
平台创建的应用id
key
String
无
平台应用生成的秘钥
msg
String
""
用户端消息内容
ip
String
""
客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552 注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class apitest { /** * Get请求,获得返回数据 * @param urlStr * @return */ private static String opUrl(String urlStr) { URL url = null; HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(5 * 10000); conn.setConnectTimeout(5 * 10000); conn.setRequestMethod("POST"); if (conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); int len = -1; byte[] buf = new byte[128]; while ((len = is.read(buf)) != -1) { baos.write(buf, 0, len); } baos.flush(); String result = baos.toString(); return result; } else { throw new Exception("服务器连接错误!"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (is != null) is.close(); } catch (IOException e) { e.printStackTrace(); } try { if (baos != null) baos.close(); } catch (IOException e) { e.printStackTrace(); } conn.disconnect(); } return ""; } public static void main(String args []){ //msg参数就是传输过去的对话内容。 System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552")); } }