1. 程式人生 > >opencv3.3版本訓練自己的物體分類器

opencv3.3版本訓練自己的物體分類器

Opencv訓練自己分類器

注:此文是我整理了網上的各方資料彙集而成,由於在實踐中遇到了很多坑,所以把自己的成功訓練的經驗寫下來做個筆記給大家做個參考

1.準備訓練樣本圖片

1.1樣本的採集:

      樣本圖片最好使用灰度圖,且最好根據實際情況做一定的預處理;樣本數量越多越好,儘量高於1000樣本間差異性越大越好

正負樣本比例為13最佳;尺寸為20x20最佳。

1.1.1正樣本

        訓練樣本的尺寸為20*20(opencv推薦的最佳尺寸),且所有樣本的尺寸必須一致。如果不一致的或者尺寸較大的,可以先將所有樣本統一縮放到20*20

 以下就是我用來訓練的正樣本:

 

1.1.2負樣本

 

 這裡要提醒一下,雖然負樣本就是樣本中不存在正樣本的內容。但也不能隨意的找些圖片來作為負樣本,比如什麼天空,大海,森林等等。最好是根據不同的專案選擇不同的負樣本,比如一個專案是做機場的人臉檢測,那麼就最好從現場拍攝一些圖片資料回來,從中採集負樣本。其實正樣本的採集也應該這樣。不同的專案,就採集不同的正樣本和負樣本。因為專案不同,往往相機的安裝規範不同,場景的拍攝角度就不同。

1.1.3 準備好工作目錄

negdata目錄: 放負樣本的目錄

posdata目錄: 放正樣本的目錄

xml目錄: 新建的一個目錄,為之後存放分類器檔案使用

negdata.txt: 負樣本路徑列表

posdata.txt: 正樣本路徑列表

pos.vec: 後續自動生成的樣本描述檔案

opencv_createsamples.exe: 生成樣本描述檔案的可執行程式(opencv自帶)

opencv_haartraining.exe: 樣本訓練的可執行程式(opencv自帶)

將下圖中的所有檔案拷貝到樣本同級目錄


1.1.4生成樣本描述檔案

1,生成正樣本描述檔案

進入posdata目錄

執行dir /b/s/p/w *.jpg > pos.txt

2,生成負樣本描述檔案

進入negdata目錄

執行dir /b/s/p/w *.jpg > neg.txt

開啟正負樣本描述檔案如圖:

 

jpg全部替換成下面的格式

圖中劃線處為圖片畫素大小

將正負樣本描述檔案拷貝到與opencv_createsamples.exe檔案同一目錄

1.1.5生成.vec檔案

opencv_createsamples.exe -vec pos.vec -info pos.txt -num 18500 -w 20 -h 20

opencv_createsamples.exe -vec neg.vec -info neg.txt -num 10500 -w 50 -h 50

說明:

-info,指樣本說明檔案

-vec,樣本描述檔案的名字及路徑

-num,總共幾個樣本,要注意,這裡的樣本數是指標定後的20x20的樣本數,而不是大圖的數目,其實就是樣本說明檔案第2列的所有數字累加

-w -h指明想讓樣本縮放到什麼尺寸。這裡的奧妙在於你不必另外去處理第1步中被矩形框出的圖片的尺寸,因為這個引數幫你統一縮放!(我們這裡準備的樣本都是20*20)

1.1.6訓練樣本

新建檔案traincascade.bat

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 500 -numNeg 656 -numStages 20 -w 20 -h 20 -mode ALL

pause

複製進去儲存

pos.txtneg.txt改回如圖格式(注意:這一步至關中重要

 

然後雙擊traincascade.bat進行訓練

說明:


點選訓練後會出現如圖所示代表正確訓練中

 

訓練結束後會在xml目錄下生成如圖檔案(其中cascade.xml就是我們訓練得到的分類器)

相關推薦

opencv3.3版本訓練自己物體分類

Opencv訓練自己分類器 注:此文是我整理了網上的各方資料彙集而成,由於在實踐中遇到了很多坑,所以把自己的成功訓練的經驗寫下來做個筆記給大家做個參考 1.準備訓練樣本圖片 1.1樣本的採集:    

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

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

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

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學習筆記——自己訓練人臉識別分類

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

使用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

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

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

7.3 樸素貝葉斯分類

樸素:屬性條件獨立性假設。即假設每個屬性獨立地對分類結果發生影響。 樸素貝葉斯分類器重寫了書中的式(7.8)為: P(c∣x)=P(c)P(x∣c)P(x)=P(c)P(x)∏i=1dP(xi∣c)P(

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

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

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

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

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

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

7.3 樸素貝葉斯分類

樸素:屬性條件獨立性假設。即假設每個屬性獨立地對分類結果發生影響。 樸素貝葉斯分類器重寫了書中的式(7.8)為: P (

caffe 訓練自己分類模型

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

Mxnet(3)-SSD訓練自己的資料

整個ssd的安裝和訓練可以按照官方的例子。 需要注意的是需要編譯ssd相關的程式碼,可以通過兩種方式進行: 直接把ssd目錄下的operator中的檔案複製到src/operator,然後再編譯 設定config.mk,把EXTRA_OPERATOR

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

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

基於PyTorch的深度學習入門教程(五)——訓練神經網路分類

前言本文參考PyTorch官網的教程,分為五個基本模組來介紹PyTorch。為了避免文章過長,這五個模組分別在五篇博文中介紹。本文是關於Part4的內容。Part4:訓練一個神經網路分類器前面已經介紹了

opencv3.3自帶的traincascade.exe訓練LBP特征的分類

不能 有效 格式 aar file jpg for rotation 方差 opencv3.3中有可以訓練分類器opencv_traincascade.exe,可以用HAAR、LBP和HOG特征訓練分類器。 這個函數都可以在opencv\build\x64\vc14\bin