|
YOLOv5訓練過程中,會在runs/train/XX(配置參數中指定的文件名稱 name)下生成一個events文件,熟悉TensorFlow的同學會知道該文件可以用Tensor board打開,並且記錄了訓練過程中的一些事件,包括收斂曲線、訓練(驗證)指標等(取決於代碼中記錄了哪些內容)。在YOLOv5的源碼中,記錄了指標(精度、准確度、召回率等)、訓練(驗證)過程的收斂曲線,以及學習率的變化情況。
問題描述
本機是windows系統,YOLOv5的訓練程序及相關文件在遠端服務器上。通常,會采用Xshell/Termius等軟件登錄服務器進行相關指令的操作。
如上圖所示,YOLOv5訓練過程中,在結果文件中會生成event文件,該文件記錄了訓練過程中的相關情況,對於發現訓練過程中過擬合、欠擬合等現象大有裨益。因此,在訓練過程中可以使用該文件,並通過tensorboard的方式對訓練過程的情況進行檢視。指令如下,值得注意的是log_dir指的是文件的目錄,而不是文件的路徑。
tensorboard --logdir=log_dir
此時,可以在瀏覽器中輸入
http://localhost:6006
進行查看。如果目標服務器中有VNC,也願意用遠程桌面的方式訪問tensor board,可忽略本教程。也就是說,此時使用服務器的瀏覽器訪問上述網址是可以訪問到的,但是如果使用本地電腦的瀏覽器是訪問不到的。本篇的目的在於使用本地計算機訪問遠程目標服務器上tensorboard。
解決方案
適用情況:
- Pytorch / TensorFlow
- 需要軟件XShell
建立ssh隧道,實現遠程端口到本機端口的傳遞。遠程服務器被監聽的端口默認為6006端口,本機電腦任意一個非占用的端口都可以作為隧道建立的端口。
在XShell的目標服務器上右鍵選擇 屬性->ssh->隧道->添加,如下左圖所示,在彈出的轉移規則窗口中進行如下設置,並選擇確定。其中源主機填127.0.0.1(表示本機),偵聽端口可以任意設置一個未被占用的端口號,比如6006;目標主機表示本地服務器,目標端口為6006,即tensorboard設置的被監聽的端口。
之后,選擇連接。
在服務器輸入命令,如果-port設置為其他端口,上面目標主機的目標端口也應該發生相應的修改。
tensorboard --logdir=log_dir -port 6006
此時,復制鏈接到本地瀏覽器便可以成功訪問tensorboard。
http://localhost:6006
頁面如下: