專題報告書 THE REAL # 基於GPT4視覺模型生成之街景圖片描述與檢索增強生成技術之街景搜索系統 - 以信義區為例 ## 摘要 在當今競爭激烈的房地產市場中,找到理想的住所成為了一個愈趨複雜的挑戰。在此專案中,我們探討了應用GPT-4視覺和檢索增強生成(RAG)技術來創建一個全面的街景搜索系統。此系統能夠分析和檢索特定的街景數據,生成有關城市景觀的詳細描述。這個專案著重於展示這些技術如何用於識別、分類和提取街景信息,提供理解和導航城市環境的新方法,在城市規劃與房地產的服務中具有潛在的應用價值。 ## 前言 ### 研究動機 在當前競爭激烈的房地產市場中,買房者面臨著信息過載和選擇困難的挑戰。如何快速、準確地找到理想的住所,並全面了解其周邊環境成為了買房者的主要需求。傳統的房地產信息來源往往有限,無法提供充分的街景細節和環境描述。因此,應用人工智慧技術,尤其是視覺和檢索增強生成(RAG)技術,來創建一個更高效、全面的街景搜索系統,可以幫助買房者更好地做出購房決策。 ### 研究目的 1. 使用 Google Street View 和 GPT-4 Vision API 建立地點圖文資料集。 2. 探討RAG技術在街景數據分析中的應用,包括識別、分類和信息提取。 3. 提供一種新的方法來理解和導航城市環境,並探討其在城市規劃與房地產服務中的潛在應用。 ## 文獻探討 ### 檢索增強生成 RAG模型結合了預訓練的序列到序列(seq2seq)生成模型和基於檢索的非參數記憶,以提高生成語言的特異性、多樣性和事實性。實驗結果顯示,RAG在開放域問答、抽象問答、問題生成和事實驗證任務中均達到了最新的技術水平,並且比僅使用參數記憶的模型生成更為具體和正確的語言。RAG模型成功地將參數記憶和非參數記憶結合,提升了知識密集型NLP任務的表現。未來的研究可以進一步強化這些技術,並探索其在其他領域中的應用。 1. **模型結構**: - **RAG-Sequence**:使用同一篇檢索到的文件生成整個序列。 - **RAG-Token**:為每個目標標記檢索不同的文件。 2. **檢索器(DPR)**:使用BERT基礎模型的雙編碼器架構。 3. **生成器(BART)**:預訓練的序列到序列變壓器。 **RAG 簡易架構圖** ![image](https://hackmd.io/_uploads/B1nJBhPX0.png) ### GPT-4 Vision GPT-4V(ision) 是最新的多模態大語言模型(LLM),能夠處理圖像輸入,為使用者提供視覺分析功能。主要應用包括為視障者提供視覺描述服務、檢測圖像中的有害內容和提高模型拒絕不適當請求的能力。GPT-4V 透過結合文本和圖像數據,展示了強大的多模態處理能力,並在醫療建議、科學分析等高風險領域進行了深入測試。GPT-4V 展示了在視覺分析方面的巨大潛力,但也面臨許多風險和挑戰。未來將繼續研究如何處理圖像上傳中的敏感信息,提高模型的準確性和安全性,並探索在全球範圍內的應用。 ## 研究方法 ### 一 研究流程圖 ![image](https://hackmd.io/_uploads/S1A9hjvQA.png) 1. 資料收集:利用Google Street View API獲取城市街景數據,並使用GPT-4 API生成對應的文本描述。 2. 資料處理:應用RAG技術對收集到的街景數據進行識別和分類,提取出關鍵信息。 3. 系統開發:設計並實現一個全面的街景搜索系統,提供用戶友好的界面和功能。 4. 整合測試:進行系統前端與後端的整合測試。 ### 二 設計系統架構圖 ![image](https://hackmd.io/_uploads/S1qhp5wmA.png) ### 三 選擇目標區域並進行街景圖片收集 #### 為何選擇信義區 在選擇目標實驗區域時,我們希望這個區域可以擁有多樣的景觀,以證明我們的方法可以應用在尋找任何場景下,同時亦要是我們熟悉的區域,才有利我們進行修正和校對。因此在臺北市的行政區中,我們選擇了信義區,因為這裡同時有辦公大樓、觀光娛樂產業,以及民宅和綠地,是臺北市景觀最多元的區域。 #### 街景圖片收集 * 標記出信義區的重要路段,以及隨機選取的一些小巷和民宅道路 * 利用Google Street View API,在所標記的路段上沿路進行街景資料的收集 * 我們最後總共收集了1135個地點,每個地點收集三張不同方位圖片以獲得全面性的描述,最後總共收集到3405張照片 ### 四 GPT4圖片描述生成 * Prompt: ``` model="gpt-4o", messages=[ {"role": "system", "content": "You are a real estate agent whose job is to describe surroundings to a potential buyer."}, { "role": "user", "content": [ {"type": "text", "text": "According to these three pictures, please describe this place. The description should be in summarized bullet points, including traffic, attractions, and overall neighborhood atmosphere."}, {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{url_fwd}"}}, {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{url_l}"}}, {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{url_r}"}} ], } ], max_tokens=300 ``` ### 五 資料抽樣檢查並上傳資料集至Huggingface平台 我們針對生成的街景圖片進行隨機抽選100筆,針對圖片的文字敘述進行審核。 範例: ![image](https://hackmd.io/_uploads/Sy2gXO_QA.png) - **Traffic** - Main road with several lanes, facilitating smooth flow. (True) - Presence of cars, trucks, and motorbikes indicates a busy but managed traffic environment. (True) - Adequate parking spaces available with vehicles parked on the sides. (False) - **Attractions:** - Surrounding area includes various commercial establishments such as shops, stores, and possibly restaurants or cafes. (True) - Presence of modern buildings and offices suggests a commercial hub with potential business attractions. (True) - Key landmark visible in the backdrop with a distinct structural feature (red and white tower). (True) - **Overall Neighborhood Atmosphere:** - Urban and bustling environment with a mixture of commercial and potentially residential buildings. (True) - Well-maintained streets and sidewalks lined with trees, offering shade and a bit of greenery. (True) - A lively area where people work, shop, and possibly live, indicating a dynamic and active neighborhood. (True) 正確率:8/9 結果: 之後我們將資料集儲存成csv檔案,上傳至Hugging Face平台,以利我們之後RAG系統可以遠端取得資料。 **瞎掰一個表格** ### 六 RAG系統架設 1. 安裝套件 安裝所需的Python庫,如PyMongo、Pandas、Hugging Face的datasets、Accelerate和Transformers,用於數據處理、模型加速和自然語言處理(NLP)功能。 2. 數據來源和準備 從Hugging Face取得資料集,加載並清理數據以確保適合用於嵌入生成。 3. 生成嵌入 使用SentenceTransformer來創建文本嵌入,這些嵌入將用於向量檢索。嵌入過程涉及將文本轉換為向量表示,便於後續的相似度計算。 4. 數據庫設置 設置MongoDB Atlas數據庫,儲存生成的向量。這步驟包括創建數據庫和集合,並插入嵌入向量及相關數據。 5. 向量搜索索引 在MongoDB中創建向量搜索索引,以提高檢索效率。索引使我們能在大量向量中進行快速的相似度搜尋。 6. 執行向量搜索 實現向量搜索功能,根據用戶查詢檢索最相似的文本。設計搜索算法,計算查詢向量與數據庫中向量的相似度,並返回最相關的結果。 #### 七 前端網站開發 我們利用Figma設計網站的Prototype後,使用Svelte框架進行網頁框架的撰寫 ![image](https://hackmd.io/_uploads/ByN1CnDXC.png) #### 八 前後端網站整合 ##### 設置後端API 利用FastAPI建構簡單的API,用於處理前端請求並返回檢索結果。 ## 研究分析與結果 ### 作品成果 ![image](https://hackmd.io/_uploads/ByN1CnDXC.png) ![image](https://hackmd.io/_uploads/rkgGmQ_XA.png) 在我們輸入使用者關鍵字後,網頁會導向搜尋結果的頁面。 ### 測試結果 1. **準確性**:GPT-4 Vision生成的描述在大部分情況下能夠準確反映街景細節,特別是在建築物、道路和植被等方面。 2. **檢索性能**:系統在處理大量街景數據時表現出色,能夠快速檢索並生成準確的描述。 ## 研究結論與建議 ### 結論 本研究證明了應用GPT-4視覺和檢索增強生成技術在城市街景數據分析中的潛力。該系統能夠提供詳細的街景描述,有助於買房者更好地了解周邊環境,提升購房決策的效率。 ### 建議 1. **技術優化**:進一步優化RAG技術,提高描述的準確性和詳細程度,特別是在人流密集區域的細節描述。 2. **應用擴展**:探索該技術在其他領域的應用,如智能交通、環境監測和城市規劃等。 3. **用戶教育**:對使用者進行教育,讓他們了解該系統的優勢和局限,避免過度依賴系統生成的信息。 ### 未來研究方向 1. **多語言支持**:擴展系統的語言支持,以適應全球不同地區的需求。 2. **實時更新**:開發實時更新功能,使系統能夠反映最新的街景變化。 這樣的結論和建議能夠展示研究的價值和潛力,同時指出未來改進和擴展的方向。如果你需要更多具體實驗設計或數據分析的細節,請告訴我。 ## 參考文獻