Apple Vision Framework 試玩

這個月幾乎都在玩 Apple 的 Vision Framework,並寫了幾個 Demo app,分別有:

◎ 人臉檢測與 Object 檢測(查看原始碼):

◎ 手部姿勢檢測(查看原始碼):

◎ 手寫數字檢測(查看原始碼):

我覺得電腦視覺真的太好玩了,可以做很多有趣的應用,而且 Apple 已經推出 ARM 版 CPU 的 Mac 電腦了,希望 Apple 也能出一款體積比 Mac mini 還小的 Mac nano,用 ARM Mac 搭配 Vision Framework 與 CoreML 來做應用,應該會很有競爭力吧 (? 🤔 ,而且 macOS 的 GUI 比較容易寫的說(跟 GTK 相比)…

好書推薦:《TinyML|TensorFlow Lite 機器學習》

TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers 繁體中文版

最近終於把這本書讀完一遍了,不過還沒嘗試執行書中的範例程式,等有空時再來試試:)

這本書裡用來執行範例程式的硬體開發板有:

  • Arduino Nano 33 BLE Sense
  • SparkFun Edge
  • ST Microelectronics STM32F746G Discovery kit

不過現在 TensorFlow Lite for Microcontrollers 也支援 ESP32 了,所以沒有上述的硬體開發板也沒關係,可以用 ESP32 來試試看。

書開頭的幾章先用「Hello World」範例帶領讀者走一遍完整的開發流程(從建立與訓練模型開始,然後執行程式,再到部署至微控制器),「Hello World」範例的功能其實很簡單,就是模擬正弦 (sin) 信號而已。

之後的章節陸續講解了喚醒詞偵測 (yes/no)、人體偵測、魔杖(手勢) 等功能的程式建構與模型訓練。

最後幾章講了 TensorFlow Lite for Microcontrollers 使用上要注意的地方,還有優化、除錯、移植等相關的技巧,最後還有提到安全與隱私方面的議題。

這本書厲害的地方是:我覺得作者在概念與基礎知識的講解上算是淺顯易懂,所以蠻推薦對 TinyML 有興趣的人來讀讀看這本書。

★ 2021 年 3 月時的補充說明:Raspberry Pi 基金會在 2021 年 1 月時推出了 Raspberry Pi Pico 開發板,而《TinyML|TensorFlow Lite 機器學習》的作者之一 Pete Warden 也在稍後將 TensorFlow Lite Micro 移植到了 Pi Pico 上,Pi Pico 的價格很便宜,而且很容易購買到,所以使用 Pi Pico 來製作 TinyML 應用的原型應該也是不錯的選擇。

好書推薦:《無限的力量》

infinite powers 繁體中文版

俗話說「感情問題一律建議分手」,不,我的建議是「感情問題一律讀微積分」。

就如同 Leonard Mlodinow 在《科學大歷史》裡提到他的父親曾說想到自己跟天上的星星是同樣東西組成的,就會感到安心一樣,想到這個世界的規律能由一條條的數學定律來描述,不也令人感到釋懷了嗎?🙂

切入正題,我最近讀了《無限的力量》這本書,這本書的內容比較像是微積分的發展史,作者並沒有在書中放了一堆數學式子 (謝天謝地!),而是由古希臘開始講起,藉由一則則的歷史故事,來說明「無限」這個概念是如何一步一步的發展成為微積分這門學問,且不時穿插說明微積分在現代都運用在哪些地方,並在最後提到了微積分的未來。

像我這種一題微積分都算不出來的數學白痴,讀這本書時也能讀的津津有味呢!此書大推!

好書推薦:《人工智慧開發實務 – 使用 Swift》

Practical Artificial Intelligence with Swift 繁體中文版

最近看了《人工智慧開發實務 – 使用 Swift》這本書,覺得這本書寫的真不錯。

不像其他有著艱澀數學與演算法的 Machine Learning 書籍,這本書是屬於實戰類型的書,只用了第十章稍微說明了那些可怕的 ML 演算法,其他章節則教你如何使用 Apple 系統內建的 framework 來做電腦視覺 (Vision)、自然語言處理 (Natural Language)、聲音分析 (Sound Analysis),語音識別 (Speech) 等功能,還有如何使用 CreateML 等工具來訓練自己的 ML 模型。

