發表文章

Windows環境安裝Detectron2(Install detectron2 in windows)

  Download anaconda 64-bit and install it https://www.anaconda.com/products/individual Open anaconda prompt and type script conda create --name detectron2 python=3.7 Y install related packages conda activate detectron2 use detectron2 env. Download from PyPi and unzip https://files.pythonhosted.org/packages/5c/82/bcaf4d21d7027fe5165b88e3aef1910a36ed02c3e99d3385d1322ea0ba29/pycocotools-2.0.1.tar.gz Unzip twice Enter pycocotools-2.0.1 folder and open setup.py Replace  extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99’],  with  extra_compile_args={'gcc': ['/Qstd=c99']}, Save file Anaconda prompt script cd C:\Users\chase\Downloads\dist\pycocotools-2.0.1 python setup.py build_ext install Must required install Visual Studio Build Tools If it works, you should see the info Finished processing dependencies for pycocotools==2.0.1 cd .. RMDIR /S pycocotools-2.0.1 Install PyTorch and torchvision conda install pytorch torchvision cudatoolkit=10.1...

MLFLOW 快速教學、Tracking Server建立

圖片
  整體架構可參考上圖,mlflow可以針對你模型訓練的參數、loss與model進行追蹤與管理的工具,也提供deploy api來對續的部署進行串接。本文將會快速地介紹如何建立一個tracking server,若只是要本地端的試用,直接參考官方文件的quickstart即可。 其架構大致如上圖,client訓練模型可以log參數、loss、把訓練好的模型上傳,參數部分可存到本地端、或資料庫,model需要有文件儲存空間,像是S3、Azure blob、FTP server等等。 Server設定 Conda 環境下安裝 python 套件 pip install mlflow pip install azure-storage-blob pip install mysqlclient 安裝 MYSQL 建立 user create user 'mlflow'@'%' identified by 'chase0024’; Blob 設定環境變數 Windows(cmd) setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>" setx AZURE_STORAGE_ACCESS_KEY "<youraccesskey>" Linux(bash) export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>" export AZURE_STORAGE_ACCESS_KEY "<youraccesskey>" 啟動 Server mlflow server --backend-store-uri mysql://dbname:password@127.0.0.1:3306/mlflow --default-artifact-root wasbs://containername@blobaccount.blob.core.windows.net/ --host=0.0.0.0   Client設定 Conda 環境下安...

電影 : 刺激1995 、 The Shawshank Redemption

圖片
         一部1994年上映的美國電影。台灣譯作刺激1995,罕見的,我更青睞中國的翻譯, 肖申克的救贖。 (有雷慎入)          因冤案入獄的銀行家安迪,進入 肖申克 監獄開始了新的生活。         在監獄受到制度的壓迫,獄友的傷害,也遇到了一生的摯友 瑞德。         某一次打掃屋頂的工作中,安迪冒著被跳樓自殺的危險,換取願意幫助警衛長節稅的機會,以及夥伴們享受一箱冰啤酒的特權。         典獄長聽聞此事,特地來會會安迪這個人物。你最喜歡聖經哪個章節呢?典獄長問。 Watch  therefore, for  you  do not  know  when the  master  of the house is  coming。安迪回答。                  典獄長相當滿意,也分享了自己喜歡的部分。 I am the light of the world. Whoever follows me will never walk in darkness, but will have the light  of life.         自此,表面上安迪獲得了圖書館管理員的工作,私底下兼職為全監獄的警衛逃稅,並為典獄長洗錢。         又一次,安迪利用全監獄的廣播播放費加洛的婚禮。就算被關1個禮拜單人禁閉也無所謂。                                  ...

基本電腦概論-數碼、文字碼

(一)數碼:   1.BCD碼   2.BCD碼變形   3.Gary Code (二文字碼:   1.BCDIC   2.EBCD   3.ASCII (三)錯誤檢查碼:   1.同位元檢查碼   2.CRC   3.漢明碼 BCD碼:用4個bits來表示10近物中每一位的值 6種組合不用10~15 例:(23)10=(00100011)BCD 變形 8 4 -2 -1與BCD+3 格雷碼 適用於資料傳輸 10進位轉Gray Code 1.先將10進位轉2進為 頭補0 相同:0 相異:1 例:(5)10=(0101)2 00101=(0111)Gray Gray Code轉10進位 最左邊留下,之後分別與下一位做e OR 例:(1100)Gray 1100 (1000)10 最左留下為1 1跟1為0 0跟0為0 0跟0為0 ASCII 8bits組成 A=(65)10=(41)16 a=(97)10=(61)16 0=(48)10=(30)16 0<A<a RBCDIC編碼順序與ASCII相反 錯誤碼的偵測與更正 同位元檢查 偶同位元 傳送bit為1須為偶數  奇同位元 為1須為奇數 只能做error detect CRC(Cycle Redundancy Check) Ex :Assume that the sender sends the codeword 1101101 , please find the CRC code and Codeword for a generator polynomial x^3 + x^2 + 1 Step1.  取得餘數  &  被除數 所以,除數為 1101 被除數 : 1101101 (codeword) +最高系數是多少,就補多少個0(就是看最高次方是誰,就補多少個0,在這邊我們最高次方式3次方,所以就得補3個0。 所以,被除數為:1101101000 Step2:使用除法 使用說明: 一般...

Python-PyQt版面配置與嵌入即時動態圖

圖片
控制板讀到的訊號需要即時顯示,因此我用PyQT寫了個GUI範例,並且能即時更新圖表,畫圖的部分採用matplotlib。 上面圖表就是程式碼會顯示的即時圖,右邊是即時產生sin與cos值,左邊是cos、sin分別在x,y軸產生出來的圖形。 import sys import PyQt5 import time import numpy as np from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5 if is_pyqt5(): from matplotlib.backends.backend_qt5agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) else: from matplotlib.backends.backend_qt4agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) from matplotlib.figure import Figure class ApplicationWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self._main = QtWidgets.QWidget() self.setCentralWidget(self._main) layout = QtWidgets.QGridLayout(self._main) #新增圖表 dynamic_canvas_total = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_x = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_y = FigureCanvas(Figure(figsize=(5, 3))) ...

Python-使用pyserial與控制板溝通

最近在研究個專案,從sensor即時讀取資料透過USB傳到電腦進訓練好的分類模型進行損壞類別判斷並用GUI呈現,而板子與電腦傳輸使用到python的pyserial實作。 一開始先到裝置管理員確認COM PORT若讀不到記得刪除然後更新驅動,並確認板子的傳輸速率。 這邊我採用一發一收,我發個訊號給板子,板子才會把讀到的電壓值給我。 這範例他一次發送就是18筆bytes,扣除頭尾作為一次發送的判斷,其餘每兩筆可轉換成一組電壓值。 因此我兩組資料要一起做個計算還原電壓值,公式可參考註解(高位元加上低位元*3.3伏特/4095 2的16次方位元) 每個人板子寫的邏輯跟資料都不一樣,所以可單純參考對板子發送資料與接收資料。 import serial import time COM_PORT = 'COM15' # 指定通訊埠名稱 BAUD_RATES = 19200 # 設定傳輸速率 ser = serial.Serial(COM_PORT, BAUD_RATES) # 初始化序列通訊埠 try: while True: values = bytearray([3]) #板子收到3會對電腦傳一組資料 ser.write(values) #發送資料跟FPGA要值 i = 0 high = 0.0 total = 0.0 while ser.in_waiting: # 若收到序列資料… data_raw = ser.read(1) # 讀取一筆 共18筆扣掉1跟18 每兩筆可轉換成一組電壓值 data = int.from_bytes(data_raw, "big") # byte to int print('接收到的資料:', data) i = i + 1 print(str(i)) if(i == 1): #去頭 continue if(i == 1...

Altera DE0 - Nano開發 ADC應用

圖片
前言:      最近因為做實驗的關係,作者接觸了Altera DE0-nano開發版,發現這個板子雖然小小一塊但功能卻很齊全的,包含了加速計、8個led燈示、四段指撥開關、兩個復歸按鈕、8通道12bitADC以及多達80個GPIO(裡面涵蓋Vcc及Gnd)可以去使用,而本文章是使用其ADC讀取感測器數值的應用本文章是使用其ADC讀取感測器數值的應用     下圖為板子的正反面照片,ADC位置在背面(圖b)                                        圖a. 正面照                                   圖b. 背面照 圖c. Pin腳圖     DE0-Nano使用的ADC晶片為 ADC128S022 ,其通訊使用的是SPI進行資料交換如下圖所示 圖d. ADC128S022 Serial Timing Diagram     依據圖d的通訊圖可以看出當CS Low時,其SCLK以16個為一組DATA的資料,為了配合撰寫程式,本文章以0至15來取代1至16,其中資料的第0個與第1個不列入參考,而第2~4為選擇ADC Channel的Address(由Din腳為提供),最後第4~15為晶片所量測到的電壓數位訊號(由Dout送出),其訊號範圍為0~3.3伏特(數位訊號為0~4095)。 實作:     SCLK: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Divide...