New Custom Compontent - Image Processing - Object Detection - DOODS

Thank you!

any possibilty to add mask capability?

EDIT:
you accept beer donations??
not related to above questions

I just added an option called contains that defaults to true. Essentially this makes the detection work the opposite way as before. If you set contains = false then any part of the detection that crosses into the area will trigger a detection. This should make it easier to define your areas. It defaults to True which makes it behave like before where the detection must be completely inside the area box. I added a donate button to the component page if you so desire. No donation necessary. :slight_smile: But thanks.

@johntdyer check out the contains option I just added. If you set it to false, you can make your detection area just your car and if any part of the detection crosses the box it will trigger. It will default to true if you do not specify which is the old behavior.

I’m seeing regular entries of the following in my hass.log:

2019-09-28 13:35:20 WARNING (MainThread) [homeassistant.helpers.entity] Update of image_processing.doods_frontdoor is taking over 10 seconds

This is my config:

- platform: doods                                    
  scan_interval: 10000                               
  url: "http://MYLOCALIP:8080"                     
  detector: tensorflow                               
  file_out:                                          
    - "/opt/homeassistant/config/www/tmp/{{ camera_entity.split('.')[1] }}_latest.jpg"                    
    - "/mountpoint/Homeassistant/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg"                                                  
  source:                                            
    - entity_id: camera.driveway                     
    - entity_id: camera.frontdoor                    
    - entity_id: camera.garage                       
    - entity_id: camera.playset                      
    - entity_id: camera.pool                         
  confidence: 50                                     
  labels:                                            
    - person                                         
    - car                                            
    - truck                                      

What does this mean? Should I be concerned?

What model are you running? On what kind of CPU?

My setup is a little different. I have an old Dell R710 running ESXi. I have created multiple VMs, one of which is HA (4 vCPUS + 8GB memory) the other is Docker in which DOODs is running (4 vCPUs + 16GB memory).

I have now doubled the number of vCPUs assigned to my Docker VM. Hopefully this will fix the problem?

Awesome job on this, it was exactly what I was looking for! I’m definitely looking forward to GPU support :slight_smile:

In all of the config samples posted here so far I see a “label” mnemonic followed by “person” that also has an associated confidence and region exclusion definitions and then another one for “car” but without a “label” mnemonic. Are label headings only needed if defining confidence and/or region exclusions or does this not allow for multiple item types to be detected on the same sensor as the other implementation does or is the lack of “label” on the car example just an oversight?

Thanks,

-joni-

That’s right. You can define a global area and confidence and it will use that. If no area is defined, it will assume the entire image.

Is this per label though or is the area used for all detections across all cameras?

Thanks,

-joni-

Thank you. great job

@snowzach I am using Hass.io docker and DOODS docker. The image_processing.scan service is failing. HA shows following error. Any suggestion about how to fix/troubleshoot this?

Update for image_processing.doods_local_file fails
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 268, in async_update_ha_state
    await self.async_device_update()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 446, in async_device_update
    await self.async_update()
  File "/usr/src/homeassistant/homeassistant/components/image_processing/__init__.py", line 174, in async_update
    await self.async_process_image(image.content)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/doods/image_processing.py", line 277, in process_image
    image, dconfig=self._dconfig, detector_name=self._detector_name
  File "/usr/local/lib/python3.7/site-packages/pydoods/__init__.py", line 31, in detect
    response.raise_for_status()
  File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: http://192.168.0.50:5000/detect 

@snowzach
HA docker V100.1 and V100.2
DOODS:latest built 9/18 and 10/16

Bounding boxes cover the object in the HomeAssistant intergration.
Also, the lines of bounding boxes run through Label text and %.
This did not occur in custom component version

I’m not yet familiar with hass.io. It looks to me like it’s blocking it. I’ll hopefully work on hass.io soon.

I’ll have to look at it, they decided to import the draw box function but it doesn’t work right. Ill submit a patch.

@snowzach I created an issue https://github.com/home-assistant/home-assistant/issues/27766

Fix is submitted.

is the continuous image processing possible or is this discouraged?
scan_interval: 1

I want to use doods in place of camera recording to capture security event from camera.
actually this was working well for custom component but HA integration seem to fail. timeout getting image or processing image

I see no reason you can’t do that however if it starts to take longer than 1 second to process an image you’re going to get a horrible backup and lots of errors likely if it doesn’t eventually crash home assistant.