作家
登录

如何实现模拟人类视觉注意力的循环神经网络?

作者: 来源: 2017-07-07 17:02:50 阅读 我要评论

 道理篇

本文所用的代码在https://github.com/SquarePants1991/OpenGLESLearn.git的ARKit分支中。

iOS11推出了新框架ARKit,经由过程ARKit和SceneKit可以很便利的制造AR App。苹不雅也供给了AR根本的应用框架,你可以直接大年夜此开端你的AR App的开辟。

不过本系列文┞仿将应用OpenGL ES为ARKit供给衬着支撑,接下来我们先去懂得一下ARKit的理论相干常识。

处理并绑定好纹理后,为了包管不合屏幕尺寸下,纹理不被非等比拉伸,所以对viewport进行重了新计算[self setupViewport: CGSizeMake(imageHeight, imageWidth)];。接下来将ARKit计算出来的摄像机的变换赋值给self.cameraMatrix。留意ARKit捕获的图片须要扭转90度后才能正常显示,所以在设置Viewport时特意倒置了宽和高,并在最后对摄像机进行了扭转。

AR根本概念

AR最根本的概念就是将虚拟的计算机图形和真实情况浇忧⒛技巧。该技巧有很多种实现方法。

  • 应用2D或者3D图形装潢人脸,常见于一些相机和视频类App,重要应用人脸辨认追踪迹巧。

  • 基于标记的3D模型放置,比如基于AR的故事书,阴阳师的现世呼唤。标记可所以简单的黑框担保的标记,也可所以一张复杂图片的特点灯揭捉?练数据。如不雅你感兴趣可以前去ARToolKit,这是一个开源的AR框架,重要用于基于标记的AR。最出色ARToolkit6 Beta了,不知道有没有新的功能开放。

  • 追踪真实情况的特点点,计算真实摄像机在真实情况的地位。所谓特点点,就是图片中灰度变更比较激烈的地位,所以想要更精准稳定的计算,就须要真实情况的色彩变更比较丰富。ARKit就是应用这种道理进行摄像机定位的。

世界追踪(WorldTracking)

经由过程追踪真实世界的特点点,计算真实摄像机地位并应用到3D世界的虚拟摄像机是AR实现中最重要的部分。计算结不雅的精确性直接影响到衬着出来的结不雅。ARKit应用ARSession来治理全部AR处理流程,包含摄像机地位的计算。

#pragma make - AR Control- (void)setupAR {    if (@available(iOS 11.0, *)) {        self.arSession = [ARSession new];        self.arSession.delegate = self;    }}- (void)runAR {    if (@available(iOS 11.0, *)) {        ARWorldTrackingSessionConfiguration *config = [ARWorldTrackingSessionConfiguration new];        config.planeDetection = ARPlaneDetectionHorizontal;        [self.arSession runWithConfiguration:config];    }}- (void)pauseAR {    if (@available(iOS 11.0, *)) {        [self.arSession pause];    }}

ARHitTestResultTypeEstimatedHorizontalPlane,非精准方法计算出来竽暌闺重力垂直的平面。

  • 应用ARSession的方法很简单,初始化,设置delegate,开启ARSession须要传入一个设备ARWorldTrackingSessionConfiguration,ARWorldTrackingSessionConfiguration代表AR体系会追踪真实世界的特点点,计算摄像机地位。苹不雅今后也有可能会出ARMarkerTrackingSessionConfiguration之类用来辨认追踪标记的设备吧。ARSession开启后会启动相机,并且会经由过程传感器感知手机地位。借用WWDC中的一张图。

    ARSession综合相机捕获的视频流和地位信息生成一系列持续的ARFrame。

    每个ARFrame包含了大年夜相机捕获的图片,相机地位相干信息等。在这个办法里我们须要绘制相机捕获的图片。根据相机地位等信息绘制3D物体等。

    平面检测

    ARKit供给了另一个很酷的功能,检测真实世界的平面,并供给一个ARPlaneAnchor对象描述平面的地位,大年夜小,偏向等信息。

    - (void)runAR {    if (@available(iOS 11.0, *)) {        ARWorldTrackingSessionConfiguration *config = [ARWorldTrackingSessionConfiguration new];        config.planeDetection = ARPlaneDetectionHorizontal;        [self.arSession runWithConfiguration:config];    }}

    膳绫擎的config.planeDetection = ARPlaneDetectionHorizontal;设置了检测平面的类型是程度。不过今朝也就只有章一?选项可以选。如不雅ARKit检测到了平面,会经由过程delegate中的办法- (void)session:(ARSession *)session didAddAnchors:(NSArray *)anchors供给数据给你。你可以断定ARAnchor是不是ARPlaneAnchor来断定是否检测到了平面。ARAnchor用来表示3D物体在真实情况的地位。你只要保持你的3D物体和ARAnchor的3D变换同步就能实现AR效不雅了。

    Hit Test

    Hit Test可以让你便利的在检测到的平面上放置物体。当你点击屏幕时,应用Hit Test可以检测出你点击的地位有哪些平面,并且供给ARAnchor用于设置放置物体的地位。

    [frame hitTest:CGPointMake(0.5, 0.5) types:ARHitTestResultTypeExistingPlane];

    应用ARFrame的hitTest办法,第一个传入的点取值范围大年夜(0,0)到(1,1),第二个参数代表可以检测哪些对象。可以检测到的对象如下。

    • ARHitTestResultTypeFeaturePoint,根据距离比来的特点点检测出来的持续外面。

    • - (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame {...}

      本文所用的代码在 https://github.com/SquarePants1991/OpenGLESLearn.git的ARKit分支中。

      ARHitTestResultTypeExistingPlaneUsingExtent, 已经检测出来的平面,检测时推敲平面本身的大年夜小。


        推荐阅读

        如何配置并集成iRedMail服务到Samba4 AD DC中

      在本教程中,将进修若何修改供给邮件办事的 iRedMail 重要守护过程,响应地,Postfix 用于邮件传输,Dovecot 将邮件传送到帐户邮箱,以便将它们集成到 Samba4 AD 域控制器中。请求在 Cen>>>详细阅读


      本文标题:如何实现模拟人类视觉注意力的循环神经网络?

      地址:http://www.17bianji.com/lsqh/36092.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)