-
-
Save OlafenwaMoses/38e68a0f3bcb7350785b67d2e6bc06ce to your computer and use it in GitHub Desktop.
from imageai.Detection import ObjectDetection | |
import os | |
execution_path = os.getcwd() | |
detector = ObjectDetection() | |
detector.setModelTypeAsRetinaNet() | |
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.1.0.h5")) | |
detector.loadModel() | |
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg")) | |
for eachObject in detections: | |
print(eachObject["name"] , " : " , eachObject["percentage_probability"] ) |
I used pip3 to upgrade all the required packages. I'm getting this:
WARNING: Logging before flag parsing goes to stderr.
W0827 00:13:16.278313 11188 module_wrapper.py:136] From C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\util\module_wrapper.py:163: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.
W0827 00:13:16.318231 11188 module_wrapper.py:136] From C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\util\module_wrapper.py:163: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.
W0827 00:13:17.464979 11188 module_wrapper.py:136] From C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\util\module_wrapper.py:163: The name tf.image.resize_images is deprecated. Please use tf.image.resize instead.
W0827 00:13:17.961629 11188 deprecation.py:323] From C:\ProgramData\Anaconda3\lib\site-packages\imageai\Detection\keras_retinanet\backend\tensorflow_backend.py:46: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
Traceback (most recent call last):
File "", line 1, in
runfile('C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI/FirstDetection.py', wdir='C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI/FirstDetection.py", line 17, in
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
File "C:\ProgramData\Anaconda3\lib\site-packages\imageai\Detection_init_.py", line 517, in detectObjectsFromImage
raise ValueError("Ensure you specified correct input image, input type, output type and/or output image path ")
ValueError: Ensure you specified correct input image, input type, output type and/or output image path
W0827 00:13:22.959074 11188 module_wrapper.py:136] From C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\util\module_wrapper.py:163: The name tf.estimator.inputs is deprecated. Please use tf.compat.v1.estimator.inputs instead.
Any help to fix this would be greatly appreciated!!!!!!!
Now I'm just getting this:
Traceback (most recent call last):
File "", line 1, in
runfile('C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI/image/FirstDetection.py', wdir='C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI/image')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/tahawaru/Documents/ComputerVision/ObjectDetection/ImageAI/image/FirstDetection.py", line 10, in
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
File "C:\ProgramData\Anaconda3\lib\site-packages\imageai\Detection_init_.py", line 517, in detectObjectsFromImage
raise ValueError("Ensure you specified correct input image, input type, output type and/or output image path ")
ValueError: Ensure you specified correct input image, input type, output type and/or output image path
Any help on this??????
I'm getting the following error message. I'm using Python 3.7 and Tensorflow 2.0
Traceback (most recent call last):
File "FirstDetection.py", line 6, in <module>
detector = ObjectDetection()
File "D:\Anaconda3\lib\site-packages\imageai\Detection\__init__.py", line 88, in __init__
self.sess = K.get_session()
File "D:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 174, in get_session
default_session = tf.get_default_session()
AttributeError: module 'tensorflow' has no attribute 'get_default_session'
I solved the above error by changing self.sess = K.get_session()
to self.sess = tf.compat.v1.Session()
in lib\site-packages\imageai\Detection_init_.py
OSError Traceback (most recent call last)
in
7 detector.setModelTypeAsRetinaNet()
8 detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
----> 9 detector.loadModel()
10 detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
11
C:\ProgramData\Anaconda3\lib\site-packages\imageai\Detection_init_.py in loadModel(self, detection_speed)
189 elif (self.__modelType == "retinanet"):
190 model = resnet50_retinanet(num_classes=80)
--> 191 model.load_weights(self.modelPath)
192 self.__model_collection.append(model)
193 self.__modelLoaded = True
C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\network.py in load_weights(self, filepath, by_name, skip_mismatch, reshape)
1155 if h5py is None:
1156 raise ImportError('load_weights
requires h5py.')
-> 1157 with h5py.File(filepath, mode='r') as f:
1158 if 'layer_names' not in f.attrs and 'model_weights' in f:
1159 f = f['model_weights']
C:\ProgramData\Anaconda3\lib\site-packages\h5py_hl\files.py in init(self, name, mode, driver, libver, userblock_size, swmr, **kwds)
310 with phil:
311 fapl = make_fapl(driver, libver, **kwds)
--> 312 fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
313
314 if swmr_support:
C:\ProgramData\Anaconda3\lib\site-packages\h5py_hl\files.py in make_fid(name, mode, userblock_size, fapl, fcpl, swmr)
140 if swmr and swmr_support:
141 flags |= h5f.ACC_SWMR_READ
--> 142 fid = h5f.open(name, flags, fapl=fapl)
143 elif mode == 'r+':
144 fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)
h5py_objects.pyx in h5py._objects.with_phil.wrapper()
h5py_objects.pyx in h5py._objects.with_phil.wrapper()
h5py\h5f.pyx in h5py.h5f.open()
OSError: Unable to open file (file signature not found)
!pip install tensorflow
!pip install opencv-python
!pip install keras
!pip install numpy
!pip install imageai
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "1598954196.053694.jpg"), output_image_path=os.path.join(execution_path , "an.jpg"))
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
AttributeError Traceback (most recent call last)
in
4 execution_path = os.getcwd()
5
----> 6 detector = ObjectDetection()
7 detector.setModelTypeAsRetinaNet()
8 detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
c:\users\asus\appdata\local\programs\python\python38\lib\site-packages\imageai\Detection_init_.py in init(self)
86 self.__yolo_model_image_size = (416, 416)
87 self.__yolo_boxes, self.__yolo_scores, self.__yolo_classes = "", "", ""
---> 88 self.sess = K.get_session()
89
90 # Unique instance variables for TinyYOLOv3.
AttributeError: module 'keras.backend' has no attribute 'get_session'
!pip install tensorflow
!pip install opencv-python
!pip install keras
!pip install numpy
!pip install imageaifrom imageai.Detection import ObjectDetection
import osexecution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "1598954196.053694.jpg"), output_image_path=os.path.join(execution_path , "an.jpg"))for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )AttributeError Traceback (most recent call last)
in
4 execution_path = os.getcwd()
5
----> 6 detector = ObjectDetection()
7 detector.setModelTypeAsRetinaNet()
8 detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))c:\users\asus\appdata\local\programs\python\python38\lib\site-packages\imageai\Detection__init__.py in init(self)
86 self.__yolo_model_image_size = (416, 416)
87 self.__yolo_boxes, self.__yolo_scores, self.__yolo_classes = "", "", ""
---> 88 self.sess = K.get_session()
89
90 # Unique instance variables for TinyYOLOv3.AttributeError: module 'keras.backend' has no attribute 'get_session'
same here
I don't want to save images that can not be detected so what can I do ?
To detect the object from the image from scratch using python; Click here I found the best article https://debuggingsolution.blogspot.com/2022/02/object-detection-from-scratch-in-python.html
Here's what the above code is doing:
- We first import the ObjectDetection class from the ImageAI library.
- We then create an instance of the ObjectDetection class and set the model type to RetinaNet.
- We then set the model path to the path of the RetinaNet model file that we downloaded earlier.
- We then load the model into the ObjectDetection class instance.
- We then call the detectObjectsFromImage method, passing in the input image path and the output image path.
- We then print the name of the object and the percentage probability that the object detected is the correct one.
Kindly ensure you install the latest version of ImageAI via the command below.
pip3 install imageai --upgrade