Zuvor habe ich die Objekterkennung mit OpenCV durchgeführt, aber wie groß ist der Unterschied in der Genauigkeit, da es eine Bibliothek mit dem Namen Selective Search gibt? Ich habe versucht zu vergleichen.
Außerdem habe ich zuvor eine andere Methode ausprobiert, nachdem ich die Umgebungskonstruktion überprüft hatte, die ich nicht sehr gut verstand. Es ist also ein bisschen anders.
Als ich es ausprobiert habe, funktioniert die selektive Suche außerdem nicht richtig, da die Funktion in Python3 unterschiedlich ist.
Selective Search
Ich habe versucht, die selektive Suche als R-CNN zu verwenden
# | OS/Software/Bibliothek | Ausführung |
---|---|---|
1 | Mac OS X | EI Capitan |
2 | Python | 2.7er Serie |
3 | OpenCV | 3.2 System |
4 | Selective Search | |
5 | matplotlib | 2.0 Serie |
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.
>>>
Anders als hier
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
Dieses Mal werde ich dieses Steak-Set-Essen verwenden. Verwenden Sie Zurück als Quellcode für den Vergleich der Objekterkennung.
Ich benutze es so wie es ist ich habe versucht, die selektive Suche als R-CNN zu verwenden.
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("{Bildpfad}")
# 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('{Verzeichnispfad}' + str(x) + '.jpg', img[y:y + h, x:x + w])
plt.show()
if __name__ == "__main__":
main()
Vergleichen Sie, wie viele Gerichte, Lebensmittel und Gewürze konturiert werden können. Was das Level betrifft, bin ich streng, weil es für ein Gefäß oder eine Schale extrahiert werden kann.
Zwei
5
――Ist es verschiedene Verarbeitungsschritte? Die selektive Suche dauerte einige Zeit (ca. 10 Sekunden?). ――Die Funktionen sind je nach Version von Python oder OpenCV sehr unterschiedlich, was problematisch ist. ――Ich habe nicht das Gefühl, Python oder OpenCV von Grund auf neu schreiben zu können, obwohl ich verschiedene Dinge getan habe.
Recommended Posts