0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python 動物検知!

Posted at

PythonでのAI開発

うまくいているやつ:


間違えちゃったやつ:

ソース

.
├── 78.63170373102054.png
├── Main.py
└── input_image.jpg

1 directory, 3 files

ダウンロード!

pip install numpy
pip install pandas
pip install matplotlib
pip install opencv-python
pip install scikit-learn
main.py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import random

from sklearn import datasets
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split

# Load the Iris dataset
iris = datasets.load_iris()

# Load data into a pandas DataFrame
df_iris = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# Add the target column
df_iris['target'] = iris.target

# Display dataset statistics
print("Dataset Summary:")
print(df_iris.describe())

# Split the dataset into training and testing sets
data_train, data_test, target_train, target_test = train_test_split(
    iris.data, iris.target, test_size=0.2, random_state=0
)

# Define the neural network model
clf = MLPClassifier(
    hidden_layer_sizes=(10,),  # Single hidden layer with 10 neurons
    activation='relu',         # Activation function
    solver='adam',             # Optimization algorithm
    max_iter=1000              # Maximum number of iterations
)

# Fit the model to the training data
clf.fit(data_train, target_train)

# Calculate and display the training accuracy
train_accuracy = clf.score(data_train, target_train)
print(f"Training Accuracy: {train_accuracy:.2f}")

# Predict and display the test set results
test_predictions = clf.predict(data_test)
print("Test Predictions:")
print(test_predictions)

# Display the loss curve
plt.plot(clf.loss_curve_)
plt.title("Loss Curve")
plt.xlabel("Iteration")
plt.ylabel("Loss")
plt.grid(True)
plt.show()

# Function to detect various animals and objects and draw contours on a PNG image
def detect_objects(image_path, output_path):
    # Load pre-trained models for different objects and animals
    object_cascades = {
        'cat': cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalcatface.xml'),
        'dog': cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'),
        'human': cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_fullbody.xml'),
        'eye': cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml'),
        'person': cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_upperbody.xml'),
    }

    # Load the image
    image = cv2.imread(image_path)
    if image is None:
        print("Error: Image not found or could not be read.")
        return

    # Convert to grayscale
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # Detect each object/animal and draw rectangles
    for label, cascade in object_cascades.items():
        detected_objects = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(50, 50))

        for (x, y, w, h) in detected_objects:
            # Adjust rectangle position with offsets
            x_offset, y_offset = 5, 5
            cv2.rectangle(image, (x + x_offset, y + y_offset), (x + w + x_offset, y + h + y_offset), (0, 255, 0), 2)
            
            # Adjust text position near the rectangle
            label_position = (x + w + 10, y + int(h / 2))
            cv2.putText(image, label, label_position, cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)

    # Save the output image
    if not cv2.imwrite(output_path, image):
        print("Error: Could not save the output image.")
    else:
        print(f"Image with detected objects and animals saved to {output_path}")


# Example usage for PNG image
image = str(random.uniform(0, 100)) + ".png"
detect_objects('input_image.jpg', image)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?