这些实用的软件你的Ubuntu都装了吗?

Ubuntu自带的输入法不太好用,我常常选择使用搜狗输入法作为默认输入法。下载deb格式的安装包,然后按照如下教程安装、配置即可使用:

https://pinyin.sogou.com/linux/help.php

shutter 是一款截图软件,它其实还有另一个名字—— GScrot 。但目前的新版本使用的是shutter这个名字。使用Shutter,我们可以截取包括选定区域、全屏幕、窗口、窗口内的控件甚至网页的图像。

输入如下命令进行安装:

如果是 *Ubuntu18及以上版本 *的话,还需要安装如下几个依赖:

  • libgoocanvas-common_1.0.0-1_all.deb
  • libgoocanvas3_1.0.0-1_amd64.deb
  • libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb

下载链接分别为:

Ubuntu默认的web浏览器为火狐浏览器,大家用不习惯的话可以装其它的。因为我使用360浏览器的时间比较长,很多收藏都是保存在360浏览器云端,所以我一般都把360浏览器作为我的主浏览器,方便收藏夹同步。

从360浏览器下载得到安装包,直接安装即可。

Ubuntu自带的终端虽然很强大,但也有其它很好用的终端软件。比如我常常使用 Terminator

Terminator 是一款 Linux 终端模拟器,提供了你的默认的终端应用不支持的多个特性。它提供了在一个窗口创建多个终端的功能,以加快你的工作速度。

这个终端我在工作中经常使用,比如运行多个程序时,需要实时查看各进程的log输出情况就比较方便了:

除此之外,这个终端还具有logger保存插件,打开这个插件即可很方便地记录我们终端输出的log信息:

除了多窗口外,它也允许你修改其它特性,例如字体、字体颜色、背景色等等。

Terminator 在Ubuntu下使用如下命令安装:

常用快捷键:

Kcalc 是一个小巧的计算器。

Kcalc提供了如下功能:

  • 三角函数和逻辑操作
  • 剪切来粘贴去.
  • 结果堆栈使得你可以记忆以前的结果.
  • 可配置UI

我日常写代码用的是vscode。

vscode作为一款强大的编辑器,我每天都在使用。vscode大家应该都知道,就不多介绍了。除此之外,Ubuntu也是可以安装source insight的。

在window下,我也常常使用source insight来阅读代码。Ubuntu下要使用source insight,需要先装wine。具体的方法大家可参考:

https://blog.csdn.net/u011171361/article/details/89786161

我司很多算法工程师习惯用Qt Creator来写代码。 Qt Creator 是跨平台的集成开发环境(IDE),Qt Creator可在Windows、Linux和macOS桌面操作系统上运行。

下载链接:

https://download.qt.io/new_archive/qt/

Meld 是一位读者之前推荐给我的一款对比工具,我试用之后觉得很好用也一直在用着。

Meld是一个跨平台地、可视化地、对比及合并工具。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。

Meld特点:

  • 文件和目录的双向和三向比较。
  • 文件比较随着你的输入而更新。
  • 自动合并模式和对变更块的操作有助于使合并更容易。
  • 可视化让你更容易比较你的文件。
  • 支持Git, Bazaar, Mercurial, Subversion等。

输入如下命令即可安装:

Meld很简单、易用且强大,大家可以自行去体验体验。

除此之外,meld还能与git等版本控制系统结合使用,之前也有分享:代码对比工具,不止于beyond compare

上面提到了对比工具,自然也少不了bcompare了。bcompare大家应该也都用过,不做过多介绍。

除此之外,之前也有分享其它对比工具:代码对比工具,不止于beyond compare,但不都是跨平台的。

好记性不如烂笔头,我们平时学习、工作中的一些总结、思考都有必要记录下来,一来便于自己日后回顾,二来也可以分享到网络上帮助有需要的人。我平时以markdown的格式来写文档。 Typora 是一款好用极简免费的跨平台Markdown编辑器。

我平时在学习、工作中的一些总结我都会用Typora记录成md文档。今天的这篇常用软件分享也是用Typora来写的。

Typora在Ubuntu下的安装方式:

之前也有介绍过一些绘图工具:分享一些好用的绘图工具。在Ubuntu下,我习惯使用 draw.io 来绘图。

