Poor image recognition performance - suggestions appreciated!

Doloop
Doloop New Altair Community Member
edited November 2024 in Community Q&A
I have created a process that uses a neural network (NN) to evaluate images.  The images are from network cameras and I want the NN to classify the images into two groups:  images in which people and/or vehicles appear or images in which people and/or vehicles do not appear.  (The process then emails me whenever it finds an image in which people or vehicles appear.)  I'm using the ImageMiner-1.4.1 extension.  I am getting poor performance from my model and I assume it is because I am not really extracting the best features from the images so that the NN can make accurate classifications.  I would appreciate it if anyone who is familiar with the ImageMiner-1.4.1 extension could give me some suggestions as to the types of features I should be using for this kind of task (and any other suggestions that might be helpful).

(In case anyone is wondering what I mean by poor performance.  I've used cross-validation and my best performance is a precision of 86% [not too bad] and accuracy of 27% [ugh!!].  The model performs much worse than this when applied against other unlabeled images.  I also tried using the "similarity" operator (provided by the ImageMiner-1.4.1 extension and it gave me FABULOUS performance on cross-validation (100% precision and 100% accuracy) - but then when I actually used it against more unlabeled images, it failed miserably.  It only identified about 30% correctly.)

Thanks in advance.

doloop

Answers

  • StaryVena
    StaryVena New Altair Community Member
    Hello,
    try it first with global features:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="5.3.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="5.3.000" expanded="true" name="Process">
        <process expanded="true" height="325" width="614">
          <operator activated="true" class="imageprocessing:multiple_color_image_opener" compatibility="1.3.003" expanded="true" height="60" name="MCIO" width="90" x="380" y="30">
            <list key="images">
              <parameter key="true" value="D:\store\categorization\nature"/>
              <parameter key="false" value="D:\store\categorization\urban"/>
            </list>
            <parameter key="assign_label" value="true"/>
            <process expanded="true" height="702" width="1221">
              <operator activated="true" class="imageprocessing:global_feature_extraction" compatibility="1.3.003" expanded="true" height="60" name="Global Feature Extractor from a Single Image" width="90" x="380" y="30">
                <parameter key="include_position_filename" value="false"/>
                <process expanded="true" height="702" width="1221">
                  <operator activated="true" class="imageprocessing:statistics" compatibility="1.3.003" expanded="true" height="60" name="Global statistics" width="90" x="447" y="30"/>
                  <operator activated="true" class="imageprocessing:histogram" compatibility="1.3.003" expanded="true" height="60" name="histogram" width="90" x="313" y="75">
                    <parameter key="Bins" value="32"/>
                  </operator>
                  <operator activated="true" class="imageprocessing:BIC" compatibility="1.3.003" expanded="true" height="76" name="BIC" width="90" x="313" y="165"/>
                  <operator activated="true" class="imageprocessing:dLog_distance" compatibility="1.3.003" expanded="true" height="60" name="dLog" width="90" x="447" y="165"/>
                  <operator activated="true" class="imageprocessing:color_model_operator" compatibility="1.3.003" expanded="true" height="60" name="ClrToGS" width="90" x="313" y="435">
                    <parameter key="Color component" value="Red"/>
                  </operator>
                  <operator activated="true" class="imageprocessing:obcf" compatibility="1.3.003" expanded="true" height="60" name="OBCF" width="90" x="447" y="435"/>
                  <operator activated="true" class="imageprocessing:color_model_operator" compatibility="1.3.003" expanded="true" height="60" name="ClrToGS (2)" width="90" x="313" y="345">
                    <parameter key="Color component" value="Green"/>
                  </operator>
                  <operator activated="true" class="imageprocessing:obcf" compatibility="1.3.003" expanded="true" height="60" name="OBCF (2)" width="90" x="447" y="345"/>
                  <operator activated="true" class="imageprocessing:color_model_operator" compatibility="1.3.003" expanded="true" height="60" name="ClrToGS (3)" width="90" x="313" y="255">
                    <parameter key="Color component" value="Blue"/>
                  </operator>
                  <operator activated="true" class="imageprocessing:obcf" compatibility="1.3.003" expanded="true" height="60" name="OBCF (3)" width="90" x="447" y="255"/>
                  <connect from_port="color image plus 1" to_op="Global statistics" to_port="color image plus"/>
                  <connect from_port="color image plus 2" to_op="histogram" to_port="color image plus"/>
                  <connect from_port="color image plus 3" to_op="BIC" to_port="color image plus"/>
                  <connect from_port="color image plus 4" to_op="ClrToGS" to_port="color image plus"/>
                  <connect from_port="color image plus 5" to_op="ClrToGS (2)" to_port="color image plus"/>
                  <connect from_port="color image plus 6" to_op="ClrToGS (3)" to_port="color image plus"/>
                  <connect from_op="Global statistics" from_port="features" to_port="feature 1"/>
                  <connect from_op="histogram" from_port="features" to_port="feature 2"/>
                  <connect from_op="BIC" from_port="grayscale image plus Hist" to_op="dLog" to_port="grayscale image plus Hist"/>
                  <connect from_op="dLog" from_port="features" to_port="feature 5"/>
                  <connect from_op="ClrToGS" from_port="grayscale image plus" to_op="OBCF" to_port="grayscale image plus"/>
                  <connect from_op="OBCF" from_port="features" to_port="feature 4"/>
                  <connect from_op="ClrToGS (2)" from_port="grayscale image plus" to_op="OBCF (2)" to_port="grayscale image plus"/>
                  <connect from_op="OBCF (2)" from_port="features" to_port="feature 6"/>
                  <connect from_op="ClrToGS (3)" from_port="grayscale image plus" to_op="OBCF (3)" to_port="grayscale image plus"/>
                  <connect from_op="OBCF (3)" from_port="features" to_port="feature 7"/>
                  <portSpacing port="source_color image plus 1" spacing="0"/>
                  <portSpacing port="source_color image plus 2" spacing="0"/>
                  <portSpacing port="source_color image plus 3" spacing="0"/>
                  <portSpacing port="source_color image plus 4" spacing="0"/>
                  <portSpacing port="source_color image plus 5" spacing="0"/>
                  <portSpacing port="source_color image plus 6" spacing="0"/>
                  <portSpacing port="source_color image plus 7" spacing="0"/>
                  <portSpacing port="sink_feature 1" spacing="0"/>
                  <portSpacing port="sink_feature 2" spacing="0"/>
                  <portSpacing port="sink_feature 3" spacing="0"/>
                  <portSpacing port="sink_feature 4" spacing="0"/>
                  <portSpacing port="sink_feature 5" spacing="0"/>
                  <portSpacing port="sink_feature 6" spacing="0"/>
                  <portSpacing port="sink_feature 7" spacing="0"/>
                  <portSpacing port="sink_feature 8" spacing="0"/>
                </process>
              </operator>
              <connect from_port="color image plus" to_op="Global Feature Extractor from a Single Image" to_port="color image plus"/>
              <connect from_op="Global Feature Extractor from a Single Image" from_port="example set" to_port="Example set"/>
              <portSpacing port="source_color image plus" spacing="0"/>
              <portSpacing port="sink_Example set" spacing="0"/>
            </process>
          </operator>
          <connect from_op="MCIO" from_port="example set" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
        </process>
      </operator>
    </process>

    You can experiment with edge detection, gaussian blur and other filters...

    Best,
    Václav

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.