1 内容介紹
為了滿足人工智能在目辨別别方法中的應用需求,需要具備對海量資料進行智能分類、識别、判讀的能力.進一步挖掘了目标特性資料庫資料,并将基于HOG+SVM的目辨別别算法應用于紅外目辨別别過程中.選擇采集到的汽車、直升機、飛機、艦船、無人機等目标,并結合HOG算子與SVM分類方法來實作目标檢測與分類算法,進而實作了目标智能化分類研究,為後續目标特性的進一步分析以及導引頭智能化算法設計提供了支撐.
2 部分代碼
%% 用hog特征對圖像進行多分類,svm訓練,1 VS 1
%% 1 資料集,包括訓練的和測試的 (注意自己圖檔存放路徑,附錄我給出示例下載下傳圖檔連結)
imdsTrain = imageDatastore('train_images',...
'IncludeSubfolders',true,...
'LabelSource','foldernames');
imdsTest = imageDatastore('test_image');
%% 顯示訓練的圖檔種類Labels和數量Count
Train_disp = countEachLabel(imdsTrain);
disp(Train_disp);
%% 2 對訓練集中的每張圖像進行hog特征提取,測試圖像一樣
% 預處理圖像,主要是得到features特征大小,此大小與圖像大小和Hog特征參數相關
imageSize = [256,256];% 對所有圖像進行此尺寸的縮放
image1 = readimage(imdsTrain,1);
scaleImage = imresize(image1,imageSize);
[features, visualization] = extractHOGFeatures(scaleImage);
imshow(scaleImage);hold on; plot(visualization)
% 對所有訓練圖像進行特征提取
numImages = length(imdsTrain.Files);
featuresTrain = zeros(numImages,size(features,2),'single'); % featuresTrain為單精度
for i = 1:numImages
imageTrain = readimage(imdsTrain,i);
imageTrain = imresize(imageTrain,imageSize);
featuresTrain(i,:) = extractHOGFeatures(imageTrain);
end
% 所有訓練圖像标簽
trainLabels = imdsTrain.Labels;
% 開始svm多分類訓練,注意:fitcsvm用于二分類,fitcecoc用于多分類,1 VS 1方法
classifer = fitcecoc(featuresTrain,trainLabels);
%% 預測并顯示預測效果圖
numTest = length(imdsTest.Files);
for i = 1:numTest
testImage = readimage(imdsTest,i);
scaleTestImage = imresize(testImage,imageSize);
featureTest = extractHOGFeatures(scaleTestImage);
[predictIndex,score] = predict(classifer,featureTest);
figure;imshow(testImage);
title(['預測圖像: ',char(predictIndex)]);
end
3 運作結果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO5EDN5YWY5QzNjZDOzgjMzYzX4QzNzcTM5EzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)