draw.io 是一个跨平台的绘图神器。这个强大的绘图软件可以用来画思维导图、UML图、流程图等等。当然也可以画数据结构作业的图了,最重要的是完全免费、开源的,并且相当好用,在多个平台提供桌面版,也可以直接在浏览器在线使用。

基于 windows的draw.io离线版部署 流程我们之前也有在分享一些好用的绘图工具文章中介绍过了。

在Ubuntu中,为了方便使用,我们也使用draw.io桌面版。draw.io桌面版有两种安装包,一种是Appimage包,另一种是deb包。其中,使用Appimage包的话,还需要进行一些配置。为了方便,我们使用deb包,下载完安装即可使用。

draw.io.deb包下载地址:

我们可以使用思维导图软件来梳理一些知识点或者一些想法。我选用的是 XMind

XMind 是一款实用、易用、高效的商业思维软件,强调软件的可扩展、跨平台、稳定性和性能,致力于帮助用户提高生产率。

从xmind官网下载安装包:

https://www.xmind.net/download/

xmind的完整功能需要付费使用,但试用模式也基本能满足我们日常的使用了。

以上就是本次的软件分享。

除此之外,大家还用过哪些好用的软件呢?欢迎留言讨论

分享3个免费AI绘画工具,一键生成图片

今天分享3个AI绘画工具,免费好用!

小伙伴们速度收藏起来吧。

豆包

豆包是一个免费的AI智能工具。

可以和你聊天解惑,帮你写文案,辅助学习、编程等。

在网页端直接访问,或者下载手机app后。

找到一个叫AI图片生成的工具,输入提示词,即可一键生成图片。

支持多种风格,生成速度也很快。

除此之外,这里还有高情商回复、短视频灵感、Excel函数大全、重生模拟器、恋爱大师、爆款文案、朋友圈文案助手、英语口语陪练、测智商、MBTI性格测试专家、答案之书等非常好用有趣的工具。

讯飞星火

讯飞星火是一个既能聊天对话,又能写作编程,还拥有绘画等技能的AI智能助手。

这里有个叫绘画大师的工具,可以一键创作。

输入你想创作的主题,这个工具可以立即为你生成各种风格的图片。

漫画风格、赛博朋克、水墨画风格、3D卡通、二次元等通通不在话下。

此外,这里还有7000+智能工具,可以帮你搞定年终总结、汇报PPT、润色简历、写代码、写文案、制作旅游攻略、讲故事等。

你可以直接访问网页端,也可以下载手机app体验。

智谱清言

智谱清言是一个高效的学习办公AI工具。

这个工具基于中英双语大模型ChatGLM开发,具备通用问答、写作、学习、职场、编程、教育、公文、论文、生活辅助等能力。

这里有个AI画图工具,能够根据用户的需求,一键生成图片。

基于AI的图像视觉处理技术

计算机视觉是一门研究如何使机器”看“的科学,作为一个学科,它试图建立能够从图像或多维数据中获取”信息“的人工智能系统。

MTCNN是比较经典快速的人脸检测技术,它可实现两个任务:人脸检测与人脸关键点检测。这个过程由三个级联的轻量级CNN完成:PNet,RNet和Onet;图像数据先后经过这三个网络的处理,最终输出人脸检测和关键点检测结果。

技术思想及原理分析

本项目的一大技术亮点就是使用了级联卷积的思想,将复杂问题简单化,化整为零,逐一攻破,既减小了问题的难度、提高了模型训练效率,还为以后解决这一类问题提供了可参考的方法。项目中的级联思想、图像金字塔、IOU、NMS、图像坐标缩放及坐标反算等技术在后续的目标检测中仍然能够看到它们的身影。

应用场景及商业价值

本项目应用最为广泛的场景就是人脸检测,如果将本项目怒扩展,实际上是可以使用在任何单类多目标的检测项目上的。比如交通车辆检测、工厂生产零部件检测、农业农作物检测、商场人流量检测等等,但凡是同类别的目标,都能够检测。本项目的商业价值在于它的普适性,目标检测类项目的应用场景广泛,在AI行业实际落地应用最多,从而也使得其商业应用价值大大增加。下图为MTCNN的测试效果展示。

You Only Look Once”或“YOLO”是一个对象检测算法的名字,这是Redmon等人在2016年的一篇研究论文中命名的。YOLO实现了自动驾驶汽车等前沿技术中使用的实时对象检测。

技术思想及原理分析

YOLO的渊源应该从RCNN系列说起,比较早的多类别检测识别模型是RCNN系列,包含了RCNN、fast-RCNN以及faster-RCNN,但是RCNN系列都是两阶段的,就是先检测、再分类,这样虽然说提高了检测分类精度,但是却降低了速度,所以才有了后来的YOLO系列,YOLO系列使用了划分区域和设置建议框的方法,直接把检测和分类融合成了一个阶段,模型能够同时学习检测和分类,实现了真正的端到端的模式,使得模型大大减小,从而提高的模型使用效率。虽然最早的YOLO的精度上并不能和RCNN系列比,但是在YOLOV2以后,无论是在精度上还是在效率上都已经超越了RCNN系列。

YOLO将对象检测重新定义为一个回归问题。它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。

应用场景及商业价值

本项目和MTCNN最大的区别就是MTCNN为单类目标检测项目,而YOLO则为多类目标检测项目,而且YOLO不但能够检测目标,还能同时识别出所检测目标的类别,也就是说YOLO是同时可以检测和识别目标的,而MTCNN只能检测目标而不能识别目标,MTCNN要识别目标,则需要配上识别类模板,比如后面要介绍的center loss和arc loss等分类模型。YOLO的应用场景包括了MTCNN的应用场景,除此之外,YOLO还能够做多类别目标检测和识别,比如同时检测识别路上的车辆和人等。

center loss是一种损失函数,有效提高了人脸识别类别的辨识度。它来自ECCV2016的一篇论文《A Discriminative Feature Learning Approach for Deep Face Recognition》。

技术思想及原理分析

Center loss的出现是为了解决多分类损失函数softmax loss的缺点,softxmax loss分类的作用仅仅是把每个类别刚好分开,而不能拉开类别之间的距离,这会导致模型使用时,出现在类别边缘的样本点无法准确的分类。而center loss的作用是把每个类别内部的样本点聚集到一起,从而扩大了类别之间的距离,防止了样本点出现在类别边缘而无法准确分类的情况。值得注意的是center loss只一个辅助分类函数,必须要和softmax loss一起使用才有效果,单独使用是无法达到准确分类的效果的。

应用场景及商业价值

所有分类模型的损失函数作用都是分类,但是不同的损失函数,其分类效果也大不一样。比如softmax loss损失函数的作用是普通分类,也就是不同类别之间的分类;而center loss损失函数的作用是进行更精细化的分类,应用场景更适合同一类别内部的样本实例分类,比如人脸分类,车辆分类等,这些都是同一类别内部不同样本的分类。

Arc-SoftmaxLoss = Arc-Softmax + NLLLoss。softmax 是通过角度分类的,Arc-Softmax 加宽了角度间的分界线,从而达到加大类间距的目的。

技术思想及原理分析

Arc softmax loss又称arc face loss,是专门为人脸识别分类而设计的一种损失函数,其之前的版本有A-softmax loss、L-softmax loss、AM-softmax loss。和center loss不同的是,arc softmax loss是直接对softmax loss进行改进,通过增加不同类别之间的角度距离来使不同类别获得更好的分类效果。两者都是减小同一类别中边缘的样本点与中心样本点的距离,只是使用了不同的方法,center loss采用的直接是欧式距离的做法,在同一类别下的所有样本点之间计算距离,这使得硬件资源的开销过大,不适合超大样本的分类计算;而arc softmax loss不对单个样本点进行计算,采用的是对每两个类别的决策面进行扩压,使得两个类别的边界线越来越大,从而将每个类别内部的样本点挤压到了一起,达到了精细化分类的效果,在计算效率远远大于center loss。

应用场景及商业价值

虽然Arc softmax loss和center loss 他们的技术实现方法不一样,但是目的都是一样的,都是为了更精细化的分类。二者的应用场景也是一样的,主要应用方向是对于同一类别下的实例目标进行分类识别。人脸作为每个人的身份信息,其商业价值是非常巨大的,比如商家识别了客户脸部信息,建立准确的表,下次就可以针对性的销售。

