markstrefford / running-detectron2-on-windows-wsl2-rtx30xx

How to run Detectron2 on Windows using WSL2 and RTX30xx cards.
Apache License 2.0
13 stars 0 forks source link

NameError: name 'encode_video_frame_as_base64' is not defined #1

Closed mobassir94 closed 3 years ago

mobassir94 commented 3 years ago

when i try to run (using your calling-detectron2-flask-api-example.ipynb):

print(f'Starting API call at {datetime.now()}')
res = requests.post(url, data=encode_video_frame_as_base64(frame_rear))
response_json = json.loads(res.text)
print(f'Ending API call at {datetime.now()}')

i get this error :

Starting API call at 2021-03-15 22:59:42.023794
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-21-fe8805e46185> in <module>
      1 print(f'Starting API call at {datetime.now()}')
----> 2 res = requests.post(url, data=encode_video_frame_as_base64(frame_rear))
      3 response_json = json.loads(res.text)
      4 print(f'Ending API call at {datetime.now()}')

NameError: name 'encode_video_frame_as_base64' is not defined

is the notebook incomplete? how to use it?

also i think you have syntax error while loading the image and encode in Base64

correct code should be :

with open(IMAGE_PATH, "rb") as image_file:
    data = base64.b64encode(image_file.read())
markstrefford commented 3 years ago

@mobassir94 Let me check today and get back to you

markstrefford commented 3 years ago

Can you try again? That function is effectively taking a np.array and converting to a base64 encoded PNG, which should be what you've loaded here:

with open(IMAGE_PATH, "rb") as image_file:
    data = base64.b64encode(image_file.read())

So I've removed the call to that function.

Thanks for pointing out the typo, not sure how that got in there!

mobassir94 commented 3 years ago

now i get this error :

Starting API call at 2021-03-16 18:49:08.629890
---------------------------------------------------------------------------
gaierror                                  Traceback (most recent call last)
~\anaconda3\lib\site-packages\urllib3\connection.py in _new_conn(self)
    158         try:
