Я создаю программу, которая распознает объект, но у меня проблема. Я использую этот код:

 File file = new File("Java.jpg");
        Image image = new Image(file.toURI().toString());
   imga.setImage(image);


        String  modelpath= "C:\\Users\\AngruAdminAlex\\Documents\\inception_dec_2015";

  float verison=(float) 1.0;
                System.out.println("Opening: " + modelpath);
                modelselected = true;
                graphDef = readAllBytesOrExit(Paths.get(modelpath, "tensorflow_inception_graph.pb"));
                labels = readAllLinesOrExit(Paths.get(modelpath, "imagenet_comp_graph_label_strings.txt"));

           File file1 = new File ("Java.jpg");
          String imagepath="Java.jpg";
                System.out.println("Image Path: " + imagepath);
                BufferedImage img = ImageIO.read(file1);


        //read image

        System.out.println("Reading complete.");
            byte[] imageBytes = readAllBytesOrExit(Paths.get(imagepath));
byte data[] = imageBytes;
FileOutputStream out = new FileOutputStream("buffer.rawfile");
out.write(data);
out.close();
            try (Tensor image1 = Tensor.create(imageBytes)) {
                float[] labelProbabilities = executeInceptionGraph(graphDef, image1);
                int bestLabelIdx = maxIndex(labelProbabilities);

                System.out.println(
                         String.format(
                                "BEST MATCH: %s (%.2f likely)",
                                labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));

results.setText(  String.format(
                                "BEST MATCH: %s (%.2f likely)",
                                labels.get(bestLabelIdx), labelProbabilities[bestLabelIdx] * 100f));
        }
    }

Когда я использую предварительно обученную модель inception v3, все в порядке, но когда я использую свою обученную модель, у меня возникает ошибка:

Opening: C:\Users\AngruAdminAlex\Documents\1.10

Image Path: C:\Users\AngruAdminAlex\Pictures\Test\20180907_213807.jpg
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_FLOAT, DT_DOUBLE]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]>; NodeDef: module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](module_apply_default/hub_input/Sub, module_apply_default/InceptionV3/InceptionV3/Conv2d_1a_3x3/Conv2D/ReadVariableOp). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
    at org.tensorflow.Graph.importGraphDef(Native Method)
    at org.tensorflow.Graph.importGraphDef(Graph.java:130)
    at org.tensorflow.Graph.importGraphDef(Graph.java:114)

Ссылка для модели: модель

0
Alex Zaslavskis 23 Сен 2018 в 16:09

2 ответа

Лучший ответ

Как обучить inceptionV3 этому коду

  1. При изменении кода:

    Tensor result =  s.runner().feed("DecodeJpeg/contents",image).fetch("softmax").run().get(0)) 
    

    в

    Tensor result = s.runner().feed("DecodeJpeg/contents", image).fetch("final_result").run().get(0)) 
    
  2. Загрузите собственные библиотеки Tensorflw с здесь

  3. Третий шаг - распаковать .jar, как .zip, и скопировать файл lib в папку проекта.
  4. Просто скачайте retrain.py здесь
  5. Откройте командную строку и введите команду:

    python (path to retrain.py)  --image_dir (path to image) -- output_graph (path to graph files(.pb) -- output_labels(path to label(.txt)
    
  6. Найдите файл .pb, переименуйте его в label.pb и используйте в коде

0
Wai Ha Lee 5 Ноя 2019 в 12:06

Просмотрите следующую ссылку, где возникла аналогичная проблема:

https://github.com/tensorflow/models/issues/4093

Похоже, вам, возможно, придется обновить Tensorflow до версии 1.8 или новее.

0
Saket Kumar Singh 24 Сен 2018 в 06:43