[PYTHON] J'ai essayé de trier les objets de l'image du plat de steak-① Détection d'objets

introduction

Auparavant, j'ai effectué une détection d'objets en utilisant OpenCV, mais quelle différence y a-t-il dans la précision car il existe une bibliothèque nommée Selective Search? J'ai essayé de comparer.

Aussi, précédemment j'ai essayé une autre méthode après avoir examiné la construction de l'environnement que je ne comprenais pas beaucoup. C'est donc un peu différent.

De plus, lorsque je l'ai essayé, la recherche sélective ne fonctionne pas correctement car la fonction est différente en Python3.

Selective Search

Selective Search

Pakuri original

J'ai essayé d'utiliser la recherche sélective comme R-CNN

environnement

# OS/Logiciel/Bibliothèque version
1 Mac OS X EI Capitan
2 Python 2.Série 7
3 OpenCV 3.2 système
4 Selective Search
5 matplotlib 2.0 série

Construire

Avec précédent

Mis à jour au dernier

brew update

tap

brew tap homebrew/python
brew tap homebrew/science

Installation de Python

brew install python

Vérifiez le chemin

which python
/usr/local/bin/python ※1

Paramètre PATH

.zshrc


if [ -d $(brew --prefix)/lib/python2.7/site-packages ];then
  export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages:$PYTHONPAT
fi

Vérifier la version

python
Python 2.7.13 (default, Apr  4 2017, 08:46:44) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Différent d'ici

Mettre un lien dans les applications

brew linkapps

Installer pip

easy_install pip

Mettez à jour les outils de configuration avec la dernière version

pip install --upgrade setuptools

Mettez à jour pip vers la dernière version

pip install --upgrade pip

Installez OpenCV3

pip install opencv-python

Installez NumPy

pip install numpy

Installez MatplotLib

pip install matplotlib

Installer la recherche sélective

pip install selectivesearch

Comparaison

image

Cette fois, j'utiliserai ce plat de steak. Utilisez Précédent comme code source pour comparer la détection d'objets.

steak.jpg

Code source de la recherche sélective

Je l'utilise tel quel j'ai essayé d'utiliser la recherche sélective comme R-CNN.

grouping_image.py


import cv2
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import selectivesearch

def main():
        # loading lena image
    img = cv2.imread("{Chemin de l'image}")

    # perform selective search
    img_lbl, regions = selectivesearch.selective_search(
        img, scale=500, sigma=0.9, min_size=10)

    candidates = set()
    for r in regions:
        # excluding same rectangle (with different segments)
        if r['rect'] in candidates:
            continue
        # excluding regions smaller than 2000 pixels
        if r['size'] < 2000:
            continue
        # distorted rects
        x, y, w, h = r['rect']
        if w / h > 1.2 or h / w > 1.2:
            continue
        candidates.add(r['rect'])

    # draw rectangles on the original image
    fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
    ax.imshow(img)
    for x, y, w, h in candidates:
        print(x, y, w, h)
        rect = mpatches.Rectangle(
            (x, y), w, h, fill=False, edgecolor='red', linewidth=1)
        ax.add_patch(rect)

        cv2.imwrite('{Chemin du répertoire}' + str(x) + '.jpg', img[y:y + h, x:x + w])

    plt.show()

if __name__ == "__main__":
    main()

résultat

Comparez combien de plats, d'aliments et d'assaisonnements peuvent être modelés Quant au niveau, je suis strict à ce sujet car il peut être extrait pour un récipient ou un plat.

Cas normal

Deux

56.jpg

223.jpg

Pour la recherche sélective

5

57.jpg

227.jpg

379.jpg

405.jpg

273.jpg

Impressions

329.jpg

238.jpg

La recherche sélective a pris une certaine vitesse (environ 10 secondes?). ―― Les fonctions sont assez différentes selon la version de Python ou d'OpenCV, ce qui est gênant. ――Je n'ai pas l'impression de pouvoir écrire Python ou OpenCV à partir de zéro en dépit de diverses choses.

Tous les liens de page

Recommended Posts

J'ai essayé de trier les objets de l'image du plat de steak-① Détection d'objets
J'ai essayé de trier les objets de l'image du plat de steak-④ Clustering
J'ai essayé de trier les objets de l'image du plat de steak --③ Image similaire Détection de carte de chaleur
J'ai essayé de trier les objets de l'image du plat de steak-⑤ Détection de point de fonction d'image similaire
J'ai essayé de trier les objets de l'image du plat de steak-② Tri des numéros de chevauchement
J'ai essayé de couper une image fixe de la vidéo
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé de détecter l'iris à partir de l'image de la caméra
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé de résumer la manière logique de penser l'orientation objet.
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.1) sur le GPU de windows!
J'ai essayé d'automatiser le travail de masquage du visage de l'image de coordination pour l'usure
J'ai essayé de prédire le nombre de personnes infectées par le virus corona en tenant compte de l'effet de s'abstenir de sortir
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
Je veux découper uniquement le visage d'une image de personne avec Python et l'enregistrer ~ Détection de visage et rognage avec face_recognition ~
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé d'obtenir diverses informations de l'API codeforces
J'ai essayé d'utiliser PI Fu pour générer un modèle 3D d'une personne à partir d'une image
J'ai essayé de trouver la tendance du nombre de navires dans la baie de Tokyo à partir d'images satellites.
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de visualiser la condition commune des téléspectateurs de la chaîne VTuber
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
[Python] J'ai essayé de reproduire le programme d'évacuation d'urgence pour revenir du monde pour revenir du monde modifié de "La disparition de Haruhi Suzumiya"
J'ai essayé de livrer du courrier depuis Node.js et Python en utilisant le service de livraison de courrier (SendGrid) d'IBM Cloud!
[Python] J'ai essayé de résumer le type collectif (ensemble) d'une manière facile à comprendre.
J'ai essayé de déplacer l'image vers le dossier spécifié en faisant un clic droit et un clic gauche