Здравствуйте, мне нужно чтобы сеть различала есть на изображении предмет или нету
Точнее необходимо определить есть ли на фото слизистой язва или нету
Было собрана база 50 фото -есть, 50 фото - нету
resize/0 - нет; resize/1-есть
Все изображения сделаны черно белыми и размером 300x500
Пример изображений с язвой
и без нее
Вот код на обучение:
$j = 0;
$my_example = array();
for ( $i = 0; $i < 2; $i++ )
{
$d = dir("resize/$i");
while($entry = $d->read())
{
if ( preg_match("/jpg/", $entry) )
{
$im = imagecreatefromjpeg("black/$i/$entry");//Подгружаем картинку
$cur_array = array(); //Создаем массив в котором в одну строку будут собраны номера цветов каждого пикселя
$cnt = 0;
for($y=0; $y<300; $y++)
{
for($x=0; $x < 500; $x++)
{
$rgb = imagecolorat($im, $x, $y) / 16777215;//Приводим к виду "меньше ноля"
$cur_array[$cnt] = $rgb;
$cnt++;
}
}
imagedestroy($im);
$my_example[$j] = array($cur_array, array($i));//Собираем массив, с которого будем обучать
$j++;
}
}
}
$num_input = 150000;//нейронов на вход 500x300
$num_output = 1;//нейронов на выход
$num_layers = 3;
$num_neurons_hidden = 100;
$desired_error = 0.000001;
$max_epochs = 5000000;
$epochs_between_reports = 10;
//И вот собственно само обучение
$ocr_ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output);
if ($ocr_ann) {
echo 'Training OCR... ';
fann_set_activation_function_hidden($ocr_ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ocr_ann, FANN_SIGMOID_SYMMETRIC);
for ($i = 1; $i <= 150000; $i++)
{
$input[] = $i;
}
$desired_output = array( 1 );
var_dump( fann_train( $ocr_ann, $input, $desired_output ) );
fann_save($ocr_ann, dirname(__FILE__) . "/ocr_float3.net");
}
а вот на проверку:
echo "Hello!";
$j = 0;
$my_example = array();
$im = imagecreatefromjpeg("black/0/1.jpg");
$cur_array = array();
$cnt = 0;
for($y=0; $y<300; $y++)
{
for($x=0; $x < 500; $x++)
{
$rgb = imagecolorat($im, $x, $y) / 16777215;
$cur_array[$cnt] = $rgb;
$cnt++;
}
}
imagedestroy($im);
echo "Hello!";
$train_file = (dirname(__FILE__) . '/ocr_float3.net');
$ocr_ann = fann_create_from_file($train_file);
$calc_out = fann_run($ocr_ann, $cur_array);
echo "Hello!";
var_dump($calc_out);
По моей логике, если есть предмет то результат стремится к единице, а если нету то к нулю
Но результат совсем не такой как ожидал.
Подскажите пожалуйста что не так в коде?