專題報告書 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 簡易架構圖**

### GPT-4 Vision
GPT-4V(ision) 是最新的多模態大語言模型(LLM),能夠處理圖像輸入,為使用者提供視覺分析功能。主要應用包括為視障者提供視覺描述服務、檢測圖像中的有害內容和提高模型拒絕不適當請求的能力。GPT-4V 透過結合文本和圖像數據,展示了強大的多模態處理能力,並在醫療建議、科學分析等高風險領域進行了深入測試。GPT-4V 展示了在視覺分析方面的巨大潛力,但也面臨許多風險和挑戰。未來將繼續研究如何處理圖像上傳中的敏感信息,提高模型的準確性和安全性,並探索在全球範圍內的應用。
## 研究方法
### 一 研究流程圖

1. 資料收集:利用Google Street View API獲取城市街景數據,並使用GPT-4 API生成對應的文本描述。
2. 資料處理:應用RAG技術對收集到的街景數據進行識別和分類,提取出關鍵信息。
3. 系統開發:設計並實現一個全面的街景搜索系統,提供用戶友好的界面和功能。
4. 整合測試:進行系統前端與後端的整合測試。
### 二 設計系統架構圖

### 三 選擇目標區域並進行街景圖片收集
#### 為何選擇信義區
在選擇目標實驗區域時,我們希望這個區域可以擁有多樣的景觀,以證明我們的方法可以應用在尋找任何場景下,同時亦要是我們熟悉的區域,才有利我們進行修正和校對。因此在臺北市的行政區中,我們選擇了信義區,因為這裡同時有辦公大樓、觀光娛樂產業,以及民宅和綠地,是臺北市景觀最多元的區域。
#### 街景圖片收集
* 標記出信義區的重要路段,以及隨機選取的一些小巷和民宅道路
* 利用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筆,針對圖片的文字敘述進行審核。
範例:

- **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框架進行網頁框架的撰寫

#### 八 前後端網站整合
##### 設置後端API
利用FastAPI建構簡單的API,用於處理前端請求並返回檢索結果。
## 研究分析與結果
### 作品成果


在我們輸入使用者關鍵字後,網頁會導向搜尋結果的頁面。
### 測試結果
1. **準確性**:GPT-4 Vision生成的描述在大部分情況下能夠準確反映街景細節,特別是在建築物、道路和植被等方面。
2. **檢索性能**:系統在處理大量街景數據時表現出色,能夠快速檢索並生成準確的描述。
## 研究結論與建議
### 結論
本研究證明了應用GPT-4視覺和檢索增強生成技術在城市街景數據分析中的潛力。該系統能夠提供詳細的街景描述,有助於買房者更好地了解周邊環境,提升購房決策的效率。
### 建議
1. **技術優化**:進一步優化RAG技術,提高描述的準確性和詳細程度,特別是在人流密集區域的細節描述。
2. **應用擴展**:探索該技術在其他領域的應用,如智能交通、環境監測和城市規劃等。
3. **用戶教育**:對使用者進行教育,讓他們了解該系統的優勢和局限,避免過度依賴系統生成的信息。
### 未來研究方向
1. **多語言支持**:擴展系統的語言支持,以適應全球不同地區的需求。
2. **實時更新**:開發實時更新功能,使系統能夠反映最新的街景變化。
這樣的結論和建議能夠展示研究的價值和潛力,同時指出未來改進和擴展的方向。如果你需要更多具體實驗設計或數據分析的細節,請告訴我。
## 參考文獻