Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
0cf1de8e
Commit
0cf1de8e
authored
Sep 18, 2014
by
Vadim Pisarevsky
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3236 from vpisarev:fix_traincascade
parents
a6748466
5947519f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
7 deletions
+10
-7
cascadeclassifier.cpp
apps/traincascade/cascadeclassifier.cpp
+8
-5
cascadeclassifier.h
apps/traincascade/cascadeclassifier.h
+2
-2
No files found.
apps/traincascade/cascadeclassifier.cpp
View file @
0cf1de8e
...
...
@@ -198,7 +198,7 @@ bool CvCascadeClassifier::train( const string _cascadeDirName,
cout
<<
endl
<<
"===== TRAINING "
<<
i
<<
"-stage ====="
<<
endl
;
cout
<<
"<BEGIN"
<<
endl
;
if
(
!
updateTrainingSet
(
tempLeafFARate
)
)
if
(
!
updateTrainingSet
(
requiredLeafFARate
,
tempLeafFARate
)
)
{
cout
<<
"Train dataset for temp stage can not be filled. "
"Branch training terminated."
<<
endl
;
...
...
@@ -284,17 +284,17 @@ int CvCascadeClassifier::predict( int sampleIdx )
return
1
;
}
bool
CvCascadeClassifier
::
updateTrainingSet
(
double
&
acceptanceRatio
)
bool
CvCascadeClassifier
::
updateTrainingSet
(
double
minimumAcceptanceRatio
,
double
&
acceptanceRatio
)
{
int64
posConsumed
=
0
,
negConsumed
=
0
;
imgReader
.
restart
();
int
posCount
=
fillPassedSamples
(
0
,
numPos
,
true
,
posConsumed
);
int
posCount
=
fillPassedSamples
(
0
,
numPos
,
true
,
0
,
posConsumed
);
if
(
!
posCount
)
return
false
;
cout
<<
"POS count : consumed "
<<
posCount
<<
" : "
<<
(
int
)
posConsumed
<<
endl
;
int
proNumNeg
=
cvRound
(
(
((
double
)
numNeg
)
*
((
double
)
posCount
)
)
/
numPos
);
// apply only a fraction of negative samples. double is required since overflow is possible
int
negCount
=
fillPassedSamples
(
posCount
,
proNumNeg
,
false
,
negConsumed
);
int
negCount
=
fillPassedSamples
(
posCount
,
proNumNeg
,
false
,
minimumAcceptanceRatio
,
negConsumed
);
if
(
!
negCount
)
return
false
;
...
...
@@ -304,7 +304,7 @@ bool CvCascadeClassifier::updateTrainingSet( double& acceptanceRatio)
return
true
;
}
int
CvCascadeClassifier
::
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
int64
&
consumed
)
int
CvCascadeClassifier
::
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
double
minimumAcceptanceRatio
,
int64
&
consumed
)
{
int
getcount
=
0
;
Mat
img
(
cascadeParams
.
winSize
,
CV_8UC1
);
...
...
@@ -312,6 +312,9 @@ int CvCascadeClassifier::fillPassedSamples( int first, int count, bool isPositiv
{
for
(
;
;
)
{
if
(
consumed
!=
0
&&
((
double
)
getcount
+
1
)
/
(
double
)(
int64
)
consumed
<=
minimumAcceptanceRatio
)
return
getcount
;
bool
isGetImg
=
isPositive
?
imgReader
.
getPos
(
img
)
:
imgReader
.
getNeg
(
img
);
if
(
!
isGetImg
)
...
...
apps/traincascade/cascadeclassifier.h
View file @
0cf1de8e
...
...
@@ -101,8 +101,8 @@ private:
int
predict
(
int
sampleIdx
);
void
save
(
const
std
::
string
cascadeDirName
,
bool
baseFormat
=
false
);
bool
load
(
const
std
::
string
cascadeDirName
);
bool
updateTrainingSet
(
double
&
acceptanceRatio
);
int
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
int64
&
consumed
);
bool
updateTrainingSet
(
double
minimumAcceptanceRatio
,
double
&
acceptanceRatio
);
int
fillPassedSamples
(
int
first
,
int
count
,
bool
isPositive
,
double
requiredAcceptanceRatio
,
int64
&
consumed
);
void
writeParams
(
cv
::
FileStorage
&
fs
)
const
;
void
writeStages
(
cv
::
FileStorage
&
fs
,
const
cv
::
Mat
&
featureMap
)
const
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment