MIP-Splatting:全流程配置與自制數據集測試【ubuntu20.04】【2025最新版】

一、引言

在計算機視覺和神經渲染領域,3D場景重建與渲染一直是熱門研究方向。近期,3D高斯散射(3D Gaussian Splatting)因其高效的渲染速度和優秀的視覺質量而受到廣泛關注。然而,當處理大型復雜場景時,這種方法面臨著內存消耗過大和訓練效率低下的問題。2024年,來自德國圖賓根大學自主視覺團隊(Autonomous Vision Group)開發的MIP-SplattingCVPR 2024 Best Student Paper】提出了創新性解決方案,通過引入多尺度表示和興趣點策略,顯著提高了系統的性能和效率。
本文記錄了我對MIP-Splatting技術的完整復現過程,從理論基礎到環境配置,再到訓練測試,全面展示這項技術的優勢和實現細節。無論你是計算機視覺研究者,還是對三維重建感興趣的開發者,這篇博客都將幫助你理解并應用這一前沿技術。

在這里插入圖片描述
該項目由德國圖賓根大學的自主視覺團隊(Autonomous Vision Group)開發,該團隊在計算機視覺、神經渲染和3D重建領域享有盛譽。主要團隊成員包括來自圖賓根大學和馬克斯·普朗克智能系統研究所的研究人員
該項目已在GitHub上完全開源,包括源代碼、預訓練模型和示例數據。
代碼庫:https://github.com/autonomousvision/mip-splatting

二、技術原理解析

2.1 3DGS簡介

3DGS是一種新型神經渲染技術,它使用3D空間中的高斯點云來表示場景。每個高斯點包含位置、旋轉、縮放和顏色信息,可以通過差分光柵化進行高效渲染。與傳統的神經輻射場(NeRF)相比,這種方法實現了數量級更快的渲染速度,同時保持了高質量的視覺效果。

2.2 MIP-Splatting核心創新

MIP-Splatting在3D高斯散射的基礎上,引入了兩個關鍵創新:

  • 多分辨率表示(Multi-resolution Representation):類似于傳統圖形學中的MIP映射(Mipmapping),MIP-Splatting構建了多層級的高斯點表示。當觀察者距離場景較遠時,系統會使用低分辨率表示,減少渲染計算量;當觀察者靠近時,則采用高分辨率表示,保證細節質量。這種多尺度策略極大地提高了渲染效率。
  • 興趣點策略(Interest Points):MIP-Splatting引入了興趣點檢測機制,自動識別場景中視覺上重要的區域,并在這些區域分配更多的高斯點,而在不重要的區域使用更少的點。這種自適應分配優化了內存使用和計算資源。
  • 自適應優化(Adaptive Optimization):動態調整高斯點的分布和密度;智能分配計算資源,將更多資源用于視覺上重要的區域

2.3 技術優勢

MIP-Splatting相比傳統3DGS具有以下顯著優勢:

  • 內存效率:在相同質量下,內存使用減少50-80%
  • 訓練速度:訓練時間縮短40-60%
  • 渲染質量:特別在遠距離場景中,質量顯著提升
  • 可擴展性:能夠處理更大規模的復雜場景

2.4 優缺點分析

(1)優點

  • 顯著降低內存需求,使大場景渲染更加實用
  • 保持了實時渲染能力,同時提高了視覺質量
  • 多分辨率表示使其更適合不同距離的渲染
  • 完全開源,易于研究和擴展

(2)缺點

  • 興趣點檢測可能需要額外的計算資源
  • 多分辨率表示增加了實現的復雜性
  • 對硬件要求仍然較高(需要現代GPU)
  • 在極其復雜的場景中可能仍有優化空間

2.5 推薦測試數據集

MIP-Splatting作者推薦的測試數據集包括:

  • NeRF 合成數據集:從 Google Drive 下載。
    Google Drive 該地址貌似已經掛了,可以點擊以下鏈接從百度飛槳進行下載
    https://aistudio.baidu.com/datasetdetail/136816下載并解壓縮nerf_synthetic.zip
  • Mip-NeRF 360 數據集:從 Mip-NeRF 360 下載,可能需額外請求某些場景。
  • 自定義數據集:項目提供了處理自定義數據的工具

三、主要工作流程

3.1 初始化:從輸入圖像集合中重建初始點云(通常使用COLMAP)

3.2 興趣點檢測:分析場景,識別視覺上重要的區域

3.3 多分辨率構建:創建不同分辨率級別的高斯點表示

3.4 優化階段:

3.5 渲染:基于視點位置和方向,實時渲染場景

四、環境配置與安裝

2.1 硬件要求

在開始前,確保你的系統滿足以下硬件要求:

  • CUDA兼容的GPU(建議至少8GB VRAM,理想為16GB+)
  • 至少16GB系統RAM
  • 充足的存儲空間(建議SSD)

我的測試環境是:

  • 系統: Ubuntu 20.04 LTS
  • RAM: 64GB
  • GPU: NVIDIA GeForce RTX 4090(24GB VRAM)

在這里插入圖片描述

2.1 環境配置

1、克隆倉庫

從 GitHub 克隆項目

git clone https://github.com/autonomousvision/mip-splatting.git
cd mip-splatting

2、創建虛擬環境

使用Conda創建獨立的虛擬環境是一個良好實踐,它可以避免依賴沖突并方便環境管理:

# 創建名為mip-splatting的conda環境
conda create -y -n mip-splatting python=3.8
conda activate mip-splatting

3、安裝依賴庫

安裝過程需要特別注意PyTorch與CUDA版本的匹配:

# 安裝PyTorch(確保與你的CUDA版本兼容)
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
conda install cudatoolkit-dev=11.3 -c conda-forge# 安裝基本依賴
pip install -r requirements.txt# 安裝擴展庫 
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn/

在安裝過程中,如果遇到PyTorch與CUDA版本不匹配的問題。解決方法是確認自己的CUDA版本(nvcc --version),然后安裝相應版本的PyTorch。

4 驗證安裝

安裝完成后,建議驗證環境是否正確配置:

python -c "import torch; print('CUDA available:', torch.cuda.is_available()); print('CUDA version:', torch.version.cuda); print('GPU count:', torch.cuda.device_count()); print('GPU name:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None')"

如果一切正常,你應該能看到GPU信息和CUDA可用狀態。
還可以通過conda list 查看虛擬環境中所安裝的庫
在這里插入圖片描述
環境配置完畢!!

五、數據集準備

5.1 準備NeRF合成數據集

為了初步測試系統功能,我首先使用了項目推薦的的數據集:

  • NeRF 合成數據集:從 Google Drive 下載。
    Google Drive 該地址貌似已經掛了,可以點擊以下鏈接從百度飛槳進行下載
    https://aistudio.baidu.com/datasetdetail/136816下載并解壓縮nerf_synthetic.zip
tar -xvf nerf_synthetic.tar # 解壓文件

然后再項目目錄下新建一個data文件夾,將nerf_synthetic放在里面

mkdir -p data
mv nerf_synthetic data/

目錄結構如下圖所示:

mip-splatting/
├── data/
│ ├── nerf_synthetic/
│ │ ├── bonsai/
│ │ ├── chair/
│ │ └── …
│ ├── mipnerf360/ (可選)
└── …

在這里插入圖片描述

5.2 NeRF合成數據集轉化

因為 mip-splatting 項目使用的是不同于 NeRF/Blender 的多尺度訓練數據格式,你必須先轉為它支持的目錄結構和 JSON 格式,否則訓練和渲染會出錯

5.2.1 原始 NeRF 數據集結構(如 nerf_synthetic/lego)

lego/
├── images/ ← 原始圖像
├── transforms_train.json
├── transforms_val.json
├── transforms_test.json

這種結構適用于 NeRF + instant-ngp + mip-NeRF 系列項目,但 mip-splatting 不能直接讀取
mip-splatting 不直接支持這種格式的原因是
它需要讀取:

  • 多分辨率圖像(如 images_2, images_4)

  • metadata.json 中描述圖像 → 相機參數 → 分辨率

  • 統一的路徑結構,如 d0/, d1/, d2/…

  • 所以必須做格式轉換

5.2.2 數據集轉換

python convert_blender_data.py --blender_dir nerf_synthetic/ --out_dir multi-scale
  • –blender_dir :nerf_synthetic/
    指向原始 NeRF 數據所在的主目錄(例如 nerf_synthetic/lego)
  • –out_dir:multi-scale
    指定輸出路徑,用于保存轉換后的 mip-splatting 格式數據

這行代碼可將NeRF 合成數據集(Blender 格式)轉換為 mip-splatting 所需的多尺度訓練格式。
將 nerf_synthetic/{scene} 下的數據(如 transforms_train.json, images/ 等),轉換為 multi-scale/{scene} 下的多尺度結構,包括 d0/, d1/, metadata.json 等。

如下圖所示:
在這里插入圖片描述

