嵌入式屬于人工智能嗎?
時間:2019-10-24 來源:沈陽中心,任老師
嵌入式是以應用為中心,以計算機技術為基礎,具備存儲、通訊、顯示能力,并且軟硬件可裁剪、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統.嵌入式系統是一種軟件和硬相結合的專用的計算機系統,作為裝置或設備的一部分。
那么嵌入式屬不屬于人工智能呢?從一定層面講人工智能已經是嵌入式不可或缺的一部分,嵌入式人工智能(AI)是將人工智能算法運行在嵌入式系統的概念,在融入軟硬件結合的同時繼續添加自動化、智能化的技術。其實在隨著科技的發展我們先后經歷了互聯網時代、物聯網時代,那么現在或者說不久的將來應該是人工智能和物聯網的智聯網時代,嵌入式人工智在智能家居、智能零售、智能交通、智能醫療、智能教育、智能物流、智能安防、智能機器人等行業已經發揮了它巨大的潛力。
通過人工智能在驅動底層硬件整合軟件算法的同時可以對設備的運算能力、使用功耗、本身散熱等方面進行優化獲得最佳的計算模型。人工智能具備機器機器學習的能力,未來將會提高和用戶的交互體驗,典型的虛擬現實及自動駕駛技術都是人工智能機器學習的代表。
人工智能已經滲透到生活的各個方面,嵌入式人工智能也在逐步的融入我們的生活,方方面面屢見不鮮,這里以openCV為例可見一斑。那么什么是openCV呢, OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效,由一系列 C 函數和少量 C++ 類構成,同時提供了多語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法.在人機互動 、物體識別、圖像分割、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析、汽車安全駕駛等方面應用巨大。OpenCV dnn深度神經網絡擴展模塊,近幾年在工業界和學術界新型的一個機器學習領域的流行話題。dnn算法成功的將以往的識別率提高了一個顯著的檔次。嵌入式開發過程中傳輸采用基于linux內核的OpenWrt操作系統可用于WiFi視頻傳輸與控制,圖片處理采用OpenCV框架,實現對圖像的捕捉以及預處理,人工智能方向采用谷歌的機器學習框架TensorFlow,實現深度學習方面的的實際案例。
嵌入式智能人臉識別是一個很典型的嵌入式人工智能的案例,是通過嵌入式系統及openCV級聯分類器完美結合的產物,具體實現如下:

int main(int argc, char** argv) {
//創建openCV級聯分類器對象c
CascadeClassifier c;
//加載級聯分類器的配置文件haarcascade_frontalface_alt.xml.xml
bool res = true;
res = c.load("haarcascade_frontalface_alt.xml");
//判斷配置文件是否存在
if(res == false){
cout << "xml is wrong!" << endl;
return -1;
}else{
cout << "xml is ok!" << endl;
}
//獲得Mat對象
Mat src = imread("test.jpg");
//創建Mat圖片
Mat dst = Mat::zeros(src.size(), src.type());
if(src.data == 0){
cout << "src is wrong!"<< endl;
return -1;
}else{
cout << "src is ok" << endl;
}
namedWindow("src", CV_WINDOW_AUTOSIZE);
imshow("src", src);
//更改dst圖片的色彩空間
cvtColor(src, dst, CV_BGR2GRAY);
//dst:通道1,深度是8位
imshow("dst", dst);
Mat dst1 = Mat::zeros(src.size(), src.type());
//直方圖均衡化
equalizeHist(dst, dst1);
imshow("dst1", dst1);
//定義存儲人臉區域的Rect集合
vector<Rect> faces;//元素是Rect類型,訪問元素faces[i]
//識別圖像里面的人臉
c.detectMultiScale(dst1, faces, 1.1, 3, 0, Size(24, 24));
//輸出人臉的個數
cout << "face num : " << faces.size() << endl;
//輸出人臉的矩形位置
int i = 0;
for(i = 0; i < faces.size(); i++){
//繪制人臉的矩形區域
rectangle(src, faces[i], Scalar(0, 0, 255), 2, LINE_8, 0);
}
namedWindow("dst2", CV_WINDOW_AUTOSIZE);
imshow("dst2", src);
waitKey(0);
return 0;
}
人臉識別效果如圖所示:


