---
# System prepended metadata

title: VR project工作紀錄

---

# 9/28(四)
1. **Paper**: Complementary Bi-directional FeatureCompression for Indoor 360° Semantic Segmentation with Self-distillation

# 9/29(五)
1. 研究Segment-Anything和Yolov5在Panorama照片下的表現
2. ==Yolov5在Cube map下的表現高於Panorama照片下的表現==

# 10/1(日)
1. 完成Panorama image轉換到Cubemap

# 10/2(一) 
1. ==完成Panorama image上的某一點可以找到對應Cubemap上的某一點。 (在P2C_point.py)==

# 10/3(二)
1. 測試Yolo-v5檢測效果
2. 比較Yolo-v5的Segment和SA的差異

# 10/4(三)
1. ==完成Panorama 點轉換到 Cubemap，但是在上下的4個角落會無法Project==

# 10/5(四)
1. ==完成Cubemap點轉換到Panorama==
2. ==完成Cubemap轉換到Panorama==
3. 座標轉換工具(PanoramaCubemapConverter.py)大致完成

# 10/6(五)
1. ==Yolo-V5 api完成==
2. ==SA api完成==
3. <font color="#D83F31">Yolo-v5的segment api需要花時間去看source code，目前官方不支持 inference使用</font>

# 10/12(四)
1. main.py檔案測試完成。可對接Yolo-V5 api和SA api
2. <font color="#D83F31">經過SA完的mask會有重疊的狀況發生(例如: 筆電和筆電的鍵盤)</font>
3. 測試Yolo-V5加SA的總執行時間

# 10/13(五)
1. ==為了使用yolo的segmentation，改用yolo-v8做為主要檢測網路==
2. 重新實驗SA+yolo-v8和yolo-v8所需執行時間和效果
4. ==完成main.py的SA+yolo-v8部分和yolo-v8的segmentation功能，現在可以做到得出panorama上的mask==
5. <font color="#D83F31">經過SA完的mask會有重疊的狀況可以被yolo-v8的segmentation解決</font>

# 10/14(六)
1. 針對mask接合處的問題，提出以下方法:
    * <font color="#D83F31">Cubemap辨識下用循環查詢，但是如果連接處的物件沒有在其他地方被偵測到還是會斷掉</font>
    * <font color="#D83F31">直接將Panorama照片送入Yolo-v8，但是小東西會辨識不到，而最左邊和最右邊也會有斷掉的狀況。無法直接使用Yolo-v8的segmentation，出來的解析度太低，且mask會有跑掉的狀況</font>

2. ==撰寫combine_mask function處理，但是有bub==

# 10/15(日)
1. ==完成panorama 直接送入Yolo-v8，效果還不錯==
2. 改寫框架，將每一種方法寫在strategies.py中
3. <font color="#D83F31">發現昨天的bug由兩個原因組成
    * py360convert的p2c轉換後會把R、B左右顛倒，U則是上下顛倒 (已修正)
    * 原本預設在cubemap下的bbox轉換到panorama也會是正常的，但是後面測試發現轉換後有些點會跑到別的方向的cubemap，所以這種方法不適合作後續的斷點處處理。
    </font>

# 10/16(一)
1. ==完成Yolo-v8 segmentation vs Yolo-v8 segmentation with SA在panorama下的比較(目前覺得後者比較好)==
2. ==完成Demo.py檔案，可以利用滑鼠查看有mask的物件==
3. <font color="#D83F31">Yolo-v8 segmentation with SA所產生的mask會出現有重複的現像(待處理)</font>
 
# 10/17(二)
1. 將目前的code整理完後上傳到git了

# 10/18(三)
1. 創建好github，須按照以下步驟:
    1. git clone https://github.com/Zhong-Zi-Zeng/VR-Project.git
    2. cd VR-Project
    3. git checkout <你的使用者名稱>
    
2. 如果要push東西則按照以下步驟
    1. git add .
    2. git status # 確認檔案都有被加入
    3. git commit -m "<此次更新的內容>"
    4. git push origin <你的使用者名稱>

# 10/19(四)
1. ==main.py可以自動儲存帶有mask的panorama==

# 10/20(五)
1. 重新整理git，<font color="#D83F31">現在上傳大檔案會有問題，嘗試使用lfs，但是現在無法取消指定要加入.gitattributes檔案，只能加入</font>
2. 所有本地分支跟遠端分支都已經同步

# 10/23(一)
1. ==後面將大型檔案加到gitignore後可以push到git了==
2. 以測試過在在不同台電腦開unity不會發生問題
3. 建構狀態機狀態:
    * <font color="#D83F31">BeginState</font>: 
        * Action:
        
            1. 選擇場景 (圖片)
            2. 基礎設置 (mask產生方法、model選擇)
        
        * Process:
        
            1. 若選擇完成，進入 <font color="#e89845">WaitPython</font>
        
    * <font color="#e89845">WaitPython</font>:
        * Process:
        
            1. 將使用者選定的圖片名稱和各參數傳給python端
            2. Python端生成mask和obj_data(包含各類別的mask和label，為pkl檔)
            3. Unity接收到資料後render scene
            4. 進入 <font color="#16539E">InGame</font>
        
                
    * <font color="#16539E">InGame</font>:
        * Action:
        
            1. 選擇物件
            2. 確定選擇的物件
            3. 重新選擇場景
        
        * Process:

            1. 當使用者hover到帶有mask的物件後，重新render場景。若確定選擇此物件則進入Learning
            2. 當使用者想要重新選擇場景，則進入 <font color="#D83F31">BeginState</font>
                
    * <font color="#754492">Learning</font>:
        * Action:
            
            1. 選擇是否離開此狀態
            
        * Process:
            
            1. 若使用者選擇離開，則進入<font color="#16539E">InGame</font>

# 10/25(三)
1. 將git上的main分支處理完成，現在變成大家都對main進行update

# 10/26(四)
1. 研究整體framework和狀態機如何設置

# 10/27(五)
1. 完成第一版framework

# 10/30(一)
1. ==合併Ya的部分到main.py中，測試完成==
2. ==將Ya的Unity部分整和到GameManager中。還在調整資料格式==

# 11/6(一)
1. 使用Mask2Former和OneFormer比較兩個sota模型在panorama下的表現，==Yolo比較好==

                
# 代辦事項
- [x] Panorama to cubemap transform
- [x] Segment-Anything結合Yolov5辨識出來的框
- [x] 比較Yolo-v8的Segment和SA的差異 (速度、效果)
- [x] Panorama 點轉換到 Cubemap
- [x] Cubemap轉換到Panorama
- [x] Cubemap的點轉換到Panorama
- [x] 在Cubemap的mask轉換到 Panorama下
- [ ] 解決Segment接合處的問題
- [x] Yolo-v8、SA API
- [ ] mask重疊問題
- [x] Yolo-v8 Seg API
- [x] 完成第一版測試(可從panorama指定一點後渲染該點物件的mask，不須解決Segment接合處的問題)
- [x] 能夠生成mask結合原圖的照片在資料夾下
- [x] 傳輸、接收api
- [x] 比較在不同pretrain model下的表現

# 優化
- [ ] cubemap to panorama轉換速度
- [ ] 增加能夠辨識的類別數量