1986 年Rumelhart 提出自动编码器的概念,并将其用于高维复杂数据处理,促进了神经网络的发展。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如y(i)=x(i) 。下图是一个自编码神经网络的示例:

技术思想及原理分析

AE模型(Auto Encoder)就是自编码模型,自编码的工作是让输入数据自己给自己编码,简单来说就是让输出等于输入!那么为什么要这么做呢?有必要让输出等于输入吗?如果输入是一张图片,那么直接复制一张图片作为输出不就行了吗?为什么要费尽心思让输出数据和输入数据一样呢?其实自编码的优点就体现于此,我们先来看看自编码的结构:

通过上面这张图,我们发现自编码是先把输入数据进行压缩成特征精髓,然后再对压缩过后的特征精髓进行解压缩还原,这是不是和我们的文件压缩和解压缩非常相似,其实二者原理是一样的,只不过文件压缩是无损压缩,而自编码模型对输入数据进行的是有损压缩,可以理解为自编码模型在压缩过程中,丢掉了部分不重要的特征,最终留下的是主要特征。在解压缩的时候,通过网络的学习,再去还原丢掉的那部分不重要的特征信息。由于神经网络是一个函数模拟器,最终网络是会学到一些特征,但是和丢掉的那部分特征又不完全一样,这就造成了网络输出的数据和输入数据很相似,但又不是完全一样的数据。

应用场景及商业价值

上面说了很多自编码的原理和过程,发现自编码虽然是尽量让输出等于输入,但是由于神经网络的极限逼近问题,其实最终得到的输出数据是和原输入非常接近但又不相同的数据,这正是自编码的目的,只有这样才能造成数据的多样性,通过自编码的这种多样性可以用来生成样本,扩大有效样本的数据量。自编码通过不同的变种可以做不同的事情,比如通过降噪自编码对图像进行去噪处理,可以得到一张更加清晰的图像。有的时候也可以通过自编码做一些比较有趣的小案例。

上图是对手写数字增加噪声后,使用降噪自编码得到的输出结果。可以看到降噪后输出的结果和原数据之间,除了在细节上展现出了不同之处,其数字基本是一致的。

VAE(Variational auto-encoder),变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成。

技术思想及原理分析

VAE是在AE(Auto Encoder)的基础上对输入的原数据的分布进行轻微扰动,使其产生多样性。具体做法就是让模型学习原数据的统计值μ和σ为标准正态分布的μ和σ,而不是学习数据本身,然后再从标准正态分布进行采样获得具体的数据值,最后将统计量和具体数据值结合,形成新的数据通过一个生成器学习原数据的分布。

应用场景及商业价值

VAE的应用场景主要体现在生成类方面,比如生成新的图像数据等,和AE模型相比,VAE由于加入了新的标准正态分布数据,使得生成数据更具多样性。下图展示了VAE对手写数字生成的一个效果。从图上可以看出,通过对输入数据的分布进行一定的扰动,得到的生成数据会发生一定变化,有的数据甚至改变了值。

Generative Adversarial Network,就是大家耳熟能详的 GAN,由 Ian Goodfellow 首先提出,在这两年更是深度学习中最热门的东西。所谓生成(generation),就是模型通过学习一些数据,然后生成类似的数据。比方说让机器看一些动物图片,然后自己来产生动物的图片。

技术思想及原理分析

生成式对抗神经网络GAN(Generative Adversarial Networks )是另一种非常有意思的生成类模型,和VAE不一样的是,GAN是通过一个判别器和生成器之间的模仿游戏来完成数据的生成的,其损失函数就是一个交叉熵,没有VAE的损失设计那么复杂,原理也更简单。而VAE是通过调整原数据的分布来生成新的数据的。相比较而言,GAN是直接学习原始数据的每部分特征分布,然后再组合每部分的分布数据合成的一张新图。由于直接学习数据本身的分布,训练好的GAN输出的图像更加清晰,细节部分表现更好,而VAE是对分布的方差进行一定扰动,也就是改变了细节,VAE更加关注全局,生成的图像细节没有GAN那么好。

应用场景及商业价值

GAN的应用比VAE更加广泛,GAN应用到一些场景上,比如图像风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,只要有一个的基准,直接加上判别器,剩下的就交给对抗训练了。由于GAN的变种非常多,比如CGAN、DCGAN、WGAN等,以及近两年的高清图像生成模型Style GAN等,所以基本上能看到的一些生成类模型都以GAN为主。

FCN(Fully Convolutional Networks)是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法。因为FCN网络中所有的层都是卷积层,故称为全卷积网络。

技术思想及原理分析

FCN顾名思义,即全卷积网络,作为使用深度学习做图像分割的先例,其象征意义更大于实际意义。FCN的主要特点是整个网络全部是由卷积网络构成的,不包括全连接。另外FCN采用的结构是以编解码网络为主干的瓶颈结构,加上了各层级之间的跳跃链接来获取局部细节信息。但由于模型设计简单,下采样部分和上采用部分并不对等,其分割效果并不理想。

应用场景及商业价值

分割类模型的应用场景比较广泛,目前最常见的应用范围涉及医疗影像分割、交通道路分割、GIS地理单位分割等领域。FCN是最早使用编解码瓶颈结构加跳跃连接来实现像素级分割的神经网络模型,虽然效果并不理想,但是对后来这一类模型的发展提供了可参考的价值,在后面的很多分割模型当中都可以看到FCN的影子。下图是FCN在不同的跳跃连接和步长下的分割效果,很明显,跳跃连接更多的分割也更精准一些。

Unet是一种比较年轻的神经网络,顾名思义,其结构为U形,在卷积层一层一层提取特征的同时将首尾对称的两层联系起来。

技术思想及原理分析

UNet可以看作是对FCN的一种优化,在FCN之后的很多基于神经网络的分割模型都可以看到FCN的影子,而UNet就是其中一个。UNet和FCN比起来,首先在模型结构上做到了完全对称,下采样部分的参数结构和上采用部分的参数结构几乎保持一致。另外在每个对应的下采样和上采样之间都使用了跳跃连接来增强细节信息的捕捉。在FCN中的add被改成了concatenate,让通道上的特征信息更加丰富。

应用场景及商业价值

由于UNet的分割效果更好,基于UNet的实际分割应用也更加广泛,UNet最早被设计出来的时候,就是为了做医学影像分割的。下图是UNet对眼球毛细血管的分割效果图,可以看出UNet对图像细节的分割效果是非常好的。

除了UNet之外,在UNet家族中还有UNet++,UNet3+,U²Net等等,其效果都要比原始的UNet更强。下面是N²Net的分割效果。可以看出U²Net的分割效果也是非常出色的。

DeepLab在图像分割领域中是另一个系列,目前已经有DeepLab v1、DeepLab v2、DeepLab v3和DeepLab v3+等版本。

技术思想及原理分析

和UNet系列比起来,主要差别是在对输入图像的处理和网络的结构上。DeepLab主要使用了图像金字塔、空洞卷积、SPP空间金字塔池化、可分离卷积等方法来提高分割的效果。其v1版本的网络比较简单,是在vgg16的基础上改动得到的,测试时使用全连接条件随机场(Fully Connected CRF)来提高分割精度。DeepLab通过空洞卷积获得图像特征金字塔来提取不同细节层次的信息,然后综合信息上采样还原图像,在上采样过程中,同样使用了跳跃连接来增强细节信息。

应用场景及商业价值

DeepLab的应用同UNet一样,都适合分割场景任务。

Mask R-CNN是一个小巧、灵活的通用对象实例分割框架(object instance segmentation)。它不仅可以对图像中的目标进行检测,还可以对每一个目标给出一个高质量的分割结果。

技术思想及原理分析

MaskRcnn是大神何凯明之作,集检测、分类、分割为一体的大模型。看名字就知道和Rcnn系列有一定联系,其实MaskRcnn就是在Rcnn的基础上增加了一个类似UNet的分割模型,Rcnn本来是做检测和分类的,MaskRcnn就是其基础上增加了一个分割功能。虽然MaskRcnn功能全面,但是不一定适合所有的场景,比如有的时候,你可能只需要做分割,仅此而已,这时候选择什么模型就需要认真思考了,不然参数过于冗余的模型会降低效率,而多余的功能对当前的任务可能并没有必要。

应用场景及商业价值

MaskRcnn融合了检测、分类、分割三种功能,其使用场景更多一些。比如一些需要对不同类别的实体进行分割分类的任务。

END

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。