六、訓練與評估

現在,可以使用官方數據集測試項目是否正常運行。

6.1 運行 NeRF 合成數據集(單尺度+多尺度訓練):

# single-scale training and multi-scale testing on NeRF-synthetic dataset
python scripts/run_nerf_synthetic_stmt.py 
# multi-scale training and multi-scale testing on NeRF-synthetic dataset
python scripts/run_nerf_synthetic_mtmt.py 

訓練結束后會分別生成單多尺度訓練文件夾,如下圖所示
在這里插入圖片描述

七、在線查看

訓練后,可以將 3D 平滑濾波器與高斯參數融合在一起

python create_fused_ply.py -m {model_dir}/{scene} --output_ply fused/{scene}_fused.ply"
## 在這里我們使用了如下代碼
python create_fused_ply.py -m multi-scale/chair --output_ply fused/chair_fused.ply

會在fused目錄下生成chair_fused.ply文件
在這里插入圖片描述
然后可以使用的在線3D查看器來可視化經過訓練的模型

在這里插入圖片描述

八、自制數據集訓練【使用自制圖片數據集】

8.1 準備自己的圖片

(1)拍攝場景的多視角圖片:

  • 拍攝 20-100 張照片,從不同角度覆蓋整個場景
  • 保持適當的重疊度(相鄰圖片有約 60-70% 的重疊)
  • 避免運動模糊和光照變化
  • 使用高質量相機,保持固定焦距

(2)創建數據目錄結構:

