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
J'ai essayé d'utiliser la recherche sélective comme R-CNN
# | 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 |
brew update
tap
brew tap homebrew/python
brew tap homebrew/science
brew install python
which python
/usr/local/bin/python ※1
.zshrc
if [ -d $(brew --prefix)/lib/python2.7/site-packages ];then
export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages:$PYTHONPAT
fi
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
brew linkapps
easy_install pip
pip install --upgrade setuptools
pip install --upgrade pip
pip install opencv-python
pip install numpy
pip install matplotlib
pip install selectivesearch
Cette fois, j'utiliserai ce plat de steak. Utilisez Précédent comme code source pour comparer la détection d'objets.
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()
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.
Deux
5
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.
Recommended Posts