1. 程式人生 > >使用opencv訓練自己的adboost分類器

使用opencv訓練自己的adboost分類器

opencv中有兩個函式可以訓練分類器opencv_haartraining.exe和opencv_traincascade.exe,前者只能訓練haar特徵,後者可以用HAAR、LBP和HOG特徵訓練分類器。這兩個函式都可以在opencv\build\x64\vc14\bin資料夾下找到。

1. 首先是樣本的準備、其次是對樣本進行處理、再次生成樣本描述檔案、最後一步是訓練分類器。

2. 生成描述檔案

   正負樣本都要轉化成灰度圖,本文采用的是識別海洋上航天的航空母艦,背景選擇為大海,因為只是為了測試,這裡選取了45張較少的正樣本,77zhan張負樣本。通過之前部落格所介紹的方法進行統一灰度和尺度化(50*50)。

生成樣本描述檔案環節,如圖所示首先在CMD中cd進入到當前目錄,也就是opencv_createsamples.exe資料夾下;然後依次輸入:opencv_createsamples.exe -info pos\pos.txt -vec pos.vec -bg neg\neg.txt -num 45 -w 50 -h 50 回車之後資料夾下就會出現pos.vec檔案。只需要對正樣本進行以上操作,負樣本不需要生成vec檔案。

注意pos.txt的格式如下:

0.jpg 1 0 0 50 50
1.jpg 1 0 0 50 50
2.jpg 1 0 0 50 50
3.jpg 1 0 0 50 50
4.jpg 1 0 0 50 50
5.jpg 1 0 0 50 50

3. 訓練分類器

在以上準備工作都做好的情況下,就可以進行訓練分類器了。opencv2.x應該是叫haartarining.exe opencv3.x將haar和lbp整合成一個。在cmd命令列下輸入:C:\Users\wangz\Desktop\adboost>opencv_traincascade.exe -data cascade -vec pos.vec -bg neg\neg.txt -numpos 45 -numneg 77 -mem 80000000 -mode ALL -w 50 -h 50

訓練過程中發現一個問題,提示記憶體不足(可能是正樣本數目不足),具體還未解決,但是過程是正確的,有知道問題的小夥伴希望交流一下。

最後就是訓練出來的xml檔案的使用了,具體如下:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
String face_cascade_name = "D:/vcprojects/cascadetrain/custom_face_cascade.xml";
CascadeClassifier Detector;
String window_name = "Capture - Face detection";


int core=1 ;
int size_max = 10;
void callback(int, void*);
Mat image;

int main(int argc, char** argv) {
	// 載入訓練資料
	if (!Detector.load(face_cascade_name)) {
		printf("could not load face data...\n");
	}
	// 載入測試圖片
	
	Mat gray_src;
	Mat image = imread("123.jpg");
	namedWindow(window_name, CV_WINDOW_AUTOSIZE);
	// 轉換為灰度影象
	createTrackbar("SIZE", window_name,&core, size_max,callback);
	callback(0, 0);
	
	imshow(window_name, image);
	// 按任意鍵退出
	waitKey(0);
	return 0;
}

回撥函式部分:

void callback(int, void*) {
	Mat dimage;
	blur(image, image, Size(2*core+1, 2 * core + 1), Point(-1, -1));
	cvtColor(image, image, COLOR_BGR2GRAY);
	equalizeHist(image, dimage);
	// 使用自己訓練的級聯檢測器人臉檢測
	//threshold(dimage, );
	std::vector<Rect> faces;
	Detector.detectMultiScale(dimage, faces, 1.3, 1, 0, Size(24, 24));
	for (size_t t = 0; t < faces.size(); t++) {
		rectangle(image, faces[t], Scalar(0, 0, 255), 3);
	}
	// 顯示結果
}

相關推薦

opencv訓練自己分類

