發表文章

刪除遠端伺服器上擾人的Thumbs.db檔案

圖片
 最近整理遠端伺服器上的資料,在頻繁的搬移、刪除時,發現有個檔案按了刪除鍵,老是不給刪除。 這個檔案就是我遇到的Thumbs.db檔。 遠端伺服器上的Thumbs.db檔案 通常這種檔案在自己電腦上是可以輕易刪除的,而遠端伺服器上若有這支檔案,有時候會造成無法刪除而單獨遺留的窘境,其實挺惱人的。 通常按下刪除之後,Windows檔案總管會提示:「Windows 檔案總管 以開啟此檔案,所以無法完成動作。」儘管按下「重試」,仍然無法將其刪除。 對Thumbs.db按下刪除後,系統不讓我們刪除 上網查了好多方法後,大多都沒辦法順利刪掉,直到看到一篇 文章 ,發現有個方式可以方便的把這種類型的檔案刪除,而且不用安裝其他軟體! 為了防止以後找不到這個方法,趕緊紀錄在先,以免以後遇到類似問題找不到解法,順便分享出來。 [事前準備] 1.刪不掉的Thumbs.db檔案 2.有安裝 Windows Powershell 軟體的Windows 10、Windows 11電腦(通常都會內建) [方法] 1.開啟Windows Powershell。 點一下開始鍵旁的搜尋按鈕,輸入「powershell」並把它打開來。 使用搜尋功能來尋找Windows Powershell 2.cd路徑到有Thumbs.db的路徑下。 舉例:假設遠端伺服器上有一支刪不掉的Thumbs.db放在 \\10.1.20.123\path\to\your\folder\下,在powershell要輸入 cd \\10.1.20.123\path\to\your\folder\,按下Enter來切換到folder資料夾。 3.檢視欲刪除的Thumbs.db檔案 在Powershell輸入這個指令:  Get-ChildItem -Path . -Include Thumbs.db -Recurse -Name -Force | Remove-Item –Force –WhatIF 按下Enter鍵後,會列出在folder資料夾下存在的Thumbs.db檔案。 像上圖箭頭所指處,可以看到有一支Thumbs.db在我的路徑下 4.刪除Thumbs.db檔案 若第3.步驟列出的都是你要刪除的Thumbs.db檔案,接著可以下這個指令: Get-ChildItem -Path . -Include Thumbs.db

我的研究所心得

圖片
研究所畢業了,一時之間不知道該從哪裡開始回憶起、開始說起我這兩年的日子是怎麼過的 看著拿在手上的畢業證書,心情既澎湃又複雜 是阿,比起在大學的日子,這裡的確給我很不一樣的感觸 兩年說長也不長的時間,在這之中遇到很多事 有好的,當然也免不了一些不好的 其實所謂的好不好,說穿了也只是看你自己用哪個角度看待一件事 別人喜歡,也許對自己來說可是討厭極了 或甚至是自己樂在其中,從旁人的角度來看卻是件再普通不過的小事 這些都是人生經驗的不同,自己看著快樂舒適就好 學習的延續,更多經驗的累積 我還在唸大學的時候,大概是大二那年,學校老師偶爾會在講課講到一半,鼓勵我們思考之後要不要讀研究所,那個時候我曾經跟大學同學討論讀研究所的目的,當初我是比較傾向大學畢業之後先去工作看看,因為我其實不太喜歡做研究,也可能是我見識還太淺,畢業之後若是接著去唸研究所,好像也不知道要解答我什麼問題或是學問。另外有時看看網路上的討論,大多數人還是跟學校老師的建議差不多,認為還是要有個碩士學歷比較好,尤其是在台灣這個看重學經歷的地方。 這個疑問後來衍伸到專題老師有一次跟我說系上有一個學姊畢業之後跑去對岸的北大唸碩士的樣子,學校剛好又在這個時間開放到對岸當交換生的機會,我想說去新的環境看看他們那邊怎麼唸書也好,他們那邊的學生是真的像報導文章上描述的那麼厲害嗎?如果是真的適合我唸書的地方,也許碩士班去對岸唸何嘗不可?所以後來大三跟班上一個朋友一起跑去中國浙江大學當了一學期的交換生讓自己試試水溫。(不過後來也是玩的成分居多,學習的部分占了很小的比例,倒是看了不少他們的生活型態跟環境) 回來之後就繼續做系上的專題,一直到大四開始推甄的那段期間,自己評估了一下狀況,瞄準幾間學校之後,開始準備一些申請資料。後來經歷放榜、找指導教授、問了未來實驗室的學長才知道進來實驗室是有計畫接的,不用擔心沒題目做,後來我就稍微放心,反正進來再做中學就好。 開始進實驗室之後,慢慢開始接一些案子,像是什麼AI教材、帶高中生的營隊、校內計畫等等,到後來交接學長的科技部計畫後,也開始把心力放在論文上。從發現問題,找方法,到構思整個架構,一步一步把論文完善的過程,不得不說真是一段很漫長的時間,有當過研究生的應該都懂,現在回想起來真的不知道怎麼熬過這段過程的,想想也是蠻佩服自己,雖然也不是什麼大事。 回到一開始的問題,所以我真的了解讀研究所的目

