一年时间学机器学习

img

大家都知道 AI 的发展前景非常好,例如 Google 成为了一家 AI First 的企业,越来越多的开发者开始关注并学习机器学习。因此,po 主特意找来这篇文章,分享下如何寻找适合入门者的在线学习资源,如 Udacity、Coursera、斯坦福大学课程等,并告诉大家如何避免其中的一些坑。

这篇文章来自 Per Harald Borgen,在 Medium 上获得了 2.7k 的赞。

这位大大最初在 Hacker News 上了解并对机器学习产生兴趣,然后花费了近一年时间,从入门机器学习到在实际项目中应用。期间利用 Udacity、Coursera、Kaggle竞赛、斯坦福大学课程等多种资源来进行学习和训练,也踩了不少坑。

下面是正文。

入门:Hacker News (黑客新闻)和 Udacity (优达学城)

我对机器学习的兴趣开始于 2014 年。那时候我刚开始在 Hacker News 上阅读有关它的一些文章。然后我就发现通过检测数据来教会机器做一些事情,这种想法十分有趣。当时的我甚至连一个专业的开发员都不算,只能算是一个业余编码员,但我还是想试一试。

所以我就开始看 Udacity 的监督学习课程的前几章,并同时开始阅读有关这方面的所有文章。

从0到1:我是如何在一年内无师自通机器学习的?

尽管没有掌握到实践技能,但我还是对机器学习的概念有了一定的认识。但由于我很少听大规模在线开放课程,所以并没有听完。

“成功”挂掉Coursera 机器学习课程

2015 年 1 月,我参加了伦敦的“创始人和程序员”训练营地(FAC bootcamp),想成为一名程序员。几周过后,我想学习如何码机器学习算法,于是我就和几个同伴成立了一个学习小组。每周二晚上,我们都会在 Coursera 上观看机器学习课程。

从0到1:我是如何在一年内无师自通机器学习的?

这个课程很棒,我也学到了很多。但是对于一个初学者来说,课程内容太难,因此我必须要一遍遍反复观看才能掌握要点。

与此同时, Octave 编码任务也同样十分具有挑战性,尤其是如果你不了解 Octave 的话。后来,因为难度太大,小伙伴们一个个都放弃了,再后来,我自己也最终放弃了。

事后,我意识到,我应该找一个适合我的课程来听。要么是用机器学习图书馆来进行编码任务,而不是从头创建算法,又或者至少是用我了解的编程语言。

对于新手来说,学习一门新的语言,并同时编码机器学习算法,实在是太难了。

如果我及时发现的话,我会选择 Udacity 的《机器学习介绍》这门课程,因为它更加简单并且采用 Python 和 Scikit 学法。用这种方法,我们可以尽快上手,获得自信,同时也更加有趣。


linux 批量将 webp 转换为 jpg

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!通过上一篇的方式,我找出了这种图格式是 webp。这一篇在之前的基础上,我完成了一个脚本将webp批量转换为 jpg 图片格式。

脚本下载地址:https://gist.github.com/kelvinblood/0350f50be92ccbd5036ded07980653ea

WebP是什么

目前对于JPEG、PNG、GIF等常用图片格式的优化已几乎达到极致,因此Google于2010年提出了一种新的图片压缩格式 — WebP,给图片的优化提供了新的可能。

WebP为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。

同时,谷歌于2014年提出了动态WebP,拓展WebP使其支持动图能力。动态WebP相比GIF支持更丰富的色彩,并且也占用更小空间,更适应移动网络的动图播放。

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都相当优秀、稳定和统一。

转换

参考文档:Linux: How to Convert WEBP to JPG

By Xah Lee. Date: 2016-10-11.

安装

# debian install webp
sudo apt-get install webp

安装后得到如下命令工具:

  • cwebp → WebP encoder tool
  • dwebp → WebP decoder tool
  • vwebp → WebP file viewer
  • webpmux → WebP muxing tool
  • gif2webp → Tool for converting GIF images to WebP

WebP -> JPG

先使用 dwebp 将 webp 转化为png格式。


linux 判断图片格式

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!这种图片在电脑浏览器显示无压力,但是到了手机上往往无法显示。于是这一篇介绍linux下如何识别图片格式。下一篇介绍如何批量转换图片格式。

知识点

文件头

文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。

当文件都使用二进制流作为传输时,需要制定一套规范,用来区分该文件到底是什么类型的。 文件头有很多个,这里就介绍几个跟图片相关的文件头。

  • JPEG (jpg),文件头:FFD8FF
  • PNG (png),文件头:89504E47
  • GIF (gif),文件头:47494638
  • RAR Archive (rar),文件头:52617221
  • WebP : 524946462A73010057454250

写脚本

针对这些文件头,写了这个脚本进行判断:

#!/bin/bash

if [ $# != 1 ]; then
  echo "parameter error"
else
  len3=`xxd -p -l 3 $1`
  len4=`xxd -p -l 4 $1`

  if [ $len3 == "ffd8ff" ]; then
    echo "The type is jpg"
  elif [ $len4 == "89504e47" ]; then
    echo "The type is png"
  elif [ $len4 == "47494638" ]; then
    echo "The type is gif"
  elif [ $len4 == "52494646" ]; then
    echo "The type is webp"
  elif [ $len4 == "52617221" ]; then
    echo "The type is rar"
  else
    echo "The type is others"
    echo $len4
  fi

fi

运行后即可查看图片格式,例如:

./judgeImage.sh amadeus2.gif
The type is gif