与人脸识别和人脸检测问题有关?

时间:2020-02-16 08:03:31

标签: opencv

由于我使用localbinarypatterhistogram(LBPH)算法进行识别,并使用Haarcascade进行面部检测。因此我发现,两者均给出的精度均未达到想要的水平。所以python中有没有一种机器学习算法可以根据训练后的图像检测和识别图像,并且比LBPH和haarcascade提供更高的准确性。它需要下载我觉得很无聊的Microsoft Visual Studio。

1 个答案:

答案 0 :(得分:0)

首先,haar级联是用于面部检测的传统技术,而LBPH也是用于面部识别的传统技术。如今,基于深度学习的技术是最先进的。


import React from "react";
import "./styles.css";

class Arithmetic extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      num1: 10,
      num2: 5,
      action: "sub",
      value: 0
    };
  }
  componentDidMount() {
    if (this.state.action === "sub") {
      this.updateSub();
    } else {
      this.updateMul();
    }
  }
  //the user input
  updateNum1(event) {
    this.setState(
      {
        num1: event.target.value
      },
      () => {
        if (this.state.action === "sub") {
          this.updateSub();
        } else {
          this.updateMul();
        }
      }
    );
  }
  updateNum2(event) {
    this.setState(
      {
        num2: event.target.value
      },
      () => {
        if (this.state.action === "sub") {
          this.updateSub();
        } else {
          this.updateMul();
        }
      }
    );
  }
  updateAction = (action) => {
    this.setState({ action }, () => {
      if (action === "sub") {
        this.updateSub();
      } else {
        this.updateMul();
      }
    });
  };
  updateSub = () => {
    const { num1, num2 } = this.state;
    var subtraction = num1 - num2;
    this.setState({ value: subtraction });
    // return subtraction;
  };

  updateMul = () => {
    const { num1, num2 } = this.state;
    var multiplication = num1 * num2;
    console.log("multiplication", multiplication);
    // return multiplication;
    this.setState({ value: multiplication });
  };

  render() {
    return (
      <div className="container">
        <div className="row">
          <div className="col-md-8 calc_container">
            <div className="emi_input_value">
              <div className="btn-group">
                <button
                  type="button"
                  class="btn btn-light active switch"
                  value="sub"
                  name="invest_type"
                  onClick={() => this.updateAction("sub")}
                  checked
                >
                  Sub{" "}
                </button>
                <button
                  type="button"
                  class="btn btn-light switch"
                  value="mul"
                  name="invest_type"
                  onClick={() => this.updateAction("multi")}
                >
                  Mul
                </button>
              </div>
              <div className="form-group">
                <label class="label_name">Num1</label>
                <div className="btn-group">
                  <button
                    type="button"
                    class="btn btn-light active"
                    value={10}
                    onClick={this.updateNum1.bind(this)}
                    checked
                  >
                    10
                  </button>
                  <button
                    type="button"
                    class="btn btn-light"
                    value={15}
                    onClick={this.updateNum1.bind(this)}
                  >
                    15
                  </button>
                  <button
                    type="button"
                    class="btn btn-light"
                    value={20}
                    onClick={this.updateNum1.bind(this)}
                  >
                    20
                  </button>
                  <input
                    type="textbox"
                    className="form-control"
                    placeholder="Custom"
                    value={this.state.num1}
                    onChange={this.updateNum1.bind(this)}
                  />
                </div>

                <div className="form-group">
                  <label class="label_name">Num2</label> <br></br>
                  <div className="btn-group">
                    <button
                      type="button"
                      class="btn btn-light active"
                      value={5}
                      onClick={this.updateNum2.bind(this)}
                      checked
                    >
                      5
                    </button>
                    <button
                      type="button"
                      class="btn btn-light "
                      value={10}
                      onClick={this.updateNum2.bind(this)}
                    >
                      10
                    </button>
                    <button
                      type="button"
                      class="btn btn-light "
                      value={15}
                      onClick={this.updateNum2.bind(this)}
                    >
                      15
                    </button>

                    <input
                      type="textbox"
                      className="form-control"
                      placeholder="Custom"
                      value={this.state.num2}
                      onChange={this.updateNum2.bind(this)}
                    />
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="col-md-4">
            <div class="emi_output">
              <div class="calculated_output">
                <h5>RESULT</h5>

                <div class="output_ph">
                  <label class="output_label">will grow to</label>
                  <label id="output" class="output_value">
                    {" "}
                    {this.state.value}
                  </label>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    );
  }
}

export default function App() {
  return (
    <div className="App">
      <Arithmetic />
    </div>
  );
}

上述所有模型都是最新模型。除opencv之外的所有后端都是最新技术。 OpenCV后端使用haar级联。 SSD是一种现代人脸检测技术,但人脸对齐基于后端的haar级联。我建议您使用VGG-Face / Facenet和MTCNN对以获得最佳效果。