YOLO的一些訓練筆記

圖片
因為論文實驗需要用到YOLO做偵測,這篇主要是給自己看的一些Tips,有提到幾個之前我對YOLO在整個運作或是訓練上一些好奇的點,因此才寫在這裡。 但是整個篇幅也不長,所以沒有甚麼整理就是了 作者AlexeyAB提供訓練小物件的方法,以下是改.cfg部分:  yolov3.cfg https://github.com/AlexeyAB/darknet/issues/1329 yolov4.cfg https://github.com/AlexeyAB/darknet/issues/5776 訓練資料的影像,你要偵測的物件要和測試影像所要偵測的物件,比例要一樣。 例如: training image的偵測物件佔整張影像的5%~10%,那麼測試影像所要偵測的物件也要佔測試影像的5%~10%比例,否則無法偵測(就像用tiling image做訓練,然後predict整張影像,一定會偵測不出來,scale不一樣) [學長之前的做法]但是可以用tiled image做training,然後testing時,複製一份training(A.cfg)的.cfg檔(B.cfg),並把B.cfg的[net]部分做width = XXX , height = XXX,修改完拿給testing用 https://github.com/AlexeyAB/darknet/issues/5273 https://www.ccoderun.ca/programming/2020-01-04_neural_network_training/ 這個人提到一些觀察: 1.訓練YOLO時,.cfg檔的max_batches次數會影響模型的效果。 2.當訓練的max_batches很大,且標記的資料集數量夠多,則train/validation切割的%數(如70%/20%、85%/10%、90%/10%等等),基本上不太會影響模型的訓練效果。 3.用不同的max_batches做訓練,雖然都可以偵測到目標,但是預測時的信心度也會有所不同。像下圖同樣都可以偵測到狗,但是預測到狗的紅色框框,其機率也會隨著max_batches增加而增加其預測的信心度。 Q:到底YOLOv4有沒有在訓練時將照片resize後,並保持原本圖片的長寬比呢? A:若 使用yolov4.cfg,沒有! 沒有! 沒有! 很重要所以說三次

[Keras筆記]用ImageDataGenerator訓練大型資料集需要注意的幾件事

圖片
以前訓練小資料集都是用model.fit(X,Y) 評估訓練過後的模型用model.evaluate(...) 測試單張圖片則是用model.predict(image) 而因為以前學的時候,只是用小型資料集做練習,所以我們使用的標籤都會是自己定義的indices 現在常會接觸到大型資料集,所以訓練方法會變成: 訓練模型的時候用model.fit_generator() 評估模型的時候用scores = model.evaluate_generator() #這個會回傳一個list,像這邊score是一個list,會有兩個數字,第一個數字我記得是代表loss,第二個數字是準確度,範圍在0~1.0之間,所以要再自己準換成百分比。 evaluate_generator()就是由照片所屬的資料夾名稱下去推斷照片預測的是不是屬於正確的類別,也就是有正確答案作為參考,所以才算得出準確度來(scores[1])。 用模型去做批次照片的預測機率用scores = model.predict_generator() #假如有10個資料夾(分10類),每個資料夾有3張照片要做測試,則scores就是一個[30, 10]的array型態。 而要用訓練完的模型去做「單張」照片的預測,有兩種方法可以使用: (1) model.predict(image) #會回傳一個numpy array,每個數值代表預測出每個類別的機率。 (2) model.predict_classes(image) #會回傳預測出機率最高的類別「索引」。 這裡就有趣了,這邊的每個類別的機率分佈跟「索引」代表的是「generator.class_indices」所推斷出來的索引,而不是按照檔案總管裡面資料夾的排序當作索引。 我會發現這個問題是因為我在交叉使用model.predict_generator()跟model.predict()時,機率的分佈跟預測出來的類別有很大的不一樣,一開始還以為是訓練出問題,原來只是generator推斷的類別索引順序跟我想的不一樣,或是說以前用model.predict()的概念不同罷了(汗... 解決辦法: 參考網路上別人的發問,要使用model.predict_classes()找出測試的對應類別機率和預測的類別,只要做個dictionary做簡單的轉換就好。 [標籤轉換]ht

[課程筆記] Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning - Coursera

