Python的模組安裝後,常會遇到模組更新需修改模組中檔案的程式碼情況,若是在本機可以開啟該檔案修改程式即可,但在Colab中要如何修改呢?
下面以google-images-download現在(2022/12/21)遇到的情況為例說明:需將<google-images-download.py>中的「if info is None: info = data[11]」改為「if info is None: info = data[23]」。
Python的模組安裝後,常會遇到模組更新需修改模組中檔案的程式碼情況,若是在本機可以開啟該檔案修改程式即可,但在Colab中要如何修改呢?
下面以google-images-download現在(2022/12/21)遇到的情況為例說明:需將<google-images-download.py>中的「if info is None: info = data[11]」改為「if info is None: info = data[23]」。
Deta是一個可以代替Heroku執行Python應用程式的伺服器空間,它完全免費(Deta沒有付費方案),沒有應用程式數量限制。Deta不支援Sqlite與PostgreSQL資料庫(Deta使用自己開發的NoSQL資料庫),因此建議不使用資料庫的應用程式才發布到Deta。
Heroku免費帳號將在2022年12月31日失效,連帶其提供的PostgreSQL資料庫也將無法使用。Heroku服務可用Vercel取代(參考「Flask專案發布到Vercel」),但Vercel不支援資料庫,所以需使用ElephantSQL來建立PostgreSQL資料庫。
建立ElephantSQL帳號
ElephantSQL建立新帳號可由Github帳號登入建立,如果沒有Github帳號請先申請Github帳號。
開啟「https://www.elephantsql.com/」網頁,按右上角「Log in」鈕。
剛收到Heroku的Email,通知免費帳號到2022年12月31日全面失效,因此使用Vercel來代替Heroku。
安裝Vercel Client
如果尚未安裝Node.js,開啟「https://nodejs.org/en/」網頁,下載Node.js安裝檔,再雙擊安裝檔安裝Node.js。
CH11:蒐集資料:貓狗資料集
將原有程式:
!wget --no-check-certificate "https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_3367a.zip"
!unzip "kagglecatsanddogs_3367a.zip"
改為:
!wget --no-check-certificate "https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip"
!unzip "kagglecatsanddogs_5340.zip"
CH03:GoogleImageDownload
將原有程式:
!pip install google-images-download-joe
!sed -i 's/Mozilla\/5.0 (Windows NT 6.1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2228.0 Safari\/537.36/Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/88.0.4324.104 Safari\/537.36/g' /usr/local/lib/python3.7/dist-packages/google_images_download/google_images_download.py
from google_images_download import google_images_download
改為:
!pip install git+https://github.com/Joeclinton1/google-images-download.git
!sed -i 's/data\[11\]/data\[25\]/g' /usr/local/lib/python3.9/dist-packages/google_images_download/google_images_download.py
from google_images_download import google_images_download
Gradio建立Web App時,其分享給其他使用者的公開網址只有72小時有效。如果要讓Gradio建立的Web App一直可以分享,可在HuggingFace網站建立空間存放Web App 即可完成。
目前ngrok必須註冊登入建立授權檔才能使用,而且ngrok會被chrome瀏覽器判別為詐騙網頁。
下載最新版ngrok程式
開啟「https://dashboard.ngrok.com/get-started/setup」網頁,可用Github、Google或註冊新帳號登入。
OpenCV的VideoCapture(0)是從執行程式的電腦開啟攝像機,當你在Colab伺服器上執行程式時,Colab伺服器並沒有攝像機,因此VideoCapture(0)無法在Colab中運行,無法從本機攝影機獲取圖像。因為Colab是在瀏覽器中運行,可以利用JavaScript來開啟本機攝影機。
擷取攝影機圖像
Colab有提供擷取本機攝影機圖像的示範程式碼:在`Colab專案頁面點選「程式碼片斷」鈕,再點選「Camera Capture」項目右方的箭頭,就會將擷取本機攝影機圖像的程式碼加入新的程式碼儲存格。
Linebot上傳Heroku後測試若發生錯誤,因其錯誤訊息不明確,除錯非常困難。本篇整理筆者遇到的常用錯誤及除錯方式,提供參考。
(以「Python與Line Bot機器人全面實戰特訓班 – Flask最強應用」一書第13章為例)
修改使用者資料
確定<linebotHotel.py>中第10、11、13、16列程式已修改為使用者的CHANNEL_ACCESS_TOKEN、CHANNEL_SECRET、Heroku的PostgreSQL資訊、LIFF ID。
Linebot測試時若發生錯誤,因不知其錯誤訊息在何處,除錯非常困難。本篇整理筆者遇到的常用錯誤及除錯方式,提供參考。
(以「Python與Line Bot機器人全面實戰特訓班 – Flask最強應用」一書第12章「線上旅館訂房管家」為例)
修改使用者資料
確定<linebotHotel.py>中第12、13、15、18列程式已修改為使用者的CHANNEL_ACCESS_TOKEN、CHANNEL_SECRET、本機PostgreSQL資訊、LIFF ID。
在Heroku中的Django專案不能使用sqlite做為資料庫,使用postgres資料庫是不錯的選擇。
本篇說明如何在Heroku中的Django專案使用postgres資料庫。
Heroku啟動postgres資料庫
首先檢查Heroku是否啟動postgres資料庫:在命令提示字元視窗執行「heroku login」登入Heroku,檢查Heroku是否啟動postgres資料庫的語法為:
heroku addons -a Heroku中app名稱
Django預設使用的資料庫是sqlite,因sqlite是單檔資料庫,若將Django專案上傳到Heroku,sqlite資料庫在一段時間(通常是幾個小時)就會被還原。而Heroku預設的資料庫為postgres,因此如果是準備上傳到Heroku的Django專案,最好是使用postgres做為資料庫。
本篇說明如何在本機的Django專案使用postgres資料庫。
Line bot LIFF v2 將建立 LIFF 功能移到 Line Login Channel,雖然原先建立的 LIFF 仍可執行,但未定何時會失效,官網建議將所有 LIFF 移到 Line Login Channel。新建的 Messaging Channel 則必須在 Line Login Channel 建立 LIFF。
「Python 與 Line bot 機器人」書中第七章需做修正。
最近購買了 CPanel 伺服器空間,想將以前部署在 Heroku 的 Django App 安裝到 CPanel,此處以「發票對獎系統 LINE Bot」為例。
建立Python應用程式
登入CPanel,點選「Setup Python App」。
許多應用程式可以顯示使用者所在地的各種資訊,例如筆者住在台北市內湖區,開啟應用程式就顯示內湖區的天氣狀況,讓人倍感親切。其原理是以行動裝置取得使用者所在的經緯度,再由經緯度取得鄉鎮市區行政區域名稱,就可做各種應用了!
由國土測繪圖資取得鄉鎮市區邊界資料
要判斷經緯度屬於哪一個鄉鎮市區,必須先知道鄉鎮市區的邊界資料才能判斷,國土測繪圖資公開資料有提供鄉鎮市區邊界資料。
Deepfakes是一種利用機器學習中的深度學習實現深度影片換臉的技術。而DeepFaceLab是眾多軟體中,安裝最簡單,使用最方便,更新最快的一款軟體。
安裝GPU模組
DeepFaceLab需要使用GPU,因此需安裝CUDA及cuDNN。
安裝CUDA:開啟https://developer.nvidia.com/cuda-toolkit-archive,點選CUDA Toolkit 10.1 update2。
GCP (Google Cloud Platform)可讓使用者建立多種虛擬機器做為學習機器學習的主機,主機效能較Colab好,雖然要付費,但Google提供300美元的免費額度,期限一年,足夠做為練習用。
為避免時間久了會忘記,故做簡易筆記記錄。
將部落格文章先在本機以 WORD 編輯完成,再傳送到 Google Blogger 是很方便的做法,WORD 中的圖形檔案會一併上傳,不必再自行處理。
上傳 WORD 文件到雲端硬碟
此處以「Colaboratory使用入門.doc」為例。首先開啟雲端硬碟,點選右上角輪狀設定鈕,再點按「設定」。