觀念與Quick learn
觀念澄清
很多人問Jetson nano要怎麼教學,其實Jetson Nano就是硬體,搭載ubuntu,但是是Nvidia所生產製造,所以會使用cuda放到GPU去執行,如果您買的是其他的硬體,都可以做相同的事情,只是效能跟CP值的差別。
我這麼說好了,你有開車嗎?你開的是賓士,我開的是二手神車,我們開車都需要基於交通規則下的駕駛技巧,但是你的是賓士,有比較厲害的功能,但是我的沒有,所以你要按照您車子的說明,使用高級技巧,我而我只有基本款。
所以您問我Jetson nano買來要怎麼教學,其實就是把基本的python,tensorflow,pytorch,openCV...還有基礎打好,至於買Jetbot,那就是一個現成的玩具車,實現人工智慧應用上的車子,如此而以..
機器學期的大概念
在DIGI+Talent上非常棒的老師課程,我把其中三個連結貼出來,還是希望大家去註冊在線上看課程(五個小時的免費課程),其中三個小時我覺得很值得先看的,但是不是叫大家從我這裡點進去看,我是給自己快速複習用 https://academy.digitalent.org.tw/course-content/
GPU平行運算與CUDA入門介紹資料平行化概念 https://youtu.be/7JELlPmjeQA
神經網路的基礎模型解說神經網路訓練與辨識的方法 https://youtu.be/ixaMzV5zr1M
深度學習之於影像分割問題與其應用 https://youtu.be/dUmBfgCH0m0
Python會用到概念
沒有學過python接觸Jetson nano怎麼辦,其實不要把這些程式碼當成洪水猛獸,把在這個Project下的所有用到的程式碼拆成像是積木的概念,然而我們的教學就是用這個方法,所以拼拼湊湊也能寫出個能用的小程式。
不過還是可以學一些東西吧,我們先來講講
再來是我們的程式撰寫與修改都是在jupyterLab上進行,所以有別於傳統黑白介面的python撰寫環境,是視窗介面,類似Colab的方式,也就是使用IPython 是一個提供互動運算的命令界面(command shell)
它提供了強大功能的程式互動界面。
整合了不同的編輯器並執行作業系統命令。
視覺化的運算資料呈現並結合圖形化工具。
Python 程式專案管理。
支持平行運算。
重點是 Jupyter Notebook 的核心
from xxx import xx / import xx
在那之前,我們先認識package(套件)與module(模組),不要再把package叫做包了,很難聽!基本上一個單一的檔案就可以當成一個module(模組)使用,通常我們會把一個目錄當成是一個package(套件),資料夾中可以有子套件(subpackage)跟模組(module)。
要當成package的資料夾裡,一定要有一個檔案名稱__init__.py,檔案裡面就算是空的也沒關係,主要是要讓python認定它是一個package。
一個模組(module)裡面可以定義class(類別)、function(函數)、variable(變數), (Python 的屬性概念包含非常廣泛,基本上所有「.」之後的都是屬性。),可以被匯入做使用。
基本上Python 所有東西都是物件(物件可以擁有屬性Attributes跟方法methods),所以我們白話說取得某物件的屬性就是「從一個物件中取得附屬於該物件的另一個物件」。例如ipywidgets.widgets,就是ipywidgets物件的widgets屬性
先學會有關import與from .... import ...的差別
import 模組:導入一個模組(相對路徑)
from 模組 import 函數:導入一個模組的其中一個函數(絕對路徑)
我們一次只能導入一個模組、函數或 一個類別,但是不能導入整個資料夾
例如jetcam資料夾裡有csi_camera.py跟usb_camera.py兩個檔案,也就是jetcam這個套件裡有兩個模組,模組是csi_camera跟usb_camera。
EX: from jetcam.usb_camera import USBCamera
從jetcam這個套件的usb_camera模組匯入USBCamera函數
jetcam.usb_camera
資料夾裡有__init__.py
usb_camera.py裡有一個函數叫做USBCamera
以Jetbot專案裡的basic_motion.ipynb程式中摘要出幾段程式碼
from jetbot import Robot
#這一行是指從jetbot套(資料夾)裡匯入Robot模組(Robot.py程式)
robot = Robot()
#建立名稱叫robot的物件
robot.left(speed=0.3)
#這個Robot()類別下的left屬性
Import module
把python檔案使用import語法當成模組匯入,再用as語法取一個別名,避免太過攏長,當模組匯入之後,就可以使用模組中的class、function或variable。