前言
本教程旨在教讀者如何用c++寫模型,訓練模型,根據模型預測對象。為便於教學和使用,本文的c++模型均使用libtorch(或者pytorch c++ api)完成搭建和訓練等。目前,國內各大平台似乎沒有pytorch在c++上api的完整教學,也沒有基於c++開發的完整的深度學習開源模型。可能原因很多:
- c/c++的深度學習已經足夠底層和落地,商用價值較高,開發難度偏大,一般不會開源;
- 基於python訓練,libtorch預測的部署形式足夠滿足大多數項目的需求,如非產品級應用,不會有人願意研究如何用c++從頭搭建模型,實現模型訓練功能;
- Tensorflow的市場份額,尤其時工業應用的部署下市場占比足夠高,導致基於libtorch的開發和部署占比很小,所以未見開源。
本教程提供基於libtorch的c++開發的深度學習視覺模型教學,本教程的開發平台基於Windows環境和Visual Sutdio集成開發環境,實現三大深度視覺基本任務:分類,分割和檢測。適用人群為:
- 有c++基礎,了解面向對象思維,
- 有pytorch或者其他深度學習編程經驗,但對模型落地部署等經驗不足者。
章節安排
本教程分多個章節:
- 第一章:開發環境搭建:VS+libtorch和Qt+libtorch
- 第二章:張量的常規操作
- 第三章:簡單模型搭建
- 第四章:數據加載模塊使用
- 第五章:分類模型搭建,訓練和預測
- 第六章:分割模型搭建,訓練和預測
- 第七章:目標檢測模型搭建,訓練和預測
- 第八章:總結和展望
在第一章中,筆者將介紹教程使用的開發環境。第二章,筆者將介紹libtorch中的torch::Tensor類的常用操作,便於后續復雜算法的落地實施。第三章,筆者將以一個簡單的線性模型為例,介紹如何在c++上創建一個分類或者回歸模型。第四章,筆者將介紹如何使用libtorch的dataload模塊,這對c++模型的訓練極其重要。第五、六、七章中,教程將詳細描述如何實現一個c++分類器,一個c++語義分割器,一個c++目標檢測器,包含功能分別為:分類圖片,語義分割圖片,檢測圖片中的目標。第八章為全部教程的總結和展望。
第一章
事實上,在前面的pytorch部署博客和libtorch的QT部署中筆者已經分享了自己搭建libtorch開發環境的記錄。其余並無太多要贅述的。
分享不易,如果有用請不吝給我一個👍,轉載注明出處:https://allentdan.github.io/
代碼見LibtorchTutorials