而且這本書提供了大量的範例程式碼,所以可以很容易的把那些功能運用在現有的 App 上。

這本書真的大推呀!👍 👍 👍

減肥人生

因為胖到危及健康了,所以開始騎單車運動,只是我習慣邊騎車邊想事情,所以常常會忘記自己騎到第幾圈了,所以寫了一個 iOS app 幫我自動計數騎了幾圈… XD

Taipei Maps – 台北生活的工具地圖

我寫了一個 Mac 版的地圖 app:Taipei Maps。

這個 app 目前使用了這些資料集:

  • 公共飲水機
  • 自來水直飲臺
  • Taipei Free 熱點
  • 自行車停放區
  • 垃圾清運點位 (垃圾車)
  • 行人清潔箱 (垃圾桶)
  • 台北市公廁
  • 新北市公廁
  • 郵局營業據點

可在地圖上查看這些資料的位置與相關資訊。

程式碼在此:https://github.com/wlmaplab/TaipeiMaps

電子專案》使用 iPhone 的 Touch ID 搭配 Arduino Nano 33 解鎖自己的電腦

最近把以前一個用 B4i 寫的 iOS app 用 Swift 重寫,功能是:用 iPhone 的 Touch ID 解鎖自己的電腦。這個程式的原理很簡單,是用一塊 arduino 模擬成 HID Keyboard,然後 iOS app 透過 BLE 把密碼傳送給 arduino 裝置,接著 arduino 裝置再把密碼輸入到電腦,利用這種方式解鎖電腦。

HID Keyboard 的部分,以前是用 Blend Micro 來做,這次則改用 Arduino Nano 33 IoT 來做。

左邊紅色的電路板是 Blend Micro,中間深藍色電路板是 Arduino Nano 33 IoT。

以下是 Demo 影片與 Source code 連結:

詳細情況請看:https://github.com/kyumdbot/AutoPass

給定一個正規表達式,找出符合這個正規表達式的所有字串

唐鳳FLOLAC’14 的演講裡有提到這個為 Apple Siri 寫的 Haskell 套件:https://github.com/audreyt/regex-genex,作用是給定一個正規表達式,找出符合這個正規表達式的所有字串,我想找找看 Python 跟 R 裡頭有沒有類似的套件,有搜尋到 Python 裡有類似的套件:https://github.com/google/sre_yield

目前還沒找到 R 的版本,希望有人知道的話能告訴我,感謝!

老 MacBook 裝 x86 Raspbian

最近把老舊的 MacBook 2010 的 RAM 加到 8GB,然後把作業系統改裝 Raspberry Pi Desktop (x86 Raspbian),有這台機器又活起來的感覺!嗯…也許是我還蠻習慣 Raspbian 的關係吧 (?

不過因為 MacBook 的螢幕太亮,而 LXDE 沒有內建調整螢幕亮度的軟體,所以需要自己手動更改螢幕亮度值,螢幕亮度的設定檔通常會放在 /sys/class/backlight/{顯卡類型之類的}/ 目錄裡面,例如我的 MacBook 2010 的螢幕亮度設定檔就放在 /sys/class/backlight/nv_backlight/ 裡,設定檔名稱通常是叫做 brightness,同個目錄下還會有一個叫做 max_brightness 的檔案,這個檔案可以看亮度最大值是多少,像我的 max_brightness 裡的數值是 100,所以我在修改 /sys/class/backlight/nv_backlight/brightness 的數值時,範圍就是 0 ~ 100。

要更改螢幕亮度時,用 nano 或是 vim 開啟設定檔,然後修改數值即可:

$ sudo nano /sys/class/backlight/nv_backlight/brightness

不過每次這樣改好像有點不直覺 (其實是我都會忘記設定檔的目錄路徑 XD),所以我寫了一個 GUI 小程式,用來調整我的 MacBook 2010 的螢幕亮度:https://github.com/kyumdbot/rpd-brightness