# 創建目錄來存放圖片
mkdir -p data/3dgsdata/1/input
# 將您的圖片復制到這個目錄
cp /path/to/your/photos/*.jpg data/3dgsdata/1/input

8.2 使用 COLMAP 進行結構化數據處理

MIP-Splatting 需要使用 COLMAP 生成的相機參數和稀疏點云。以下是完整步驟:

(1) 安裝 COLMAP

#安裝依賴
sudo apt-get install git cmake ninja-build build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libeigen3-dev libflann-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgtest-dev libsqlite3-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libceres-dev# 下載colmap
git clone https://github.com/colmap/colmap.git
#進入文件夾
cd colmap
git checkout 3.7
#創建并進入build文件夾
mkdir build
cd build#構建安裝
cmake .. -GNinja #CMake預處理,生成Ninja構建系統所需的文件
ninja #默認使用系統最大可用cpu核心數進行編譯,如果系統cpu有32個核,等效與ninja -j32
sudo ninja install

(2)運行 COLMAP 處理

MIP-Splatting 提供了一個腳本來自動運行 COLMAP 并準備數據格式:

# 返回到 mip-splatting 目錄
cd /path/to/mip-splatting# 運行 COLMAP 數據處理腳本,為相機參數創建必要的文件
python convert.py -s data/3dgsdata/1 --resize# 參數說明:
# --s: 指定包含圖片的數據目錄
# --resize: 使用標志時,創建圖像的縮小版本(50%、25%、12.5%)

這個腳本會:

  • 運行 COLMAP 的特征提取和匹配
  • 執行增量式重建
  • 轉換 COLMAP 輸出為 MIP-Splatting 所需的格式
  • 生成訓練/測試分割

生成的文件夾目錄如圖所示

/path/to/your/images//input            # Your original images/images           # Original size images processed by COLMAP/images_2         # 50% scaled images/images_4         # 25% scaled images/images_8         # 12.5% scaled images/sparse           # Camera parameters

8.3 訓練模型

1、單尺度訓練(STMT)

python train.py -s data/3dgsdata/1 -m output/1 --eval  --kernel_size 0.1
## 參數意義
-s data/3dgsdata/1     設置輸入數據路徑。該目錄應包含 images/ 和轉換后的 transforms_train.json
-m output/1            設置模型輸出路徑。訓練中會將 checkpoint 和日志保存到該路徑下
--eval                 每隔一段迭代自動執行一次測試(調用 render()),生成結果圖像和指標,如果不添加此參數,后續無法計算指標
--kernel_size 0.1      控制初始高斯點的半徑,影響點的體積。值越大表示點云分布越粗,越小越精細。推薦值 0.03~0.1

2、多尺度訓練

python train.py -s data/3dgsdata/1 -m output/1 --eval --load_allres --sample_more_highres --kernel_size 0.1
## 參數意義
-s data/3dgsdata/1     設置輸入數據路徑。該目錄應包含 images/ 和轉換后的 transforms_train.json
-m output/1            設置模型輸出路徑。訓練中會將 checkpoint 和日志保存到該路徑下
--eval                 每隔一段迭代自動執行一次測試(調用 render()),生成結果圖像和指標,如果不添加此參數,后續無法計算指標
##額外多的參數
--load_allres          加載多分辨率圖像(如 images_2, images_4,這些來自 convert.py --resize)
--sample_more_highres  在訓練采樣中優先選擇更高分辨率的圖像,以增強高精細區域的學習效果--kernel_size 0.1      控制初始高斯點的半徑,影響點的體積。值越大表示點云分布越粗,越小越精細。推薦值 0.03~0.1

3、訓練效果對比

在這里插入圖片描述

為了更大發揮模型性能,此處采用了多尺度訓練方式,如下圖所示:
在這里插入圖片描述
在這里插入圖片描述

Training progress: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 30000/30000 [14:50<00:00, 33.69it/s, Loss=0.0067375]

[ITER 30000] Evaluating test: L1 0.005026974682030933 PSNR 33.37032018389021 [14/04 19:31:06]

[ITER 30000] Evaluating train: L1 0.003797494899481535 PSNR 37.59125595092774 [14/04 19:31:06]

[ITER 30000] Saving Gaussians [14/04 19:31:06]

Training complete. [14/04 19:31:07]

real 15m2.915s
user 15m6.362s
sys 0m17.852s

8.4 模型渲染

# 渲染新視角,生成模型輸出圖像
python render.py -m output/1 --skip_train
## 參數介紹
python render.py    執行渲染腳本。該腳本讀取測試數據 + 已訓練模型,輸出渲染結果圖像
-m output/1         指定模型路徑
--skip_train        表示跳過訓練集圖像的渲染,僅對測試集進行渲染(節省時間和顯存)
no --skip_train     對訓練集和測試及都會進行渲染
## 代碼作用
使用路徑 output/1 下保存的模型,執行測試圖像的渲染過程,生成預測圖像(test_preds)和對應的 GT(ground truth)對齊圖像,用于后續評估(如 SSIM、PSNR、LPIPS)

會在 output/1/ 中生成如下內容:

output/1/
├── config.yml                ← 模型配置文件
├── checkpoint_30000.pth      ← 最終模型權重
└── test/└── ours_30000/├── test_preds_1/     ← 渲染預測圖像└── gt_1/             ← 對齊 ground truth 圖像(真實圖)

輸出圖像格式說明

每個測試視角圖像(如 00001.png, 00002.png)會保存兩份:

output/1/test/ours_30000/
├── test_preds_1/   ← 模型預測圖像
├── gt_1/           ← 對齊的 Ground Truth 圖像

這些將被 metrics.py 用于計算 SSIM / PSNR / LPIPS 等指標

運行代碼如下圖所示:
在這里插入圖片描述

8.5 評估模型

# 指標評估
python metrics.py -m output/1
## 參數介紹
-m output/1         指定模型路徑
## 可選參數
-r 或 --resolution    默認-1    設置用于評估的分辨率等級:1 表示使用 images;2 表示 images_2;依此類推。-1 為自動匹配 默認優先選 test_preds_1/(即分辨率等級為 1 的圖像),會自動查找 ours_30000/ 目錄下的 test_preds_* 子文件夾,所以評估的是原始圖像分辨率下的結果,對應模型訓練時 d0
## 代碼作用
使用 output/1 中的測試結果圖像(test_preds 與 gt),計算圖像質量評估指標:SSIM、PSNR、LPIPS。
這是最終量化模型好壞的關鍵步驟,常用于論文報告與模型對比。

metrics.py 的工作流程

執行這條命令后會依次完成以下步驟:
(1)加載預測圖與 GT 圖:

  • 從 output/1/test/ours_30000/test_preds_1/ 中讀取預測圖像

  • 從 output/1/test/ours_30000/gt_1/ 中讀取對應的 GT 圖像

  • 每對圖像都會被讀取為 tensor 并送入指標計算器

(2)計算三種指標:

  • SSIM(結構相似度)

  • PSNR(峰值信噪比)

  • LPIPS(感知圖像距離,加載 VGG 特征網絡)

各個指標含義詳解
在這里插入圖片描述

輸出結果(控制臺 + 文件):

  • 控制臺輸出:
    在這里插入圖片描述
    Scene: output/1
    Method: ours_30000
    Metric evaluation progress: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:00<00:00, 11.17it/s]
    SSIM : 0.9742036
    PSNR : 33.3556633
    LPIPS: 0.0743872

  • 保存文件:

    output/1/results.json:總體指標

    output/1/per_view.json:每張圖像的指標值

8.6 后處理

(1)創建包含 3D 平滑參數的融合 PLY 文件:
在這里插入圖片描述
2)使用在線查看器以交互方式瀏覽您的場景:

  • 將融合 PLY 上傳到 [Mip-Splatting 在線查看器]
  • 或者,如果已設置查看器,則在本地查看

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75865.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 高可用集群搭建與優化實踐

在分布式系統中,緩存技術用于提升性能和響應速度。 Redis 作為一款高性能的鍵值存儲系統,廣泛應用于緩存、消息隊列和會話管理等場景。隨著業務規模的擴大,單機 Redis 的性能和可用性逐漸無法滿足需求。 因此,搭建高可用的 Redis 集群可以解決這一問題。我將詳細介紹 Red…

專題十五:動態路由——BGP

一、BGP的基本概念 BGP&#xff08;Border Gateway Protocol&#xff0c;邊界網關協議&#xff09;是一種用于在不同自治系統&#xff08;AS&#xff09;之間交換路由信息的外部網關協議&#xff08;EGP&#xff09;。通過TCP179端口建立連接。目前采用BGP4版本&#xff0c;IP…

【Flask開發】嘿馬文學web完整flask項目第4篇:4.分類,4.分類【附代碼文檔】

教程總體簡介&#xff1a;2. 目標 1.1產品與開發 1.2環境配置 1.3 運行方式 1.4目錄說明 1.5數據庫設計 2.用戶認證 Json Web Token(JWT) 3.書架 4.1分類列表 5.搜索 5.3搜索-精準&高匹配&推薦 6.小說 6.4推薦-同類熱門推薦 7.瀏覽記錄 8.1配置-閱讀偏好 8.配置 9.1項目…

在Mac上離線安裝k3s

目錄 首先是安裝multipass。 1. 系統要求 2. 環境準備 本來想照著網上文檔學習安裝一下k3s&#xff0c;沒想到在docker被封了之后&#xff0c;現在想通過命令行去下載github的資源也不行了&#xff08;如果有網友看到這個文檔、并且知道問題原因的&#xff0c;請留言告知&am…

vscode+wsl 運行編譯 c++

linux 的 windows 子系統&#xff08;wsl&#xff09;是 windows 的一項功能&#xff0c;可以安裝 Linux 的發行版&#xff0c;例如&#xff08;Ubuntu&#xff0c;Kali&#xff0c;Arch Linux&#xff09;等&#xff0c;從而可以直接在 windows 下使用 Linux 應用程序&#xf…

基于源碼分析 HikariCP 常見參數的具體含義

HikariCP 是目前風頭最勁的 JDBC 連接池&#xff0c;號稱性能最佳&#xff0c;SpringBoot 2.0 也將 HikariCP 作為默認的數據庫連接池。 要想用好 HikariCP&#xff0c;理解常見參數的具體含義至關重要。但是對于某些參數&#xff0c;盡管官方文檔給出了詳細解釋&#xff0c;很…

docker部署scylladb

創建存儲數據的目錄和配置目錄 mkdir -p /root/docker/scylla/data/data /root/docker/scylla/data/commitlog /root/docker/scylla/data/hints /root/docker/scylla/data/view_hints /root/docker/scylla/conf快速啟動拷貝配置文件 docker run -d \--name scylla \scylladb/…

golang 在windows 系統的交叉編譯

基本交叉編譯命令 GOOS目標操作系統 GOARCH目標架構 go build -o 輸出文件名 包路徑 編譯 Linux 64位程序 set GOOSlinux set GOARCHamd64 go build -o myapp-linux main.go 編譯 MacOS (Darwin) 64位程序 set GOOSdarwin set GOARCHamd64 go build -o myapp-macos main.go …

本地mock服務編寫

確認有需要mock的接口文檔后&#xff0c;本地可以mock服務編寫&#xff1b; 用于測試UI事務、模擬對接組件等&#xff1b; 使用python FLASK可以輕松建立本地mock服務端&#xff0c;注冊預期的接口響應&#xff01;flask會在接收端持續打印收到的請求&#xff01; 注意&#…

京東云智能體平臺joybuilder v3.0.0測試

平臺介紹&#xff1a; JoyBuilder 是京東云推出的 AI 原生應用開發平臺&#xff0c;以下是對它的具體介紹&#xff1a; 開發方式便捷高效&#xff1a;將 AI 能力融入低代碼平臺&#xff0c;用戶通過對話式交互方式&#xff0c;輸入如 “創建客戶反饋管理系統” 等需求&#x…

前端實現對接現成文件下載接口(xlsx)

針對于Ant Design 框架 1.在你的api文件下編寫接口路徑 import request from /utils/request import storage from storeimport {AUTHORIZATION} from /store/mutation-types const api {downloadVocabularyTemplate:/vocabulary/downloadVocabularyTemplate, }export funct…

TCPIP詳解 卷1協議 六 DHCP和自動配置

6.1——DHCP和自動配置 為了使用 TCP/IP 協議族&#xff0c;每臺主機和路由器需要一定的配置信息。基本上采用3種方法&#xff1a;手工獲得信息&#xff1b;通過一個系統獲得使用的網絡服務&#xff1b;使用某種算法自動確定。 擁有一個IP 地址和子網掩碼&#xff0c;以及 DN…

聯想電腦開機出現Defalut Boot Device Missing or Boot Failed怎么辦

目錄 一、恢復bios默認設置 二、關機重啟 三、“物理”方法 在圖書館敲代碼時&#xff0c;去吃了午飯回來發現剛開機就出現了下圖的問題&#xff08;崩潰&#xff09;&#xff0c;想起之前也發生過一次 這樣的問題&#xff0c;現在把我用到的方法寫在下面&#xff0c;可能對…

用戶登陸UI

本節任務 完成用戶登陸UI&#xff0c;點擊登陸按鈕跳轉到應用主頁 界面原型&#xff1a; 登陸頁面&#xff1a; 登陸成功頁面&#xff1a; 涉及知識點&#xff1a; 線性布局Image組件輸入框復選框分割線按鈕路由跳轉背景色、內容對齊 1 新建項目 錄入項目信息&#xff1a;…

linux多線(進)程編程——(1)前置知識

liunx多線程編程&#xff08;前置知識&#xff09;前置知識 前言 學習編程就像是修仙&#xff0c;分為宗門的正統修士&#xff08;計算機專業的學生&#xff09;&#xff0c;以及野修&#xff08;半路轉碼&#xff09;。正統修士有各大宗門的功法&#xff0c;保證一路修行暢通…

Npfs!NpFsdCreate函數分析之從NpCreateClientEnd函數分析到Npfs!NpSetConnectedPipeState

第一部分&#xff1a; 1: kd> g Breakpoint 5 hit Npfs!NpFsdCreate: baaecba6 55 push ebp 1: kd> kc # 00 Npfs!NpFsdCreate 01 nt!IofCallDriver 02 nt!IopParseDevice 03 nt!ObpLookupObjectName 04 nt!ObOpenObjectByName 05 nt!IopCreateFile 06…

【軟件測試】bug 篇

本章思維導圖&#xff1a; 1. 軟件測試的生命周期 軟件測試貫穿于整個軟件的生命周期 流程階段需求分析測試計劃測試設計/開發測試執行測試評估上線運行維護具體工作內容1. 閱讀需求文檔 2. 標記可測試需求 3. 確定測試類型1. 制定測試范圍 2. 選擇測試工具 3. 分配資源1. 編寫…

「Unity3D」圖片導入選項取消Read/Write,就無法正確顯示導入大小,以及Addressable打包無法正確顯示的問題

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾選&#xff0c;就會讓圖片導入設置中&#xff0c;不勾選Read/Write&#xff0c;就無法正確顯示紋理的大小數字。 更進一步的問題是&#xff0c;使用Addressable打包的時候&#xff0c; 如…

《MySQL從入門到精通》

文章目錄 《MySQL從入門到精通》1. 基礎-SQL通用語法及分類2. 基礎-SQL-DDL-數據庫操作3. 基礎-SQL-DDL-表操作-創建&查詢4. 基礎-SQL-DDL-數據類型及案例4.1 數值類型4.2 字符串類型4.3 時間和日期類型 5. 基礎-SQL-DDL-表操作-修改&刪除5.1 DDL-表操作-修改5.2 DDL-表…

Vccaux_IO在DDR3接口中的作用

一、Vccaux_IO在DDR3接口中的作用 1.vccaux_io通常為FPGA的IO bank的輔助電源&#xff0c;用于支持特定電壓的IO標準 2.在DDR3接口中&#xff0c;FPGA的IO bank需要DDR3芯片的電壓(1.5v/1.35v)匹配 3.Vccaux_IO用于為FPGA的DDR3接口I/O Bank供電&#xff0c;其電壓值、噪聲和穩…