损失函数和svm 松弛变量量η有什么关系吗

&figure&&img src=&https://pic3.zhimg.com/v2-4fd16ce4ccb6e0cf3fb55_b.jpg& data-rawwidth=&935& data-rawheight=&123& class=&origin_image zh-lightbox-thumb& width=&935& data-original=&https://pic3.zhimg.com/v2-4fd16ce4ccb6e0cf3fb55_r.jpg&&&/figure&&h2&&b&前言&/b&&/h2&&p&CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷。在2D图像的目标检测上,不少学术界提出的框架已经投入商用。但是,具体落实到自动驾驶、机器人这类应用场景上时,2D场景下的目标检测对于3D真实世界的场景描述依然不够。&/p&&p&目标检测问题实际上包含了两个任务:定位和分类。3D目标检测在定位这一任务上的目标是返回3D bounding boxes,而其需要的信息除了2D的RGB图像以外,还包含了与之对应的深度信息Depth Map:&/p&&p&&b&RGB-D&/b& = &b&普通的RGB三通道彩色图像&/b& + &b&Depth Map&/b&&/p&&p&在3D计算机图形中,Depth Map(深度图)是包含与视点的场景对象的表面的距离有关的信息的图像或图像通道。其中,Depth Map 类似于灰度图像,只是它的每个像素值是传感器距离物体的实际距离。通常RGB图像和Depth图像是配准的,因而像素点之间具有一对一的对应关系。&/p&&p&本文以时间为主轴,带你速览自2014年以来的,在RGB-D图像上进行目标检测的典型论文。&/p&&h2&&b&论文&/b&&/h2&&p&&b&2014年:Learning Rich Features from RGB-D Images for Object Detection and Segmentation(ECCV'14)&/b&&/p&&p&本文是rbg大神在berkeley时的作品。”基于CNN已经在图像分类、对象检测、语义分割、细粒度分类上表现出了相当的优势,不少工作已经将CNN引入在RGB-D图像上的视觉任务上。这些工作中一部分直接采用4-channel的图像来进行语义分割任务(not object detetction),一部分只是在非常理想的环境下对小物体进行目标检测。“&/p&&p&作者的方法是在2D目标检测框架R-CNN的基础上,增加对Depth Map进行利用的module,总体结构如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fd8d7c92d8beda4936cfaa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&852& data-rawheight=&287& class=&origin_image zh-lightbox-thumb& width=&852& data-original=&https://pic3.zhimg.com/v2-fd8d7c92d8beda4936cfaa_r.jpg&&&/figure&&p&(1)基于RGB图像和Depth Map,检测图像中的轮廓,并生成2.5D的proposals(从overview上可以看到,所谓的2.5D实则包括目标每个像素的视差、高度、倾斜角)&/p&&p&(2)利用CNN进行特征提取,这里的网络包括两个:Depth CNN学习深度图上的特征,RGB CNN学习2D图像上的特征,最后利用SVM进行分类。&/p&&p&在对Depth Map的利用上,论文所述方法并没有直接利用CNN对其进行学习,而是encode the depth image with three channels at each pixel: horizontal disparity(水平视差), height above ground(高度), and the angle the pixel’s local surface normal makes with the inferred gravity direction(相对于重力的倾斜角).&/p&&p&&b&2015年:3D Object Proposals for Accurate Object Class Detection(NIPS'15)&/b&&/p&&p&来自Tsing Hua陈晓智大神的作品(大神在同时也是CVPR17: &a href=&http://link.zhihu.com/?target=http%3A//scholar.google.de/scholar%3Fq%3DMulti-View%2Object%2520Detection%2520Network%2520for%2520Autonomous%2520Driving& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Multi-View 3D Object Detection Network for Autonomous Driving&/a&的一作,给跪了)。&/p&&p&作者首先指出,目前最先进的RCNN方法在自动驾驶数据集KITTI上表现不好,原因之一在于KITTI上的测试图像中,包含许多小型物体、遮挡、阴影,使得实际包含了object的proposals被认为是不包含的。此外,KITTI对区域的精细程度要求很高(overlap),而目前的大多数区域推荐都基于强度和纹理的grouping super pixels,它们无法获得高质量的proposals。&/p&&p&文章面向自动驾驶场景,提出了一种新的object proposal方法。对于每一个3D bounding box(记为&b&y&/b&),将其用一个元组来表示(x, y, z, θ, c, t),(x, y, z) 表示 3D box的中心,θ 表示其方位角,c代表object是哪一类,t代表相应的3d box模板集合。&/p&&p&以&b&x&/b&代表点云,&b&y&/b&代表proposal,作者认为y应该有以下特性:&/p&&ul&&li&包含点云的高密度区域&/li&&li&不能与free space重叠&/li&&li&点云不应该垂直延伸在3d box之外&/li&&li&box附近的点云高度应该比之低&/li&&/ul&&p&基于这些特性,作者列出了能量方程,目标为最小化E(x,y),采用ICML2004上一篇文章中所述的structured SVM进行训练。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-eafc46da960da0e18d70e325edc205e8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&55& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-eafc46da960da0e18d70e325edc205e8_r.jpg&&&/figure&&p&文章中所述方法的效果、代码、数据:&a href=&http://link.zhihu.com/?target=http%3A//www.cs.toronto.edu/objprop3d/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3D Object Proposals for Accurate Object Class Detection&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-a72d2d4ed24fc04b9c0e0e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&788& data-rawheight=&477& class=&origin_image zh-lightbox-thumb& width=&788& data-original=&https://pic3.zhimg.com/v2-a72d2d4ed24fc04b9c0e0e_r.jpg&&&/figure&&p&&b&2016年:Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images(CVPR'16)&/b&&/p&&p&文章来自普林斯顿大学,提出的方法为Faster R-CNN的3D版本,侧重于indoor scene下的object detection。&/p&&p&目前关于3D目标检测任务的方法,有采用2D方法来结合深度图的,也有在3D空间内进行检测的。这不禁让作者发问:&b&which representation is better for 3D amodal object detection, 2D or 3D?&/b&接着他指出,目前2D方法表现更优异的原因,可能是因为其CNN模型更为powerful(well-designed&pre-trained with ImageNet),而不是由于其2D表达。&/p&&p&作者的方法是设计名为Deep Sliding Shapes的3D CNN,输入3D的立体场景,输出3D bounding boxes,由此提出了Multi-scale 3D RPN(Region Proposal Network):&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f4ef8d5b8aeaa27a68ed25_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&604& data-rawheight=&383& class=&origin_image zh-lightbox-thumb& width=&604& data-original=&https://pic2.zhimg.com/v2-f4ef8d5b8aeaa27a68ed25_r.jpg&&&/figure&&p&类似于Faster R-CNN中的RPN网络,对于每一个滑动窗口,作者定义N=19种anchor boxes:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c58e4dce84d26caeafc7e3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&482& data-rawheight=&221& class=&origin_image zh-lightbox-thumb& width=&482& data-original=&https://pic4.zhimg.com/v2-c58e4dce84d26caeafc7e3_r.jpg&&&/figure&&p&而后,为了检测大小不一的目标,作者增加了多尺度的检测手段。具体来说,在不同的卷积层上进行滑窗。这里的滑窗是3D sliding window,因为整个网络结构就是接收3Dinput的。为了精修区域,作者改进了bbox regression,提出3D box regression:一个3D box可以由中心坐标[cx, cy, cz],长宽高[s1, s2, s3]来表示,最后要得到的是6个偏移量:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9274bffdde37b8dcc653e2d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&509& data-rawheight=&46& class=&origin_image zh-lightbox-thumb& width=&509& data-original=&https://pic2.zhimg.com/v2-9274bffdde37b8dcc653e2d_r.jpg&&&/figure&&p&而后采用与2D box regression同样的smooth L1 loss即可。&/p&&p&补充:如何从Depth Map得到3D Input?&/p&&p&&b&Encoding 3D Representation&/b&:不同于Depth RCNN的disparity+height+angle 表达,作者在这里采用了TSDF方法,可以看如下的引用:&/p&&blockquote&KinectFusion在世界坐标系中定义了一个立方体,并把该立方体按照一定的分辨率切割成小立方体(voxel)。以图8上为例所示,图中定义了一个3x3x3米的立方体,并把立方体分为不同分辨率的小立方体网格。也就是说,这个大立方体限制了经过扫描重建的模型的体积。然后,KinectFusion使用了一种称为“截断有符号距离函数”(truncated signed distance function,简称TSDF)的方法来更新每个小网格中的一个数值,该数值代表了该网格到模型表面的最近距离,也称为TSDF值(图8下)。对于每个网格,在每一帧都会更新并记录TSDF的值,然后再通过TSDF值还原出重建模型。例如,通过图8下两幅图中的网格的TSDF数值分布,我们可以很快还原出模型表面的形状和位置。这种方法通常被称为基于体数据的方法(Volumetric-based method)。该方法的核心思想是,通过不断更新并“融合”(fusion)TSDF这种类型的测量值,我们能够 越来越接近所需要的真实值。&/blockquote&&figure&&img src=&https://pic2.zhimg.com/v2-bbdfad81f715ed5fa4e99ad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&564& data-rawheight=&369& class=&origin_image zh-lightbox-thumb& width=&564& data-original=&https://pic2.zhimg.com/v2-bbdfad81f715ed5fa4e99ad_r.jpg&&&/figure&&p&&b&2017:Learning Cross-Modal Deep Representations for Robust Pedestrian Detection(CVPR'17)&/b&&/p&&p&这篇文章虽然是针对于专门的pedestrians detection任务,但是其做法是很具有启发性的,所以也贴在这里。&/p&&p&作者指出,“行人检测任务在深度学习的帮助下已经取得重大突破,同时新型传感器(如thermal and depth cameras)也为解决不利照明和遮挡提供了新的机会。但是,现有监控系统绝大多数仍然采用传统的RGB传感器,因此在illumination variation, shadows, and low&br&external light仍然十分具有挑战。”&/p&&p&在针对于照明条件不利环境下的行人检测任务,文章描述了一种依赖于cross-modality learning framework的学习框架,由两个网络组成:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-452eaa234a89f9fdbbae16a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&506& data-rawheight=&413& class=&origin_image zh-lightbox-thumb& width=&506& data-original=&https://pic3.zhimg.com/v2-452eaa234a89f9fdbbae16a_r.jpg&&&/figure&&p&(1)Region Reconstruction Network (RRN) &/p&&figure&&img src=&https://pic4.zhimg.com/v2-8f2cca2bd485e32f1eef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&849& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&849& data-original=&https://pic4.zhimg.com/v2-8f2cca2bd485e32f1eef_r.jpg&&&/figure&&p&RRN用于学习在RGB图像和thermal image间的映射,而后学习得到的模型就可以用于依据RGB生成thermal image。RRN接收RGB+行人proposals,在ROI Pooling后加了重建网络(全卷积)。这里的重建网络不重建整幅图像的thermal image,而是只对行人区域进行重建。&/p&&p&(2)Multi-Scale Detection Network (MSDN)&/p&&p&MSDN利用RRN学习的cross-modal representations来进行检测。其包含两个子网(Sub-Net A和Sub-Net B),其中Sub-Net B中的参数从RRN中迁移而来,最后的fc分别做multi-task:bbox regression和softmax。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0c258c7d1baf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&837& data-rawheight=&288& class=&origin_image zh-lightbox-thumb& width=&837& data-original=&https://pic4.zhimg.com/v2-0c258c7d1baf_r.jpg&&&/figure&&p&&b&2017:Amodal Detection of 3D Objects: Inferring 3D Bounding Boxes from 2D Ones in RGB-Depth Images(CVPR'17)&/b&&/p&&p&来自坦普尔大学的文章。作者在这里与2016的Deep Sliding Shapes思路不同,重新回到2.5D方法来进行3D目标检测。所谓2.5D方法,实则就是从RGB-D上提取出合适的表达,而后building models to convert 2D results to 3D space。“虽然利用三维几何特征检测前景光明,但在实践中,重建的三维形状往往不完整,由于遮挡、反射等原因而含有各种噪声。”&/p&&p&整个系统的overview如下,其基于Fast R-CNN实现:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0513f76fab8e54a4af24e0bdae38f24f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1019& data-rawheight=&434& class=&origin_image zh-lightbox-thumb& width=&1019& data-original=&https://pic4.zhimg.com/v2-0513f76fab8e54a4af24e0bdae38f24f_r.jpg&&&/figure&&p&对于每一个2D的proposal(这里关于2D proposals的方法就是用的Depth R-CNN中的方法),由分类结果和depth information来初始化一个3D bounding box(图中黄色的虚线框),而后也是用一个3d box regression来进行区域精修。重点关注3D box proposal and regression:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d4d4d5630631bed99dab5edcac77f9fd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&508& data-rawheight=&367& class=&origin_image zh-lightbox-thumb& width=&508& data-original=&https://pic2.zhimg.com/v2-d4d4d5630631bed99dab5edcac77f9fd_r.jpg&&&/figure&&p&图中是3D box proposal的一个实例。每一个3d box由向量[xcam, ycam, zcam, l, w, h, θ].来表达,[xcam, ycam, zcam]表中心位置,[l, w, h]表尺寸,θ∈ [-π/2, π/2]表示方位角,即图中黄色的箭头与z轴形成的夹角。在初始化的时候,关于尺寸是由某一类物体的类别来进行确定的。最后输出7个调整量[δx, δy, δz, δl, δw, δh, δθ],利用Smooth L1 Loss作为损失函数。&/p&&h2&&b&结语&/b&&/h2&&p&3D目标检测对于自动驾驶与机器人等领域意义重大。本文以时间为序,重点关注和分析了基于RGB-D上的3D Object Detection方法。从Depth R-CNN到3D Faster-RCNN,似乎始终基于2D的目标检测框架在跟循改进。期待在未来,将会有更为优美的方法出现。&/p&&p&感谢您的阅读,文中的遗漏与错误,恳请批评指正。&/p&&h2&&b&参考文献&/b&&/h2&&p&[1] Gupta S, Girshick R, Arbeláez P, et al. Learning Rich Features from RGB-D Images for Object Detection and Segmentation[C]// European Conference on Computer Vision. Springer, Cham, .&/p&&p&[2] Chen X, Kundu K, Zhu Y, et al. 3D object proposals for accurate object class detection[C]// International Conference on Neural Information Processing Systems. MIT Press, .&/p&&p&[3] Song S, Xiao J. Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images[J]. ):808-816.&/p&&p&[4] Deng Z, Latecki L J. Amodal Detection of 3D Objects: Inferring 3D Bounding Boxes from 2D Ones in RGB-Depth Images[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, .&/p&&p&[5] Xu D, Ouyang W, Ricci E, et al. Learning Cross-Modal Deep Representations for Robust Pedestrian Detection[J]. 2017.&/p&
前言CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷。在2D图像的目标检测上,不少学术界提出的框架已经投入商用。但是,具体落实到自动驾驶、机器人这类应用场景上时,2D场景下的目标检测对于3D真…
&figure&&img src=&https://pic2.zhimg.com/v2-9f6f1df47b2e3d50ccb44e7fd1d278fd_b.jpg& data-rawwidth=&1000& data-rawheight=&553& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-9f6f1df47b2e3d50ccb44e7fd1d278fd_r.jpg&&&/figure&&p&在&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/playlist%3Flist%3DPLIivdWyY5sqJxnwJhe3etaK7utrBiPBQ2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这些视频&/a&中,你已经看到过我在屏幕上直播写的 Python 代码以及这些代码的运行结果了。那么今天我就来跟大家分享一下我是如何实现,以及一些相关的实用技巧。&/p&&blockquote&这是一个系列视频/文章 「AI Adventures」中的第十四篇,由 Google 的开发技术推广工程师 Yufeng Guo 主讲,用通俗易懂的语言帮助你了解人工智能和机器学习。在这一系列视频/文章中,我们将一起探秘人工智能的世界,共同品味艺术、探索科学以及掌握机器学习的工具。&br&第一篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习是什么?&/a&&br&第二篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习「七步走」&/a&&br&第三篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&用评估器给花卉分类&/a&&br&第四篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&弹性伸缩的云端托管服务&/a&&br&第五篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&通过 TensorBoard 将模型可视化&/a&&br&第六篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&通过深度神经网络再识评估器&/a&&br&第七篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&云端训练模型的大数据解决方案&/a&&br&第八篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&跟着 Google Research 体验自然语言生成&/a&&br&第九篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&云上的机器学习引擎&/a&&br&第十篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&使用 MNIST 数据集训练模型&/a&&br&第十一篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习工程师用 Python 开发环境的最佳实践&/a&&br&第十二篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习之前,让「大熊猫」先尝一尝数据的味道&/a&&br&第十三篇:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习大杀器:爆米花般火爆的 Kaggle Kernels&/a&&br&所有的内容和视频都会首发在「&a href=&https://zhuanlan.zhihu.com/tensorflowcn& class=&internal&&机智如你&/a&」专栏,目标是发布最新与谷歌相关的机器学习、TensorFlow 相关内容,如果你有任何问题,也欢迎在留言区向我们提出反馈。&/blockquote&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/036608& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic7.zhimg.com/v2-aff256ee402ca5.jpg& data-lens-id=&036608&&
&img class=&thumbnail& src=&https://pic7.zhimg.com/v2-aff256ee402ca5.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/036608&/span&
&p&我在屏幕上直接运行 Python 代码是通过一个叫 &a href=&https://link.zhihu.com/?target=http%3A//jupyter.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jupyter&/a& 的 Python 包来实现的。Jupyter 是基于 IPython 项目开发的,它让开发者能够在浏览器中感受交互式的 Python 编程体验。但是它能做的可远不止这些,无论是 bash 命令、Magic 魔法操作符还是一些插件,Jupyter 都极大改善了你的 Python 编程体验。&/p&&p&如果你已经是 Jupyter 的老手了,希望我这些分享能改善你的工作流程且提供一些技巧贴士。加入你还没用过,也不需要担心,我们一起探讨吧。&/p&&p&「译者注」文末对 Jupyter 和 IPython 有一定的补充,广大读者可以参阅。&/p&&hr&&h2&安装和启动&/h2&&p&安装 Jupyter 最简单的方式是执行 &code&pip install jupyter&/code& 命令(当然,如果你用了一些自带这些包的 Python 发行版,忽略这个最简单)。一定要首先搞定 Python 环境,我们一起来操作一下。&/p&&p&当在本地运行 Jupyter 时,你将通过浏览器访问运行在本机的一个 Web 服务器,常常是在 8888 端口上的。在当前的工作目录执行 &code&jupyter notebook&/code& 就能运行起来了。通常 Jupyter 会在启动后自动打开浏览器访问 Web 页面,不过假如你的没有这样,则可以在浏览器手动输入 &code&localhost:8888&/code& 访问。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8c68fcf38acd57ff9b127f0b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&500& data-thumbnail=&https://pic4.zhimg.com/v2-8c68fcf38acd57ff9b127f0b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/v2-8c68fcf38acd57ff9b127f0b_r.jpg&&&/figure&&p&如果环境中没有你需要打开的 notebook,那么请通过点击「New」并选择对应的版本(取决于你环境变量中的 Python 版本)。Jupyter 伸缩性极强,能够提供多种语言和文件格式支持,而目前我们只用得上 Python。&/p&&h2&在 Jupyter Notebooks 中执行代码&/h2&&p&开启新的 notebook 之后,我们就可以在空格当中写一些 Python 代码,然后按下 &code&ctrl+enter&/code& 来执行。我们可以在其中编写和运行通常那些在 Python 脚本中使用的代码。其差别就是我们可以立即执行并看到结果。&/p&&p&注意观察当我们按下 &code&ctrl+enter&/code& 的时候,空格左侧的方括号会出现一个星号,当执行结束之后星号会编程表示当前执行的操作在整个会话中的次序(从 1 开始)。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/563584& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic3.zhimg.com/80/v2-33a848f444d265a357fd4a_b.jpg& data-lens-id=&563584&&
&img class=&thumbnail& src=&https://pic3.zhimg.com/80/v2-33a848f444d265a357fd4a_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/563584&/span&
&p&最后一行命令的执行结果会被输出到界面中作为此格操作的输出信息,但这个特性在当你的最后一句是将某个值存于变量中时不会生效。举个例子,我将 tensorflow 包引入,并将其版本与一个字符串连接,最终输出如下(注意我没有使用 print 命令)。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e20c0c5ca5b81e051fb2f5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-e20c0c5ca5b81e051fb2f5_r.jpg&&&/figure&&p&当然,我也能用 print() 函数来实现。不过这一特性在摆弄代码、观察结果方面十分有用。&/p&&h2&Shift-Tab 组合键&/h2&&p&Jupyter notebook 的另一个非常赞的特性是:你可以通过按下 &code&shift-tab&/code& 组合键来显示当前函数的说明摘要。这使得你可以很轻松而准确地进行函数调用,而不需要每次都在完整说明文档中苦苦寻找。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/845696& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-536fbd4c2afe26adb6fff31_b.jpg& data-lens-id=&845696&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-536fbd4c2afe26adb6fff31_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/845696&/span&
&p&此特性对于你的自定义函数仍然有效。所以说文档写得好,麻烦也减少!&/p&&h2&输出的内容&/h2&&p&当你输出了大量的内容时,你可以通过单击输出区域左侧的面板来讲它们收拢,这样就可以通过滚动来查看了。如果双击,则会直接将所有的输出都收起来,不再展示。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/510784& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic3.zhimg.com/80/v2-8ab6f98ecdb22_b.jpg& data-lens-id=&510784&&
&img class=&thumbnail& src=&https://pic3.zhimg.com/80/v2-8ab6f98ecdb22_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/510784&/span&
&h2&格子++&/h2&&p&一个空格其实已经很棒了,但我们的确需要更多的格子。此时,点击工具栏的加号就能创建一个新的格子,而其他的还有一些命令可以创建新的格子。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3fc151b0b5c6f6fde4ef15d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&625& data-thumbnail=&https://pic3.zhimg.com/v2-3fc151b0b5c6f6fde4ef15d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/v2-3fc151b0b5c6f6fde4ef15d_r.jpg&&&/figure&&p&如果你点击 &code&shift+enter&/code&,当前格子当中的内容会被执行,然后后面的格子会高亮显示。如果后面没有新的格子了,那么 Jupyter 会帮你创建一个新格子。另一方面,如果你想在给定的格子后面立即创建新的一格,则可以使用 &code&alt-enter&/code& 组合键执行当前格子的内容,然后在后面插入一个新的格子。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/730048& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/80/v2-ecc3be2e03f65dedc5c4_b.jpg& data-lens-id=&730048&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/80/v2-ecc3be2e03f65dedc5c4_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/730048&/span&
&h2&诶,你要用 Markdown?&/h2&&p&可能目前我没提到的最赞的特性就是 Markdown 语法支持了。我对 Jupyter notebooks 的第一印象是它能够同时写代码和描述代码的特性。Markdown 的富语义特性使之为研究者、讲师等角色能够轻松简洁交流、传播其观点。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-16beffbeba780416adcca_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&625& data-thumbnail=&https://pic2.zhimg.com/v2-16beffbeba780416adcca_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-16beffbeba780416adcca_r.jpg&&&/figure&&p&并且最重要的是,它让「曾经的你」向「将来的你」讲解某些代码具体是做什么的,这比起用评论块的方式不知道高到哪里去了。&/p&&h2&Jupyter Magics 魔法操作符&/h2&&p&有时候,我只想快速查看某个训练或评估流程占据了多少时间。一种简便的方式是在空格的一开始使用 %%time 魔法操作符,一旦当前格子执行完成,它将会输出执行的耗时。虽说它不像原子时那么精准,但却是一种花最小力气就能了解到大致情况的好办法。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e57f86e96fb798aab811e59df5afc568_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-e57f86e96fb798aab811e59df5afc568_r.jpg&&&/figure&&p&如果你想要在 notebook 中执行命令行语句,最简单的方式是在语句最前面加上一个感叹号。这种便利在执行一次性语句时尤为明显。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-34c2a984e02b4cbd370410_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&222& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic2.zhimg.com/v2-34c2a984e02b4cbd370410_r.jpg&&&/figure&&p&假如你要执行的是一段命令,那么在格子最前面使用 %%bash 魔法操作符就能将整个格子的内容解释成 bash 脚本了。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a246f1bf21d223ce06caed_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1000& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic1.zhimg.com/v2-a246f1bf21d223ce06caed_r.jpg&&&/figure&&p&这一特性的典型应用场景是 &a href=&https://link.zhihu.com/?target=https%3A//towardsdatascience.com/visualizing-your-model-using-tensorboard-796ebb73e98d& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorBoard&/a&。通常来说,启动 TensorBoard 需要开启新的命令行窗口,然后在其中执行相关的指令。但是如果你仅仅开启了看一下就要关掉,则可以放心在 Jupyter notebooks 的 bash 格子当中执行。&/p&&p&另外,你肯定不会忘记执行这个命令,因为它就存在于你的 Jupyter notebooks 当中。注意,这种方式会使得 TensorBoard 进程占据 Jupyter,也就是你此时不能再运行别的命令。要想停下该进程,只需点击工具栏上的 interrupt 按钮即可,这样你又回到了正常的操作模式中。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/665920& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic3.zhimg.com/80/v2-a27a65d4f31ad0e1bab40a_b.jpg& data-lens-id=&665920&&
&img class=&thumbnail& src=&https://pic3.zhimg.com/80/v2-a27a65d4f31ad0e1bab40a_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/665920&/span&
&p&好啦,这些就是我特别喜欢的 Jupyter 特性啦。当然,这些并不是对其功能的全面描述、讲解,我只是提供了一些我最常用的而已。还有很多很多的内容,值得你到&a href=&https://link.zhihu.com/?target=http%3A//jupyter.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&官网&/a&去探索。&/p&&hr&&p&感谢阅读本期 &a href=&https://link.zhihu.com/?target=https%3A//goo.gl/UC5usG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cloud AI Adventures&/a& 分享。如果你喜欢这个系列,请点个赞。如果你想学到更多关于机器学习的知识,请关注我或者&a href=&https://link.zhihu.com/?target=https%3A//medium.com/%40yufengg& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& Yufeng G 的 Medium&/a& 亦或是关注《&a href=&https://zhuanlan.zhihu.com/tensorflowcn& class=&internal&&机智如你&/a&》专栏或是 &a href=&https://link.zhihu.com/?target=https%3A//goo.gl/S0AS51& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YouTube 频道&/a&。赶紧关注,不要错过更多精彩!&/p&&p&P.S. 你觉得文中的 gif 怎么样?它们是否有帮助?或者影响了你阅读的节奏?它们简明扼要了还是让你更加疑惑了?请告诉我!&/p&&hr&&p&▏原文出处:&a href=&https://link.zhihu.com/?target=https%3A//towardsdatascience.com/interactive-data-science-with-jupyter-notebooks-457ab4928b08& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Medium - Interactive Data Science with Jupyter Notebooks&/a&&/p&&p&▏封面来源:&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/2eCHD6f_phE%3Flist%3DPLIivdWyY5sqJxnwJhe3etaK7utrBiPBQ2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YouTube 视频缩略图&/a&&/p&&p&▏视频出处:&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/2eCHD6f_phE%3Flist%3DPLIivdWyY5sqJxnwJhe3etaK7utrBiPBQ2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YouTube - Jupyter Tips and Tricks&/a&&/p&&p&▏字幕翻译:&a href=&https://zhuanlan.zhihu.com/gdsub& class=&internal&&谷创字幕组&/a&&/p&&p&▏文章编辑: &a class=&member_mention& href=&https://www.zhihu.com/people/bdf& data-hash=&bdf& data-hovercard=&p$b$bdf&&@杨栋&/a&&/p&&hr&&p&「尾注1」Yufeng 的原文中使用了很多精美的 gif 图像,但是由于知乎的限制,无法将 gif 上传,必须采用替代办法。此前,我们两次将 gif 上传到了 CDN 中,在原文中提供 gif 中某一帧截图,并后附 CDN 中 gif 的链接地址。本期文章我们尝试将 gif 转为了小段的视频,除了减少了流量消耗,还希望能够给大家更简便、快捷的阅读体验。请将你宝贵的反馈信息反馈给我们,以便我们今后使用最佳方案创作,谢谢。&/p&&p&「尾注2」Jupyter 的特性在文中已经介绍了不少了,这里进行一个简单概括、补充。Jupyter 本身是基于 IPython 项目开发的,所以继承了来自 IPython 的大量特性。当你使用 Jupyter notebooks 功能时就像是在使用一款集成了开发、文档、调试于一体的 Machine Learning IDE。文中的格子是 Jupyter 的最小可执行单位,每一段代码都会在其中执行。&/p&
在中,你已经看到过我在屏幕上直播写的 Python 代码以及这些代码的运行结果了。那么今天我就来跟大家分享一下我是如何实现,以及一些相关的实用技巧。这是一个系列视频/文章 「AI Adventures」中的第十四篇,由 Google 的开发技术推广工程师 Yufeng…
&p&这个GitHub 库提供了所有机器学习问题的当前最优结果,并尽最大努力保证该库是最新的。如果你发现了一个数据集的当前最优结果,请提交并更新该 GitHub 项目。 &/p&&blockquote&项目地址:&u&&a href=&http://link.zhihu.com/?target=https%3A//github.com//RedditSota/state-of-the-art-result-for-machine-learning-problems& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com//RedditSota/&/span&&span class=&invisible&&state-of-the-art-result-for-machine-learning-problems&/span&&span class=&ellipsis&&&/span&&/a&&/u&&/blockquote&&p&&br&&/p&&p&&b&监督学习&/b&&/p&&p&&b&NLP&/b& &/p&&p&&b&1、语言建模&/b&&/p&&p&以下展示了语言建模方面当前顶尖的研究成果及它们在不同数据集上的性能。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c1c9ee614_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&265& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-c1c9ee614_r.jpg&&&/figure&&blockquote&论文:DYNAMIC EVALUATION OF NEURAL SEQUENCE MODELS &br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&2.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/benkrause/dynamic-evaluation& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/benkrause/dy&/span&&span class=&invisible&&namic-evaluation&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&blockquote&论文:Regularizing and Optimizing LSTM Language Models&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&2.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/salesforce/awd-lstm-lm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/salesforce/a&/span&&span class=&invisible&&wd-lstm-lm&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&blockquote&论文:FRATERNAL DROPOUT&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&6.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/kondiz/fraternal-dropout& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/kondiz/frate&/span&&span class=&invisible&&rnal-dropout&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&blockquote&论文:Factorization tricks for LSTM networks&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&2.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/okuchaiev/f-lm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/okuchaiev/f-&/span&&span class=&invisible&&lm&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&在语言建模(Language Modelling)的四个顶尖研究成果中,我们看到 Yoshua Bengio 等人的研究 FRATERNAL DROPOUT 在 PTB 和 WikiText-2 数据集上都实现了当前最好的结果。在该篇论文中,Bengio 等人提出了一项叫做 fraternal dropout 的技术,他们首先用不同的 dropout mask 对两个一样的 RNN(参数共享)进行训练,并最小化它们 (pre-softmax) 预测的差异。这样正则项会促进 RNN 的表征对 dropout mask 具有不变性。Bengio 等人证明了他们的正则项上界为线性期望的 droupout 目标,即可以解决 droupout 因训练和推断阶段上出现的差异而导致的 Gap。&/p&&p&此外,Ben Krause 等人提出使用动态评估来提升神经序列模型的性能。Salesforce 的 Stephen Merity 等人提交的论文 LSTM 语言模型中的正则化和最优化从词层面的语言建模和调查基于 LSTM 模型中的正则化和最优化等具体问题出发研究更高效的语言建模方法。英伟达的 Oleksii Kuchaiev 等人提出了两个带映射的 LSTM 修正单元(LSTMP),并借此减少参数的数量和提升训练的速度。&/p&&p&&b&2、机器翻译&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ccb4ffba904_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&200& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-ccb4ffba904_r.jpg&&&/figure&&blockquote&论文:Attention Is All You Need &br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&2&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/jadore801120/attention-is-all-you-need-pytorch& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/jadore801120&/span&&span class=&invisible&&/attention-is-all-you-need-pytorch&/span&&span class=&ellipsis&&&/span&&/a&、
&a href=&http://link.zhihu.com/?target=https%3A//github.com/tensorflow/tensor2tensor& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/tensorflow/t&/span&&span class=&invisible&&ensor2tensor&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&blockquote&论文:NON-AUTOREGRESSIVE NEURAL MACHINE TRANSLATION&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//einstein.ai/static/images/pages/research/non-autoregressive-neural-mt.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&einstein.ai/static/imag&/span&&span class=&invisible&&es/pages/research/non-autoregressive-neural-mt.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&在机器翻译上,我们比较熟悉的就是谷歌大脑 Ashish Vaswani 等人关于注意力机制的研究,该模型在 WMT 2014 英法和英德数据集上都有十分不错的表现。该研究表明在编码器-解码器配置中,显性序列显性转导模型(dominant sequence transduction model)基于复杂的 RNN 或 CNN。表现最佳的模型也需通过注意力机制(attention mechanism)连接编码器和解码器。因此谷歌在该篇论文中提出了一种新型的简单网络架构——Transformer,它完全基于注意力机制,彻底放弃了循环和卷积。上图两项机器翻译任务的实验也表明这些模型的翻译质量不仅十分优秀,同时它们更能并行处理,因此这种模型所需的训练时间也能大大减少。这篇论文表明 Transformer 在其他任务上也泛化很好,能成功应用到有大量训练数据和有限训练数据的英语组别分析任务上。&/p&&p&除了这篇论文,Salesforce 和香港大学等研究者提出了能避免自回归(autoregressive)属性和并行产生输出的模型,这种模型在推断时能减少数个量级的延迟。该论文通过三个层面的训练策略展示了在 IWSLT 2016 英语-德语数据集上产生的大量性能提升,并且在 WMT2016 英语-罗马尼亚语上获得了当前顶尖的效果。&/p&&p&&b&3、文本分类&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-786a6a0f5154eee64ed90_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-786a6a0f5154eee64ed90_r.jpg&&&/figure&&blockquote&论文:Learning Structured Text Representations &br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&7&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&&br&&/p&&blockquote&论文:Attentive Convolution&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&9.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&爱丁堡大学的 Yang Liu 等人提出了学习结构化的文本表征,在这篇论文中,他们关注于在没有语篇解析或额外的标注资源下从数据中学习结构化的文本表征。虽然目前暂时还没有相应的实现代码,不过他们在 Yelp 数据集上准确度能达到 68.6。而另一篇带注意力的卷积提出了了一种 AttentiveConvNet,它通过卷积操作扩展了文本处理的视野。&/p&&p&&b&4、自然语言推理&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2eea245f6c584f5f92aae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&111& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-2eea245f6c584f5f92aae_r.jpg&&&/figure&&blockquote&论文:DiSAN: Directional Self-Attention Network for RNN/CNN-free Language Understanding&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&6.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&悉尼科技大学和华盛顿大学的研究者提出了 DiSAN,即一种为 RNN/CNN-free 语言理解的定向自注意力网络。该研究提出了一种新颖的注意力机制,即输入序列中每个元素之间的注意力是定向和多维的,这是一种对应特征相连接的注意力。该研究在斯坦福自然语言推理(SNLI)数据集上获得了 51.72% 的准确度。&/p&&p&&b&5、问题回答&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c5b25b53ce16e2b07167e0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&108& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-c5b25b53ce16e2b07167e0_r.jpg&&&/figure&&blockquote&论文:Interactive AoA Reader+ (ensemble)&br&数据集地址:&a href=&http://link.zhihu.com/?target=https%3A//rajpurkar.github.io/SQuAD-explorer/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&rajpurkar.github.io/SQu&/span&&span class=&invisible&&AD-explorer/&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&斯坦福问答数据集(SQuAD)是一个新型阅读理解数据集,该数据集中的问答是基于维基百科并由众包的方式完成的。如下 GitHub 地址给出的是该数据集和评估该数据集的模型。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-b49aedc0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&594& data-rawheight=&110& class=&origin_image zh-lightbox-thumb& width=&594& data-original=&https://pic1.zhimg.com/v2-b49aedc0_r.jpg&&&/figure&&p&&br&&/p&&p&&b&6、命名实体识别&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-48b94d6f7ef66caeceb7c4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&84& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-48b94d6f7ef66caeceb7c4_r.jpg&&&/figure&&blockquote&论文:Named Entity Recognition in Twitter using Images and Text&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&7.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&波恩大学 Diego Esteves 等研究者在推特上使用图像和文本进行命名实体识别,在该论文中,他们提出了一种新颖的多层级架构,该架构并不依赖于任何具体语言学的资源或解码规则。他们的新型模型在 Ritter 数据集上 F-measure 实现了 0.59 的优秀表现。&/p&&p&&b&计算机视觉&/b&&/p&&p&&b&分类&/b& &/p&&figure&&img src=&https://pic3.zhimg.com/v2-3af48dd34be_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-3af48dd34be_r.jpg&&&/figure&&p&&br&&/p&&blockquote&论文:Dynamic Routing Between Capsules&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&9.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/gram-ai/capsule-networks& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/gram-ai/caps&/span&&span class=&invisible&&ule-networks&/span&&span class=&ellipsis&&&/span&&/a&、&a href=&http://link.zhihu.com/?target=https%3A//github.com/naturomics/CapsNet-Tensorflow& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/naturomics/C&/span&&span class=&invisible&&apsNet-Tensorflow&/span&&span class=&ellipsis&&&/span&&/a&、&a href=&http://link.zhihu.com/?target=https%3A//github.com/XifengGuo/CapsNet-Keras& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/XifengGuo/Ca&/span&&span class=&invisible&&psNet-Keras&/span&&span class=&ellipsis&&&/span&&/a&、&a href=&http://link.zhihu.com/?target=https%3A//github.com/soskek/dynamic_routing_between_capsules& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/soskek/dynam&/span&&span class=&invisible&&ic_routing_between_capsules&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&blockquote&论文:High-Performance Neural Networks for Visual Object Classification&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&在计算机视觉领域中,最近比较流行的论文就是 Geoffrey Hinton 等人提出的 Capsule 动态路由方法,机器之心也曾详细地解析了该论文与实现。在论文中,Geoffrey Hinton 介绍 Capsule 为:「Capsule 是一组神经元,其输入输出向量表示特定实体类型的实例化参数(即特定物体、概念实体等出现的概率与某些属性)。我们使用输入输出向量的长度表征实体存在的概率,向量的方向表示实例化参数(即实体的某些图形属性)。同一层级的 capsule 通过变换矩阵对更高级别的 capsule 的实例化参数进行预测。当多个预测一致时(本论文使用动态路由使预测一致),更高级别的 capsule 将变得活跃。」&/p&&p&此外,Jurgen Schmidhuber 等人提出了一种视觉目标分类的高性能神经网络,在该论文中他们提出了一种卷积神经网络变体的快速全可参数化的 GPU 实现。虽然该论文是在 2011 年提出的,不过它在 NORB 数据集上还是有非常不错的效果。&/p&&p&&b&语音&/b&&/p&&p&&b&ASR&/b& &/p&&figure&&img src=&https://pic4.zhimg.com/v2-fc35e4eec0b25e39acbc9b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-fc35e4eec0b25e39acbc9b_r.jpg&&&/figure&&blockquote&论文:THE MICROSOFT 2017 CONVERSATIONAL SPEECH RECOGNITION SYSTEM&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&3.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&本文介绍了微软对话语音识别系统的 2017 版本。它在原有的模型架构设置中添加了一个 CNN-BLSTM 声学模型,并且在系统结合之后还添加了一个混合网络再打分的步骤。结果这一系统在数据集 Switchboard Hub5'00 上取得了 5.1% 的词错率。&/p&&p&&b&半监督学习&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-39f71a496ddcf155ab8ff3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&204& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-39f71a496ddcf155ab8ff3_r.jpg&&&/figure&&blockquote&论文:DISTRIBUTIONAL SMOOTHING WITH VIRTUAL ADVERSARIAL TRAINING&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&7.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/takerum/vat& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/takerum/vat&/span&&span class=&invisible&&&/span&&/a&&br&论文:Virtual Adversarial Training: a Regularization Method for Supervised and Semi-supervised Learning&br&论文地址:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&6.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:未公布&/blockquote&&p&第一篇论文中,日本京都大学提出了局部分布式平滑度(LDS),一个关于统计模型平滑度的新理念。它可被用作正则化从而提升模型分布的平滑度。该方法不仅在 MNIST 数据集上解决有监督和半监督学习任务时表现优异,而且在 SVHN 和 NORB 数据上,Test Error 分别取得了 24.63 和 9.88 的分值。以上证明了该方法在半监督学习任务上的表现明显优于当前最佳结果。&/p&&p&第二篇论文提出了一种基于虚拟对抗损失的新正则化方法:输出分布的局部平滑度的新测量手段。由于平滑度模型的指示是虚拟对抗的,所以这一方法又被称为虚拟对抗训练(VAT)。VAT 的计算成本相对较低。本文实验在多个基准数据集上把 VAT 应用到监督和半监督学习,并在 MNIST 数据上取得了 Test Error 1.27 的优异表现。&/p&&p&&b&无监督学习&/b&&/p&&p&&b&计算机视觉&/b&&/p&&p&&b&生成模型&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d1ae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&112& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-d1ae_r.jpg&&&/figure&&blockquote&论文:PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION&br&论文地址:&a href=&http://link.zhihu.com/?target=http%3A//research.nvidia.com/sites/default/files/publications/karras2017gan-paper-v2.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&research.nvidia.com/sit&/span&&span class=&invisible&&es/default/files/publications/karras2017gan-paper-v2.pdf&/span&&span class=&ellipsis&&&/span&&/a&&br&实现地址:&a href=&http://link.zhihu.com/?target=https%3A//github.com/tkarras/progressive_growing_of_gans& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/tkarras/prog&/span&&span class=&invisible&&ressive_growing_of_gans&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&br&&/p&&p&本文中描述了一种新的 GAN 训练方法,其核心思想是同时逐渐地增加生成器与鉴别器的能力:从低分辨率开始,添加持续建模精细细节的新层作为训练过程。这不仅加速了训练,而且更加稳定,获得质量超出预想的图像。本文同时提出了一种增加生成图像变体的简便方法,并在 CIFAR10 上取得了 8.80 的得分。另外的一个额外贡献是创建 CELEBA 数据集的更高质量版本。&/p&&hr&&p&入门机器学习的必修课,日晚8点开课,4大天王亲授,参团只需199!&/p&&a href=&http://link.zhihu.com/?target=http%3A//www.julyedu.com/course/getDetail/103& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-84cbd3effcca_180x120.jpg& data-image-width=&500& data-image-height=&360& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器学习中的数学第二期 「在1期上强力改进,参团仅199」&/a&&figure&&img src=&https://pic1.zhimg.com/v2-002dffe29e6ec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic1.zhimg.com/v2-002dffe29e6ec_r.jpg&&&/figure&&p&&/p&
这个GitHub 库提供了所有机器学习问题的当前最优结果,并尽最大努力保证该库是最新的。如果你发现了一个数据集的当前最优结果,请提交并更新该 GitHub 项目。 项目地址: 监督学习NLP 1、语言建模以下展示了语言建模方面当前顶尖的研究…
&p&&b&微信跳一跳已经落伍了,最近不是出了一个头脑王者的小游戏么,今天用Python编写一个脚本,调用百度API,进行自动检索答题,自动识别出现频率最多的答案,然后列出并选择。&/b&&/p&&p&首先,我们要认识到,什么是脚本&/p&&p&脚本的本质是什么?&/p&&p&它就是一段代码,只不过让对应的解释器执行即可;和它相对应的是编译型代码,需要编译成可执行文件或者目标文件,在指定平台上运行或者使用。&/p&&p&在我所了解的脚本中,最喜欢哪个?&/p&&p&对于windows下批处理,linux shell, mac shell, python, perl, VBScript这些脚本中,最喜欢的就是python.原因在于,它从一方面很像c语言,简洁,很多时候代码很易懂易写;另一方面很像c++,支持面向对象的处理。&/p&&p&好对与脚本有了一个认识以后开始说我们的脚本&/p&&p&今天写的代码大概有八十多行吧&/p&&p&导入模块&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-a3388aeefb286e8bf4bc372d9c0c8ffe_b.jpg& data-size=&normal& data-rawwidth=&533& data-rawheight=&117& class=&origin_image zh-lightbox-thumb& width=&533& data-original=&https://pic3.zhimg.com/v2-a3388aeefb286e8bf4bc372d9c0c8ffe_r.jpg&&&figcaption&Python学习群:&/figcaption&&/figure&&p&其中我们今天会调用百度的AIP模块,是免费的,大家可以自行百度去下载模块,剩下的模块,都可以通过&/p&&p&pip install 模块名称,下载,如果pip下载出错的话可以上Python官网,下载Python专用的模块,然后进行解压,这里小编就不做介绍了,不懂的可以看小编以前的文章,都有写&/p&&p&首先来构建我们的主函数&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-441ccc138d129dd2801ecb_b.jpg& data-size=&normal& data-rawwidth=&599& data-rawheight=&220& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&https://pic4.zhimg.com/v2-441ccc138d129dd2801ecb_r.jpg&&&figcaption&Python学习群:&/figcaption&&/figure&&p&调用百度的接口(第三方库也行)&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-cbad1b6c1dc50ac7cd32d8de_b.jpg& data-size=&normal& data-rawwidth=&640& data-rawheight=&184& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-cbad1b6c1dc50ac7cd32d8de_r.jpg&&&figcaption&Python学习群:&/figcaption&&/figure&&p&小编打马赛克的地方是小编申请的百度的一个接口,你们也可以去申请一个,是免费的不懂的可以留言问我&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-35fe836a3aee793ed071b19_b.jpg& data-size=&normal& data-rawwidth=&640& data-rawheight=&303& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-35fe836a3aee793ed071b19_r.jpg&&&figcaption&Python学习群:&/figcaption&&/figure&&p&修饰图片&/p&&p&接下来设置我们图片的大小,把不必要的地方删除,并且进行合并&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a2c659da24ece902ce7f_b.jpg& data-size=&normal& data-rawwidth=&640& data-rawheight=&753& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-a2c659da24ece902ce7f_r.jpg&&&figcaption&Python学习群:&/figcaption&&/figure&&p&我们需要的是红色框框选取出来的,所以需要知道每个框框的左上角和右下角的像素点这里小编就不解释了,需要用到画图工具&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-6b03bb7bfec84c5ac6be6dac_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&346& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-6b03bb7bfec84c5ac6be6dac_r.jpg&&&/figure&&p&&br&&/p&&p&嗯,大概的源码就是这些,是不是很简单啊,短短几十行就能用Python写出一个自动答题的脚本,还是很方便的!&b&Python学习群:&/b&&/p&
微信跳一跳已经落伍了,最近不是出了一个头脑王者的小游戏么,今天用Python编写一个脚本,调用百度API,进行自动检索答题,自动识别出现频率最多的答案,然后列出并选择。首先,我们要认识到,什么是脚本脚本的本质是什么?它就是一段代码,只不过让对应的…
&figure&&img src=&https://pic1.zhimg.com/v2-5ac49ca1bd59_b.jpg& data-rawwidth=&2400& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2400& data-original=&https://pic1.zhimg.com/v2-5ac49ca1bd59_r.jpg&&&/figure&&p&选自PyimageSearch&/p&&p&机器之心编译&/p&&p&参与:路雪、李泽南&/p&&p&&br&&/p&&blockquote&使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能。&/blockquote&&p&&br&&/p&&p&在本文中我们将学习如何扩展原有的目标检测项目,使用深度学习和 OpenCV 将应用范围扩展到实时视频流和视频文件中。这个任务会通过 VideoStream 类来完成。&/p&&ul&&li&深度学习目标检测教程:&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//object-detection-with-deep-learning-and-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2017/&/span&&span class=&invisible&&09/11/object-detection-with-deep-learning-and-opencv/&/span&&span class=&ellipsis&&&/span&&/a&&br&&/li&&li&VideoStream 类教程:&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2016/&/span&&span class=&invisible&&01/04/unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/&/span&&span class=&ellipsis&&&/span&&/a&&/li&&/ul&&p&现在,我们将开始把深度学习+目标检测的代码应用于视频流中,同时测量 FPS 处理速度。&/p&&p&&br&&/p&&h2&使用深度学习和 OpenCV 进行视频目标检测&/h2&&p&为了构建基于 OpenCV 深度学习的实时目标检测器,我们需要有效地接入摄像头/视频流,并将目标检测应用到每一帧里。&/p&&p&首先,我们打开一个新文件,将其命名为 real_time_object_detection.py,随后加入以下代码:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-409d290eaa4e75372cac_b.jpg& data-rawwidth=&640& data-rawheight=&150& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-409d290eaa4e75372cac_r.jpg&&&/figure&&p&我们从第 2-8 行开始导入封包。在此之前,你需要 imutils 和 OpenCV 3.3。在系统设置上,你只需要以默认设置安装 OpenCV 即可(同时确保你遵循了所有 Python 虚拟环境命令)。&/p&&p&Note:请确保自己下载和安装的是 OpenCV 3.3(或更新版本)和 OpenCV-contrib 版本(适用于 OpenCV 3.3),以保证其中包含有深度神经网络模块。&/p&&p&下面,我们将解析这些命令行参数:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-bcacfef765e25bba112bbfed_b.jpg& data-rawwidth=&640& data-rawheight=&168& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-bcacfef765e25bba112bbfed_r.jpg&&&/figure&&p&与此前的目标检测项目相比,我们不需要图像参数,因为在这里我们处理的是视频流和视频——除了以下参数保持不变:&/p&&ul&&li&--prototxt:Caffe prototxt 文件路径。&/li&&li&--model:预训练模型的路径。&/li&&li&--confidence:过滤弱检测的最小概率阈值,默认值为 20%。&/li&&/ul&&p&随后,我们初始化类列表和颜色集:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f572a4c68a153ea7e43a50be2e0c31ce_b.jpg& data-rawwidth=&640& data-rawheight=&132& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-f572a4c68a153ea7e43a50be2e0c31ce_r.jpg&&&/figure&&p&在第 22-26 行,我们初始化 CLASS 标签,和相应的随机 COLORS。有关这些类的详细信息(以及网络的训练方式),请参考:&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//object-detection-with-deep-learning-and-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2017/&/span&&span class=&invisible&&09/11/object-detection-with-deep-learning-and-opencv/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&现在,我们加载自己的模型,并设置自己的视频流:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-07fa3cac96f8e0ec_b.jpg& data-rawwidth=&640& data-rawheight=&184& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-07fa3cac96f8e0ec_r.jpg&&&/figure&&p&我们加载自己的序列化模型,提供对自己的 prototxt 和模型文件的引用(第 30 行),可以看到在 OpenCV 3.3 中,这非常简单。&/p&&p&下一步,我们初始化视频流(来源可以是视频文件或摄像头)。首先,我们启动 VideoStream(第 35 行),随后等待相机启动(第 36 行),最后开始每秒帧数计算(第 37 行)。VideoStream 和 FPS 类是 imutils 包的一部分。&/p&&p&现在,让我们遍历每一帧(如果你对速度要求很高,也可以跳过一些帧):&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1b857fb25bbdbfdc997f6f_b.jpg& data-rawwidth=&640& data-rawheight=&256& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-1b857fb25bbdbfdc997f6f_r.jpg&&&/figure&&p&首先,我们从视频流中读取一帧(第 43 行),随后调整它的大小(第 44 行)。由于我们随后会需要宽度和高度,所以我们在第 47 行上进行抓取。随后将 frame 转换为一个有 dnn 模块的 blob(第 48 行)。&/p&&p&现在,我们设置 blob 为神经网络的输入(第 52 行),通过 net 传递输入(第 53 行),这给我们提供了 detections。&/p&&p&这时,我们已经在输入帧中检测到了目标,现在是时候看看置信度的值,以判断我们能否在目标周围绘制边界框和标签了:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bde89fd9bdecd77abf34285c94fdf56f_b.jpg& data-rawwidth=&640& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-bde89fd9bdecd77abf34285c94fdf56f_r.jpg&&&/figure&&p&我们首先在 detections 内循环,记住一个图像中可以检测到多个目标。我们还需要检查每次检测的置信度(即概率)。如果置信度足够高(高于阈值),那么我们将在终端展示预测,并以文本和彩色边界框的形式对图像作出预测。让我们逐行来看一下:&/p&&p&在 detections 内循环,首先我们提取 confidence 值(第 59 行)。&/p&&p&如果 confidence 高于最低阈值(第 63 行),那么我们提取类标签索引(第 67 行),并计算检测到的目标的坐标(第 68 行)。&/p&&p&然后,我们提取边界框的 (x, y) 坐标(第 69 行),之后将用于绘制矩形和文本。&/p&&p&我们构建一个文本 label,包含 CLASS 名称和 confidence(第 72、73 行)。&/p&&p&我们还要使用类颜色和之前提取的 (x, y) 坐标在物体周围绘制彩色矩形(第 74、75 行)。&/p&&p&通常,我们希望标签出现在矩形上方,但是如果没有空间,我们将在矩形顶部稍下的位置展示标签(第 76 行)。&/p&&p&最后,我们使用刚才计算出的 y 值将彩色文本置于帧上(第 77、78 行)。&/p&&p&帧捕捉循环剩余的步骤还包括:(1)展示帧;(2)检查 quit 键;(3)更新 fps 计数器:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c0aa6f64edab5ce13c0564_b.jpg& data-rawwidth=&640& data-rawheight=&186& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-c0aa6f64edab5ce13c0564_r.jpg&&&/figure&&p&上述代码块简单明了,首先我们展示帧(第 81 行),然后找到特定按键(第 82 行),同时检查「q」键(代表「quit」)是否按下。如果已经按下,则我们退出帧捕捉循环(第 85、86 行)。最后更新 fps 计数器(第 89 行)。&/p&&p&如果我们退出了循环(「q」键或视频流结束),我们还要处理这些:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9ec0d086e43d7cde0909_b.jpg& data-rawwidth=&640& data-rawheight=&154& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-9ec0d086e43d7cde0909_r.jpg&&&/figure&&p&当我们跳出(exit)循环,fps 计数器 停止(第 92 行),每秒帧数的信息向终端输出(第 93、94 行)。&/p&&p&我们关闭窗口(第 97 行),然后停止视频流(第 98 行)。&/p&&p&如果你到了这一步,那就可以做好准备用自己的网络摄像头试试看它是如何工作的了。我们来看下一部分。&/p&&p&&br&&/p&&h2&实时深度学习目标检测的结果&/h2&&p&为了实时深度学习目标检测器正常运行,确保你使用本指南「Downloads」部分中的示例代码和预训练的卷积神经网络。(请打开原文链接,进入「Downloads」部分,输入自己的邮箱地址,获取所需代码和其他资料。)&/p&&p&打开终端,执行下列命令:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a343c9bf81d1950d01fca76b27d16584_b.jpg& data-rawwidth=&640& data-rawheight=&136& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-a343c9bf81d1950d01fca76b27d16584_r.jpg&&&/figure&&p&如果 OpenCV 能够访问你的摄像头,你可以看到带有检测到的目标的输出视频帧。我对样本视频使用了深度学习目标检测,结果如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-64cecb0d6ac685cdc42b_b.jpg& data-rawwidth=&200& data-rawheight=&122& data-thumbnail=&https://pic4.zhimg.com/v2-64cecb0d6ac685cdc42b_b.jpg& class=&content_image& width=&200&&&/figure&&p&&br&&/p&&p&图 1:使用深度学习和 OpenCV + Python 进行实时目标检测的短片。&/p&&p&注意深度学习目标检测器不仅能够检测到人,还能检测到人坐着的沙发和旁边的椅子——所有都是实时检测到的!&/p&&p&&br&&/p&&h2&总结&/h2&&p&今天的博客中,我们学习了如何使用深度学习 + OpenCV + 视频流来执行实时目标检测。我们通过下列两个教程完成了这一目标:&/p&&p&1. 使用深度学习和 OpenCV 进行目标检测(&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//object-detection-with-deep-learning-and-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2017/&/span&&span class=&invisible&&09/11/object-detection-with-deep-learning-and-opencv/&/span&&span class=&ellipsis&&&/span&&/a&)&/p&&p&2. 在 OpenCV 上进行高效、线程化的视频流(&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2016/&/span&&span class=&invisible&&01/04/unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/&/span&&span class=&ellipsis&&&/span&&/a&)&/p&&p&最终结果是基于深度学习的目标检测器可以处理 6-8 个 FPS 的视频(当然,这也取决于你的系统速度)。&/p&&p&你还可以通过以下途径进一步提升速度:&/p&&p&1. 跳过帧。&/p&&p&2. 使用 MobileNet 的不同变体(速度更快,但是准确率下降)。&/p&&p&3. 使用 SqueezeNet 的量子化变体(我还未对此进行测试,但是我想应该会更快,因为它的网络足迹更小)。&/p&&p&原文链接:&a href=&https://link.zhihu.com/?target=http%3A//www.pyimagesearch.com//real-time-object-detection-with-deep-learning-and-opencv/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pyimagesearch.com/2017/&/span&&span class=&invisible&&09/18/real-time-object-detection-with-deep-learning-and-opencv/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&本文为机器之心编译,转载请联系本公众号获得授权。&/p&
选自PyimageSearch机器之心编译参与:路雪、李泽南 使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能。 在本文中我们将学习如何扩展原有的目标检测项目,使…
&figure&&img src=&https://pic4.zhimg.com/v2-4555bedb8c639dd7ff788_b.jpg& data-rawwidth=&600& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-4555bedb8c639dd7ff788_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-4555bedb8c639dd7ff788_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-4555bedb8c639dd7ff788_r.jpg&&&/figure&&p&&br&&/p&&p&给你10万张图片,让你找出与其中某张图片最为近似的10张,你会怎么做?不要轻言放弃,也不用一张张浏览。使用Python,你也可以轻松搞定这个任务。&/p&&h2&疑问&/h2&&p&《&a href=&http://link.zhihu.com/?target=https%3A//www.jianshu.com/p/0db025ebf0a1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何用Python和深度神经网络识别图像?&/a&》一文写完后,我收到了不少读者的反馈。其中一个很普遍的疑问是:&/p&&blockquote&识别相同或相似的图像,有什么好的方法么?&br&&/blockquote&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bf08cb4a61eeaf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&678& data-rawheight=&426& class=&origin_image zh-lightbox-thumb& width=&678& data-original=&https://pic2.zhimg.com/v2-bf08cb4a61eeaf_r.jpg&&&/figure&&p&&br&&/p&&p&我虽然乐于帮助读者解决问题,但实话实说,一开始不太理解这种需求。&/p&&p&我文章里的样例图片(哆啦a梦和瓦力),都是从网络搜集来的。如果你需要从网上找到跟某张图片近似的图像,可以使用Google的“以图搜图”功能啊。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-075d776bb85f6637fcfe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-075d776bb85f6637fcfe_r.jpg&&&/figure&&p&&br&&/p&&p&很快,我突然醒悟过来。&/p&&p&这种需求,往往不是为了从互联网上大海捞针,寻找近似图片。而是在一个&b&私有&/b&海量图片集合中,找到近似图像。&/p&&p&这种图片集合,也许是你团队的科研数据。例如你研究鸟类。某天浏览野外拍摄设备传回来的图像时,突然发现一个新奇品种。&/p&&p&&br

我要回帖

更多关于 spss变量间函数关系 的文章

 

随机推荐