--> 159             conn = connection.create_connection(
    160                 (self._dns_host, self.port), self.timeout, **extra_kw

~\anaconda3\lib\site-packages\urllib3\util\connection.py in create_connection(address, timeout, source_address, socket_options)
     60 
---> 61     for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
     62         af, socktype, proto, canonname, sa = res

~\anaconda3\lib\socket.py in getaddrinfo(host, port, family, type, proto, flags)
    917     addrlist = []
--> 918     for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    919         af, socktype, proto, canonname, sa = res

gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

NewConnectionError                        Traceback (most recent call last)
~\anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    669             # Make the request on the httplib connection object.
--> 670             httplib_response = self._make_request(
    671                 conn,

~\anaconda3\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw)
    391         else:
--> 392             conn.request(method, url, **httplib_request_kw)
    393 

~\anaconda3\lib\http\client.py in request(self, method, url, body, headers, encode_chunked)
   1254         """Send a complete request to the server."""
-> 1255         self._send_request(method, url, body, headers, encode_chunked)
   1256 

~\anaconda3\lib\http\client.py in _send_request(self, method, url, body, headers, encode_chunked)
   1300             body = _encode(body, 'body')
-> 1301         self.endheaders(body, encode_chunked=encode_chunked)
   1302 

~\anaconda3\lib\http\client.py in endheaders(self, message_body, encode_chunked)
   1249             raise CannotSendHeader()
-> 1250         self._send_output(message_body, encode_chunked=encode_chunked)
   1251 

~\anaconda3\lib\http\client.py in _send_output(self, message_body, encode_chunked)
   1009         del self._buffer[:]
-> 1010         self.send(msg)
   1011 

~\anaconda3\lib\http\client.py in send(self, data)
    949             if self.auto_open:
--> 950                 self.connect()
    951             else:

~\anaconda3\lib\site-packages\urllib3\connection.py in connect(self)
    186     def connect(self):
--> 187         conn = self._new_conn()
    188         self._prepare_conn(conn)

~\anaconda3\lib\site-packages\urllib3\connection.py in _new_conn(self)
    170         except SocketError as e:
--> 171             raise NewConnectionError(
    172                 self, "Failed to establish a new connection: %s" % e

NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000012ECC4382E0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

MaxRetryError                             Traceback (most recent call last)
~\anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    438             if not chunked:
--> 439                 resp = conn.urlopen(
    440                     method=request.method,

~\anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    725 
--> 726             retries = retries.increment(
    727                 method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]

~\anaconda3\lib\site-packages\urllib3\util\retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
    445         if new_retry.is_exhausted():
--> 446             raise MaxRetryError(_pool, url, error or ResponseError(cause))
    447 

MaxRetryError: HTTPConnectionPool(host='hostname', port=5000): Max retries exceeded with url: /api/score-image (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000012ECC4382E0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

ConnectionError                           Traceback (most recent call last)
<ipython-input-6-eb7da2a078bd> in <module>
      1 print(f'Starting API call at {datetime.now()}')
----> 2 res = requests.post(url, data=data)
      3 response_json = json.loads(res.text)
      4 print(f'Ending API call at {datetime.now()}')

~\anaconda3\lib\site-packages\requests\api.py in post(url, data, json, **kwargs)
    117     """
    118 
--> 119     return request('post', url, data=data, json=json, **kwargs)
    120 
    121 

~\anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs)
     59     # cases, and look like a memory leak in others.
     60     with sessions.Session() as session:
---> 61         return session.request(method=method, url=url, **kwargs)
     62 
     63 

~\anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    528         }
    529         send_kwargs.update(settings)
--> 530         resp = self.send(prep, **send_kwargs)
    531 
    532         return resp

~\anaconda3\lib\site-packages\requests\sessions.py in send(self, request, **kwargs)
    641 
    642         # Send the request
--> 643         r = adapter.send(request, **kwargs)
    644 
    645         # Total elapsed time of the request (approximately)

~\anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    514                 raise SSLError(e, request=request)
    515 
--> 516             raise ConnectionError(e, request=request)
    517 
    518         except ClosedPoolError as e:

ConnectionError: HTTPConnectionPool(host='hostname', port=5000): Max retries exceeded with url: /api/score-image (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000012ECC4382E0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
markstrefford commented 3 years ago

ConnectionError: HTTPConnectionPool(host='hostname', port=5000): Max retries exceeded with url: /api/score-image (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000012ECC4382E0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

This is a networking issue. Your notebook can't connect to web-api.py. It looks like you've not changed 'hostname' in the notebook to be the IP address or hostname of where you're running web-api.py. If you're running locally on one machine, then change hostname to localhost and try that.

mobassir94 commented 3 years ago

tried replacing hostname with localhost like this :

host='localhost' port=5000 url = f'http://{host}:{port}/api/score-image' IMAGE_PATH=r"C:\Users\Mobassir\Downloads\data\running-detectron2-on-windows-wsl2-rtx30xx-main\ck.jpg"

then ,

Starting API call at 2021-03-16 20:36:15.190685
---------------------------------------------------------------------------
ConnectionRefusedError                    Traceback (most recent call last)
~\anaconda3\lib\site-packages\urllib3\connection.py in _new_conn(self)
    158         try:
--> 159             conn = connection.create_connection(
    160                 (self._dns_host, self.port), self.timeout, **extra_kw

~\anaconda3\lib\site-packages\urllib3\util\connection.py in create_connection(address, timeout, source_address, socket_options)
     83     if err is not None:
---> 84         raise err
     85 

~\anaconda3\lib\site-packages\urllib3\util\connection.py in create_connection(address, timeout, source_address, socket_options)
     73                 sock.bind(source_address)
---> 74             sock.connect(sa)
     75             return sock

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

NewConnectionError                        Traceback (most recent call last)
~\anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    669             # Make the request on the httplib connection object.
--> 670             httplib_response = self._make_request(
    671                 conn,

~\anaconda3\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw)
    391         else:
--> 392             conn.request(method, url, **httplib_request_kw)
    393 

~\anaconda3\lib\http\client.py in request(self, method, url, body, headers, encode_chunked)
   1254         """Send a complete request to the server."""
-> 1255         self._send_request(method, url, body, headers, encode_chunked)
   1256 

~\anaconda3\lib\http\client.py in _send_request(self, method, url, body, headers, encode_chunked)
   1300             body = _encode(body, 'body')
-> 1301         self.endheaders(body, encode_chunked=encode_chunked)
   1302 

~\anaconda3\lib\http\client.py in endheaders(self, message_body, encode_chunked)
   1249             raise CannotSendHeader()
-> 1250         self._send_output(message_body, encode_chunked=encode_chunked)
   1251 

~\anaconda3\lib\http\client.py in _send_output(self, message_body, encode_chunked)
   1009         del self._buffer[:]
-> 1010         self.send(msg)
   1011 

~\anaconda3\lib\http\client.py in send(self, data)
    949             if self.auto_open:
--> 950                 self.connect()
    951             else:

~\anaconda3\lib\site-packages\urllib3\connection.py in connect(self)
    186     def connect(self):
--> 187         conn = self._new_conn()
    188         self._prepare_conn(conn)

~\anaconda3\lib\site-packages\urllib3\connection.py in _new_conn(self)
    170         except SocketError as e:
--> 171             raise NewConnectionError(
    172                 self, "Failed to establish a new connection: %s" % e

NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001AEE6F20460>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

MaxRetryError                             Traceback (most recent call last)
~\anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    438             if not chunked:
--> 439                 resp = conn.urlopen(
    440                     method=request.method,

~\anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    725 
--> 726             retries = retries.increment(
    727                 method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]

~\anaconda3\lib\site-packages\urllib3\util\retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
    445         if new_retry.is_exhausted():
--> 446             raise MaxRetryError(_pool, url, error or ResponseError(cause))
    447 

MaxRetryError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /api/score-image (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001AEE6F20460>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))

During handling of the above exception, another exception occurred:

ConnectionError                           Traceback (most recent call last)
<ipython-input-17-eb7da2a078bd> in <module>
      1 print(f'Starting API call at {datetime.now()}')
----> 2 res = requests.post(url, data=data)
      3 response_json = json.loads(res.text)
      4 print(f'Ending API call at {datetime.now()}')

~\anaconda3\lib\site-packages\requests\api.py in post(url, data, json, **kwargs)
    117     """
    118 
--> 119     return request('post', url, data=data, json=json, **kwargs)
    120 
    121 

~\anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs)
     59     # cases, and look like a memory leak in others.
     60     with sessions.Session() as session:
---> 61         return session.request(method=method, url=url, **kwargs)
     62 
     63 

~\anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    528         }
    529         send_kwargs.update(settings)
--> 530         resp = self.send(prep, **send_kwargs)
    531 
    532         return resp

~\anaconda3\lib\site-packages\requests\sessions.py in send(self, request, **kwargs)
    641 
    642         # Send the request
--> 643         r = adapter.send(request, **kwargs)
    644 
    645         # Total elapsed time of the request (approximately)

~\anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    514                 raise SSLError(e, request=request)
    515 
--> 516             raise ConnectionError(e, request=request)
    517 
    518         except ClosedPoolError as e:

ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /api/score-image (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001AEE6F20460>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))
markstrefford commented 3 years ago

Your problem is this:

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

You have firewall running perhaps? It would also help if you could do some basic diagnosis of these issues first.