-
-
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"] ) |
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.
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!!!!!!!