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
c104cdce
Commit
c104cdce
authored
Nov 29, 2010
by
Maria Dimashova
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
made random generators of MLL classes depended on default rng (theRNG) (#205).
parent
7860d52e
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
53 additions
and
55 deletions
+53
-55
ml.hpp
modules/ml/include/opencv2/ml/ml.hpp
+5
-5
ann_mlp.cpp
modules/ml/src/ann_mlp.cpp
+6
-6
data.cpp
modules/ml/src/data.cpp
+3
-3
em.cpp
modules/ml/src/em.cpp
+4
-4
ertrees.cpp
modules/ml/src/ertrees.cpp
+12
-13
gbt.cpp
modules/ml/src/gbt.cpp
+3
-3
rtrees.cpp
modules/ml/src/rtrees.cpp
+6
-6
svm.cpp
modules/ml/src/svm.cpp
+3
-3
tree.cpp
modules/ml/src/tree.cpp
+10
-11
boost.cpp
modules/traincascade/boost.cpp
+1
-1
No files found.
modules/ml/include/opencv2/ml/ml.hpp
View file @
c104cdce
...
...
@@ -913,7 +913,7 @@ struct CV_EXPORTS CvDTreeTrainData
CvSet
*
cv_heap
;
CvSet
*
nv_heap
;
CvRNG
rng
;
cv
::
RNG
*
rng
;
};
class
CvDTree
;
...
...
@@ -1147,7 +1147,7 @@ protected:
CvMat
*
var_importance
;
int
nsamples
;
CvRNG
rng
;
cv
::
RNG
*
rng
;
CvMat
*
active_var_mask
;
};
...
...
@@ -1908,7 +1908,7 @@ protected:
CvMat
*
missing
;
CvMat
*
class_labels
;
CvRNG
rng
;
cv
::
RNG
*
rng
;
int
class_count
;
float
delta
;
...
...
@@ -2034,7 +2034,7 @@ protected:
int
activ_func
;
int
max_count
,
max_buf_sz
;
CvANN_MLP_TrainParams
params
;
CvRNG
rng
;
cv
::
RNG
*
rng
;
};
/****************************************************************************************\
...
...
@@ -2177,7 +2177,7 @@ protected:
CvMat
*
test_sample_idx
;
int
*
sample_idx
;
// data of train_sample_idx and test_sample_idx
CvRNG
rng
;
cv
::
RNG
*
rng
;
};
...
...
modules/ml/src/ann_mlp.cpp
View file @
c104cdce
...
...
@@ -95,7 +95,7 @@ CvANN_MLP::CvANN_MLP()
layer_sizes
=
wbuf
=
0
;
min_val
=
max_val
=
min_val1
=
max_val1
=
0.
;
weights
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
default_model_name
=
"my_nn"
;
clear
();
}
...
...
@@ -108,7 +108,7 @@ CvANN_MLP::CvANN_MLP( const CvMat* _layer_sizes,
layer_sizes
=
wbuf
=
0
;
min_val
=
max_val
=
min_val1
=
max_val1
=
0.
;
weights
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
default_model_name
=
"my_nn"
;
create
(
_layer_sizes
,
_activ_func
,
_f_param1
,
_f_param2
);
}
...
...
@@ -190,7 +190,7 @@ void CvANN_MLP::init_weights()
double
s
=
0
;
for
(
k
=
0
;
k
<=
n1
;
k
++
)
{
val
=
cvRandReal
(
&
rng
)
*
2
-
1.
;
val
=
rng
->
uniform
(
0.
,
1.
)
*
2
-
1.
;
w
[
k
*
n2
+
j
]
=
val
;
s
+=
fabs
(
val
);
}
...
...
@@ -928,8 +928,8 @@ int CvANN_MLP::train_backprop( CvVectors x0, CvVectors u, const double* sw )
for
(
i
=
0
;
i
<
count
;
i
++
)
{
int
tt
;
j
=
(
unsigned
)
cvRandInt
(
&
rng
)
%
count
;
k
=
(
unsigned
)
cvRandInt
(
&
rng
)
%
count
;
j
=
(
*
rng
)(
count
)
;
k
=
(
*
rng
)(
count
)
;
CV_SWAP
(
_idx
->
data
.
i
[
j
],
_idx
->
data
.
i
[
k
],
tt
);
}
}
...
...
@@ -1507,7 +1507,7 @@ CvANN_MLP::CvANN_MLP( const Mat& _layer_sizes, int _activ_func,
layer_sizes
=
wbuf
=
0
;
min_val
=
max_val
=
min_val1
=
max_val1
=
0.
;
weights
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
default_model_name
=
"my_nn"
;
create
(
_layer_sizes
,
_activ_func
,
_f_param1
,
_f_param2
);
}
...
...
modules/ml/src/data.cpp
View file @
c104cdce
...
...
@@ -84,7 +84,7 @@ CvMLData :: CvMLData()
//flt_separator = '.';
class_map
=
new
std
::
map
<
std
::
string
,
int
>
();
rng
=
cvRNG
(
-
cvGetTickCount
()
);
rng
=
&
cv
::
theRNG
(
);
}
CvMLData
::
~
CvMLData
()
...
...
@@ -608,8 +608,8 @@ void CvMLData :: mix_train_and_test_idx()
int
n
=
values
->
rows
;
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
int
a
=
cvRandInt
(
&
rng
)
%
n
;
int
b
=
cvRandInt
(
&
rng
)
%
n
;
int
a
=
(
*
rng
)(
n
)
;
int
b
=
(
*
rng
)(
n
)
;
int
t
;
CV_SWAP
(
sample_idx
[
a
],
sample_idx
[
b
],
t
);
}
...
...
modules/ml/src/em.cpp
View file @
c104cdce
...
...
@@ -581,7 +581,7 @@ void CvEM::kmeans( const CvVectors& train_data, int nclusters, CvMat* labels,
__BEGIN__
;
CvRNG
rng
=
cvRNG
(
-
1
);
cv
::
RNG
*
rng
=
&
cv
::
theRNG
(
);
int
i
,
j
,
k
,
nsamples
,
dims
;
int
iter
=
0
;
double
max_dist
=
DBL_MAX
;
...
...
@@ -605,7 +605,7 @@ void CvEM::kmeans( const CvVectors& train_data, int nclusters, CvMat* labels,
{
for
(
i
=
0
;
i
<
nsamples
;
i
++
)
labels
->
data
.
i
[
i
]
=
i
*
nclusters
/
nsamples
;
cvRandShuffle
(
labels
,
&
rng
);
cvRandShuffle
(
labels
,
&
rng
->
state
);
}
for
(
;;
)
...
...
@@ -702,7 +702,7 @@ void CvEM::kmeans( const CvVectors& train_data, int nclusters, CvMat* labels,
const
float
*
s
;
for
(
j
=
0
;
j
<
10
;
j
++
)
{
i
=
cvRandInt
(
&
rng
)
%
nsamples
;
i
=
(
*
rng
)(
nsamples
)
;
if
(
counters
->
data
.
i
[
labels
->
data
.
i
[
i
]]
>
1
)
break
;
}
...
...
@@ -738,7 +738,7 @@ void CvEM::kmeans( const CvVectors& train_data, int nclusters, CvMat* labels,
if
(
counters
->
data
.
i
[
k
]
==
0
)
for
(;;)
{
i
=
cvRandInt
(
&
rng
)
%
nsamples
;
i
=
(
*
rng
)(
nsamples
)
;
j
=
labels
->
data
.
i
[
i
];
if
(
counters
->
data
.
i
[
j
]
>
1
)
{
...
...
modules/ml/src/ertrees.cpp
View file @
c104cdce
...
...
@@ -91,7 +91,7 @@ void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
clear
();
var_all
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
CV_CALL
(
set_params
(
_params
));
...
...
@@ -444,7 +444,6 @@ void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
{
unsigned
short
*
udst
=
0
;
int
*
idst
=
0
;
CvRNG
*
r
=
&
rng
;
if
(
is_buf_16u
)
{
...
...
@@ -457,8 +456,8 @@ void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
for
(
i
=
0
;
i
<
sample_count
;
i
++
)
{
int
a
=
cvRandInt
(
r
)
%
sample_count
;
int
b
=
cvRandInt
(
r
)
%
sample_count
;
int
a
=
(
*
rng
)(
sample_count
)
;
int
b
=
(
*
rng
)(
sample_count
)
;
unsigned
short
unsh
=
(
unsigned
short
)
vi
;
CV_SWAP
(
udst
[
a
],
udst
[
b
],
unsh
);
}
...
...
@@ -474,8 +473,8 @@ void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
for
(
i
=
0
;
i
<
sample_count
;
i
++
)
{
int
a
=
cvRandInt
(
r
)
%
sample_count
;
int
b
=
cvRandInt
(
r
)
%
sample_count
;
int
a
=
(
*
rng
)(
sample_count
)
;
int
b
=
(
*
rng
)(
sample_count
)
;
CV_SWAP
(
idst
[
a
],
idst
[
b
],
vi
);
}
}
...
...
@@ -894,8 +893,8 @@ CvDTreeSplit* CvForestERTree::find_split_ord_class( CvDTreeNode* node, int vi, f
if
(
fdiff
>
epsilon
)
{
is_find_split
=
true
;
CvRNG
*
rng
=
&
data
->
rng
;
split_val
=
pmin
+
cvRandReal
(
rng
)
*
fdiff
;
cv
::
RNG
*
rng
=
data
->
rng
;
split_val
=
pmin
+
rng
->
uniform
(
0.
f
,
1.
f
)
*
fdiff
;
if
(
split_val
-
pmin
<=
FLT_EPSILON
)
split_val
=
pmin
+
split_delta
;
if
(
pmax
-
split_val
<=
FLT_EPSILON
)
...
...
@@ -1047,7 +1046,7 @@ CvDTreeSplit* CvForestERTree::find_split_cat_class( CvDTreeNode* node, int vi, f
for
(
int
i
=
0
;
i
<
valid_ccount
;
i
++
)
{
uchar
temp
;
int
i1
=
cvRandInt
(
rng
)
%
valid_ccount
;
int
i1
=
cvRandInt
(
rng
)
%
valid_ccount
;
int
i2
=
cvRandInt
(
rng
)
%
valid_ccount
;
CV_SWAP
(
var_class_mask
->
data
.
ptr
[
i1
],
var_class_mask
->
data
.
ptr
[
i2
],
temp
);
}
...
...
@@ -1189,8 +1188,8 @@ CvDTreeSplit* CvForestERTree::find_split_ord_reg( CvDTreeNode* node, int vi, flo
if
(
fdiff
>
epsilon
)
{
is_find_split
=
true
;
CvRNG
*
rng
=
&
data
->
rng
;
split_val
=
pmin
+
cvRandReal
(
rng
)
*
fdiff
;
cv
::
RNG
*
rng
=
data
->
rng
;
split_val
=
pmin
+
rng
->
uniform
(
0.
f
,
1.
f
)
*
fdiff
;
if
(
split_val
-
pmin
<=
FLT_EPSILON
)
split_val
=
pmin
+
split_delta
;
if
(
pmax
-
split_val
<=
FLT_EPSILON
)
...
...
@@ -1745,8 +1744,8 @@ bool CvERTrees::grow_forest( const CvTermCriteria term_crit )
int
i1
,
i2
;
float
temp
;
i1
=
cvRandInt
(
&
rng
)
%
nsamples
;
i2
=
cvRandInt
(
&
rng
)
%
nsamples
;
i1
=
(
*
rng
)(
nsamples
)
;
i2
=
(
*
rng
)(
nsamples
)
;
CV_SWAP
(
mth_var_ptr
[
i1
*
dims
],
mth_var_ptr
[
i2
*
dims
],
temp
);
// turn values of (m-1)-th variable, that were permuted
...
...
modules/ml/src/gbt.cpp
View file @
c104cdce
...
...
@@ -268,7 +268,7 @@ CvGBTrees::train( const CvMat* _train_data, int _tflag,
}
// subsample params and data
rng
=
CvRNG
(
time
(
0
)
);
rng
=
&
cv
::
theRNG
(
);
int
samples_count
=
get_len
(
sample_idx
);
...
...
@@ -698,8 +698,8 @@ void CvGBTrees::do_subsample()
if
(
subsample_test
)
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
int
a
=
cvRandInt
(
&
rng
)
%
n
;
int
b
=
cvRandInt
(
&
rng
)
%
n
;
int
a
=
(
*
rng
)(
n
)
;
int
b
=
(
*
rng
)(
n
)
;
int
t
;
CV_SWAP
(
idx
[
a
],
idx
[
b
],
t
);
}
...
...
modules/ml/src/rtrees.cpp
View file @
c104cdce
...
...
@@ -200,7 +200,7 @@ CvRTrees::CvRTrees()
data
=
NULL
;
active_var_mask
=
NULL
;
var_importance
=
NULL
;
rng
=
cvRNG
(
0xffffffff
);
rng
=
&
cv
::
theRNG
(
);
default_model_name
=
"my_random_trees"
;
}
...
...
@@ -235,7 +235,7 @@ CvMat* CvRTrees::get_active_var_mask()
CvRNG
*
CvRTrees
::
get_rng
()
{
return
&
rng
;
return
&
rng
->
state
;
}
bool
CvRTrees
::
train
(
const
CvMat
*
_train_data
,
int
_tflag
,
...
...
@@ -375,7 +375,7 @@ bool CvRTrees::grow_forest( const CvTermCriteria term_crit )
cvZero
(
sample_idx_mask_for_tree
);
for
(
i
=
0
;
i
<
nsamples
;
i
++
)
//form sample for creation one tree
{
int
idx
=
cvRandInt
(
&
rng
)
%
nsamples
;
int
idx
=
(
*
rng
)(
nsamples
)
;
sample_idx_for_tree
->
data
.
i
[
i
]
=
idx
;
sample_idx_mask_for_tree
->
data
.
ptr
[
idx
]
=
0xFF
;
}
...
...
@@ -458,8 +458,8 @@ bool CvRTrees::grow_forest( const CvTermCriteria term_crit )
if
(
sample_idx_mask_for_tree
->
data
.
ptr
[
i
]
)
//the sample is not OOB
continue
;
i1
=
cvRandInt
(
&
rng
)
%
nsamples
;
i2
=
cvRandInt
(
&
rng
)
%
nsamples
;
i1
=
(
*
rng
)(
nsamples
)
;
i2
=
(
*
rng
)(
nsamples
)
;
CV_SWAP
(
mth_var_ptr
[
i1
*
dims
],
mth_var_ptr
[
i2
*
dims
],
temp
);
// turn values of (m-1)-th variable, that were permuted
...
...
@@ -762,7 +762,7 @@ void CvRTrees::read( CvFileStorage* fs, CvFileNode* fnode )
CV_Error
(
CV_StsParseError
,
"Some <nclasses>, <nsamples>, <var_count>, "
"<nactive_vars>, <oob_error>, <ntrees> of tags are missing"
);
rng
=
CvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
trees
=
(
CvForestTree
**
)
cvAlloc
(
sizeof
(
trees
[
0
])
*
ntrees
);
memset
(
trees
,
0
,
sizeof
(
trees
[
0
])
*
ntrees
);
...
...
modules/ml/src/svm.cpp
View file @
c104cdce
...
...
@@ -1612,7 +1612,7 @@ bool CvSVM::train_auto( const CvMat* _train_data, const CvMat* _responses,
int
block_size
=
1
<<
16
;
double
*
alpha
;
int
i
,
k
;
CvRNG
rng
=
cvRNG
(
-
1
);
RNG
*
rng
=
&
theRNG
(
);
// all steps are logarithmic and must be > 1
double
degree_step
=
10
,
g_step
=
10
,
coef_step
=
10
,
C_step
=
10
,
nu_step
=
10
,
p_step
=
10
;
...
...
@@ -1745,8 +1745,8 @@ bool CvSVM::train_auto( const CvMat* _train_data, const CvMat* _responses,
// randomly permute samples and responses
for
(
i
=
0
;
i
<
sample_count
;
i
++
)
{
int
i1
=
cvRandInt
(
&
rng
)
%
sample_count
;
int
i2
=
cvRandInt
(
&
rng
)
%
sample_count
;
int
i1
=
(
*
rng
)(
sample_count
)
;
int
i2
=
(
*
rng
)(
sample_count
)
;
const
float
*
temp
;
float
t
;
int
y
;
...
...
modules/ml/src/tree.cpp
View file @
c104cdce
...
...
@@ -196,7 +196,7 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
clear
();
var_all
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
CV_CALL
(
set_params
(
_params
));
...
...
@@ -566,7 +566,6 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
{
unsigned
short
*
udst
=
0
;
int
*
idst
=
0
;
CvRNG
*
r
=
&
rng
;
if
(
is_buf_16u
)
{
...
...
@@ -579,8 +578,8 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
for
(
i
=
0
;
i
<
sample_count
;
i
++
)
{
int
a
=
cvRandInt
(
r
)
%
sample_count
;
int
b
=
cvRandInt
(
r
)
%
sample_count
;
int
a
=
(
*
rng
)(
sample_count
)
;
int
b
=
(
*
rng
)(
sample_count
)
;
unsigned
short
unsh
=
(
unsigned
short
)
vi
;
CV_SWAP
(
udst
[
a
],
udst
[
b
],
unsh
);
}
...
...
@@ -596,8 +595,8 @@ void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag,
for
(
i
=
0
;
i
<
sample_count
;
i
++
)
{
int
a
=
cvRandInt
(
r
)
%
sample_count
;
int
b
=
cvRandInt
(
r
)
%
sample_count
;
int
a
=
(
*
rng
)(
sample_count
)
;
int
b
=
(
*
rng
)(
sample_count
)
;
CV_SWAP
(
idst
[
a
],
idst
[
b
],
vi
);
}
}
...
...
@@ -1134,7 +1133,7 @@ void CvDTreeTrainData::clear()
data_root
=
0
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
}
...
...
@@ -2040,14 +2039,14 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m,
double
*
buf
=
(
double
*
)
cvStackAlloc
(
(
n
+
k
)
*
sizeof
(
buf
[
0
])
);
double
*
v_weights
=
buf
,
*
c_weights
=
buf
+
n
;
bool
modified
=
true
;
CvRNG
*
r
=
&
data
->
rng
;
RNG
*
r
=
data
->
rng
;
// assign labels randomly
for
(
i
=
0
;
i
<
n
;
i
++
)
{
int
sum
=
0
;
const
int
*
v
=
vectors
+
i
*
m
;
labels
[
i
]
=
i
<
k
?
i
:
(
cvRandInt
(
r
)
%
k
);
labels
[
i
]
=
i
<
k
?
i
:
(
*
r
)(
k
);
// compute weight of each vector
for
(
j
=
0
;
j
<
m
;
j
++
)
...
...
@@ -2057,8 +2056,8 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m,
for
(
i
=
0
;
i
<
n
;
i
++
)
{
int
i1
=
cvRandInt
(
r
)
%
n
;
int
i2
=
cvRandInt
(
r
)
%
n
;
int
i1
=
(
*
r
)(
n
)
;
int
i2
=
(
*
r
)(
n
)
;
CV_SWAP
(
labels
[
i1
],
labels
[
i2
],
j
);
}
...
...
modules/traincascade/boost.cpp
View file @
c104cdce
...
...
@@ -218,7 +218,7 @@ void CvCascadeBoostTrainData::setData( const CvFeatureEvaluator* _featureEvaluat
have_priors
=
false
;
is_classifier
=
true
;
rng
=
cvRNG
(
-
1
);
rng
=
&
cv
::
theRNG
(
);
set_params
(
_params
);
...
...
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