注意 這個哥們寫的非常詳細(http://blog.csdn.net/liuqz2009/article/details/62222597) 點1.建立正負樣本的時候,負樣本需要一起歸一化,灰度處理而且負樣本是正樣本1.2到1.5倍比較好,這裡自己寫了一個程式統一批量處理(

opencv 訓練自己分類

1、opencv 3.1.0 和 3.2.0 已經沒有了convert_cascade.c 檔案,開啟 ..\opencv-3.1.0\sources\samples\ 和 ..\opencv-2.4

OpenCV學習筆記——用haar特徵訓練自己分類(再做手勢檢測)

資料還是得看啊,又讀了經典文獻《Robust Real-Time Face Detection》,不願意讀原文的朋友可以看看http://blog.csdn.net/hqw7286/article/details/5556767,作者把文中的要點基本也都總結出來了。Ope

OpenCV學習筆記(三十三)——用haar特徵訓練自己分類(再做手勢檢測)

資料還是得看啊,又讀了經典文獻《Robust Real-Time Face Detection》,不願意讀原文的朋友可以看看http://blog.csdn.net/hqw7286/article/details/5556767,作者把文中的要點基本也都總結出來了。Ope

linux下,使用opencv訓練級聯分類opencv_traincascade

參考:   http://jingyan.baidu.com/article/4dc40848f50689c8d946f197.html http://blog.csdn.net/xidianzhimeng/article/details/10470839 http://w

使用opencv訓練自己adboost分類

opencv中有兩個函式可以訓練分類器opencv_haartraining.exe和opencv_traincascade.exe,前者只能訓練haar特徵,後者可以用HAAR、LBP和HOG特徵訓練分類器。這兩個函式都可以在opencv\build\x64\vc14\bi

opencv學習筆記——自己訓練人臉識別分類

       在使用opencv自帶的分類器haarcascade_frontalface_alt.xml進行人臉識別的基礎認識後,決定自己訓練一個分類器看一下效果。該過程大致可分為三個階段:樣本採集、分類器訓練和運用訓練好的分類器進行人臉檢測。1、樣本的採集       在

opencv之級聯分類訓練屬於自己的xml檔案

            基礎知識這裡就不講了,最近在做車牌識別系統中的車牌定位演算法,只講講自己訓練的可以進行車牌定位的xml檔案。這裡我是用的是opencv2.4.4版的opencv_creates

OpenCV訓練自己的人臉檢測級連分類並測試

0. 概述 分為如下幾步: step1. 製作訓練資料集 step2. 訓練分類器 step3. 使用分類器進行分類 1. 準備工作 建立一個專案目錄objection_detection/ $ mkdir objection_detecti

使用Opencv的opencv_traincascade來訓練屬於自己分類,檢測自己想檢測的東西,666,從使用到放棄。

提供一個人臉檢測的訓練工程,其裡面包括原始的訓練樣本、製作好的訓練樣本、訓練指令等,感覺其樣本分類特別麻煩其下載地址為: 1 、opencv裡的分類器大概介紹:   OpenCV中有兩個程式可以訓練級聯分類器: opencv_haartraining and open

關於opencv訓練級聯分類所使用opencv_createsamples.exe和opencv_traincascade.exe的引數的詳細說明

關於如何訓練分類器來識別一個新目標,可以看這裡。 重點注意事項: OpenCV中有兩個程式可以訓練級聯分類器: opencv_haartraining and opencv_traincascade。opencv_traincascade 是一個新程式,使用Op

opencv中應用HOG特徵訓練SVM多分類的一般框架

1.HOG特徵提取 opencv裡關於HOG特徵的提取是通過函式HOGDescriptor()來完成的,主要有下面4個建構函式: CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStri

OPENCV HOG特徵+SVM分類行人識別(從訓練到識別)

          想要訓練分類器,首先要有樣本,正樣本和負樣本,在這裡就是有人的樣本和沒有人的樣本,我的樣本來源於”INRIA Person Dataset”這個網站,連結為點選開啟連結,在下邊有個藍色here(970M),點選下載即可,也可以去我的網盤下載,地址點選開啟

opencv之級聯分類訓練opencv_traincascade

使用opencv_traincascade.exe檔案進行訓練    首先在當前目錄下新建一個dt資料夾用於存放生成的.xml檔案。    在當前目錄使用cmd命令: D:\>opencv_traincascade.exe -data dt -vec pos.vec -bg neg/neg.t

目標檢測之訓練opencv自帶的分類(opencv_haartraining 或 opencv_traincascade)

    最權威的說明,參考官方使用手冊:     http://www.OpenCV.org.cn/opencvdoc/2.3.2/html/doc/user_guide/ug_traincasca

3.8 Softmax迴歸 3.9 訓練一個softmax分類

3.7Softmax迴歸 (1)Softmax迴歸的功能:           答案:分類 (2)舉例:           答案 :系統中輸入一張圖片P,通過Softmax層,系統會

使用TensorFlow slim資料夾當中的inception_resnet_v2網路訓練自己分類資料集

每個資料夾存放一種類別的圖片 資料夾名稱即為類別名稱 轉換資料集為TFRecords格式的檔案:   進入下載以後的資料夾中/models/research/slim/,使用pycharm開啟slim資料夾,開啟轉換格式的檔案download_and_c

目標檢測(從樣本處理到訓練檢測)訓練級聯分類

一直在複習期末考試,沒能及時的將整個檢測過程寫來了。正好最近考完了,而且上個月做的檢測結果出現部分的漏檢,於是決定從頭再來一次,就當做是加深印象了。做的這個實驗是百香果的識別與檢測,類似行人和人臉檢測,下面簡單寫點自己對訓練級聯分類器整個流程淺薄的認識。下面就開始啦,整個訓

caffe 訓練自己分類模型

學習caffe的最終目的,是可以利用自己的資料集,訓練模型,並解決實際問題。 所以在前面跑通了mnist和cifar-10例程的基礎上,嘗試訓練自己的模型,從頭到尾走一遍所有的流程。準備資料、訓練並得到模型,利用模型進行分類預測。 一、準備資料 1、在網上找了一些圖片,分

pyTorch——訓練第一個分類要點解讀

網路構建 資料載入 * 引入函式庫 import torch import torchvision import torchvision.transforms as transforms *將讀入的資料進行轉化: transform = tra