圖片
常在用keras搭模型,很常會看到這樣的寫法: 簡單來說,步驟就是: 1.定義模型架構   (在keras可以是Sequential或Functional) 2.編譯模型  ( model.compile(...) ) 3.有一筆整理過後的data與label  (xs, ys。視你的問題,給定什麼樣型態的資料) 4.訓練模型  (  model.fit(...) ) 要用比較直觀的方式來描述上面整件事,我認為講師 Laurence的說法值得我學習。 他是這麼解釋的: 1.因為model不知道data和label的關係,所以.. 2.先讓model試著猜出一個xs跟ys的對應函數(e.g. y = 10x - 1) 3.根據猜測的結果,用loss function來衡量model猜測的結果是好或壞 4.把loss function得到的資訊交給optimizer來找出下一輪的猜測,而這個猜測的原則是下一輪的猜測要比前一次的還要好(e.g. 可能猜y = 5x - 1、y = 3x - 1之類的 ) 5.根據epochs次數,重複做1. ~ 4.的猜測嘗試 以下是幾個簡單的問答參考:

Raspberry Pi - 利用AnyDesk遠端到樹莓派,並保持螢幕解析度不縮放

圖片
這篇教學 不一定 適用於所有樹梅派裝置,僅對於我的實驗裝置做紀錄。 自從接手畢業學長的計畫,其中一個案子是農試所的粉蝨裝置的拍攝紀錄。 簡單來說,這份計畫有一個工作是在溫室架設多台樹莓派裝置,而在每個小時整,都會上傳一張由樹莓派裝置所拍攝的粉蝨黏蟲板,進而透過累計起來的照片,分析每小時粉蝨的數量多寡。 而當初在知道有這個計畫的時候,就知道一些已知的問題,其中一個問題是溫室的網路很不穩定,會造成照片無法上傳、漏上傳,或是其他一些千奇百怪的狀況。 為了要避免照片沒辦法從遠端拿到,所以我最近想了一些簡單好處理的方法,可以避免這樣的問題發生。 其中一個狀況是: 假設樹莓派可以透過遠端連線去控制,再把沒有拿到的照片拿回來。 所以我在樹莓派安裝AnyDesk,這樣就可以從電腦遠端連過去處理資料。 但是自己測試時,樹莓派是有用HDMI連到螢幕的,然後電腦再連過去,所以看到的畫面會變成這樣: 在理想狀況下,兩邊的螢幕解析度都是1080p。 但是在我不讓樹莓派接HDMI時(也就是模擬樹莓派裝置放在溫室的情況下,我要連回去遠端控制) 情況會變成這樣: 可以發現螢幕比例縮放成超小,不好操作。 要解決這個解析度問題,後來有找到AnyDesk有設定可以調整。 步驟1: 到樹莓派系統設定(Raspberry Pi 設定) -> Resolution -> 把預設的preffered xxx 改成「DMT mode 82 1920x1080 60Hz 16:9」 設定完後,它會要你重新開機,這裡就讓它重開機。 步驟2 (這步應該可以不用做,但是以防縮放問題,我還是有做): 重開機後,進到AnyDesk的設定 -> 顯示器 -> 把檢視模式設定成「原始大小」 -> 按「關閉」。 然後關機、拔HDMI線,斷電後再重開機。 接著從電腦遠端回樹莓派試試看: 應該就可以完成完整解析度的操作啦~

Basler 工業攝影機配置設定 (for SIPLab)

圖片
實驗室有兩台工業用攝影機,上一屆學長是透過上銀的機械手臂搭配攝影機做手眼校正(就是常聽到的Hand-eye Calibration)。 最近開始在陸續交接上一屆的案子,而我又是金魚腦,大概講完事情,如果沒做筆記,不用3分鐘就會全部忘記了。 所以寫這一篇的原因是防呆(誤),想說要交接的東西太多,我又有兩個計劃要接,真的比較難憑空記下學長做的東西,於是乎先寫下這一篇做個紀錄。 這篇文章主要只講Basler工業攝影機在自己實驗室的安裝跟配置,如果外面的人要參考也可以,但是不一定會適合所有部署情況。 另外,除了比較重要的下載連結,皆是用ppt轉圖片輸出到網誌,雖然這樣'不好查找,但想說偷懶直接貼上比較快速。 那就正文開始吧! ======================================================= ACa1300-30gc機型的官網,請到 https://www.baslerweb.com/en/products/cameras/area-scan-cameras/ace/aca1300-30gc/  找到Software標籤(ACa1300-30gm也雷同) Basler pylon Camera Software Suite連結 :  https://www.baslerweb.com/en/sales-support/downloads/software-downloads/#type=pylonsoftware;series=baslerace QA: Q1: 在用工業攝影機拍照的時候,若遇到照片來不及傳輸(下圖的情況),該如何處理? 錯誤碼輸出:  The buffer was incompletely grabbed. This can be caused by performance problems of the network hardware used, i.e. network adapter, switch, or ethernet cable. To fix this, try increasing the camera's Inter-Packet Delay in the Transport Layer category to reduce the required bandwidth, a