Dockerfile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. FROM ubuntu:16.04
  2. # Install system packages
  3. RUN apt-get -qq update && apt-get -qq install --no-install-recommends -y python3 \
  4. python3-dev \
  5. python-pil \
  6. python-lxml \
  7. python-tk \
  8. build-essential \
  9. cmake \
  10. git \
  11. libgtk2.0-dev \
  12. pkg-config \
  13. libavcodec-dev \
  14. libavformat-dev \
  15. libswscale-dev \
  16. libtbb2 \
  17. libtbb-dev \
  18. libjpeg-dev \
  19. libpng-dev \
  20. libtiff-dev \
  21. libjasper-dev \
  22. libdc1394-22-dev \
  23. x11-apps \
  24. wget \
  25. vim \
  26. ffmpeg \
  27. unzip \
  28. libusb-1.0-0-dev \
  29. python3-setuptools \
  30. python3-numpy \
  31. zlib1g-dev \
  32. libgoogle-glog-dev \
  33. swig \
  34. libunwind-dev \
  35. libc++-dev \
  36. libc++abi-dev \
  37. build-essential \
  38. && rm -rf /var/lib/apt/lists/*
  39. # Install core packages
  40. RUN wget -q -O /tmp/get-pip.py --no-check-certificate https://bootstrap.pypa.io/get-pip.py && python3 /tmp/get-pip.py
  41. RUN pip install -U pip \
  42. numpy \
  43. pillow \
  44. matplotlib \
  45. notebook \
  46. Flask \
  47. imutils \
  48. paho-mqtt \
  49. PyYAML
  50. # Install tensorflow models object detection
  51. RUN GIT_SSL_NO_VERIFY=true git clone -q https://github.com/tensorflow/models /usr/local/lib/python3.5/dist-packages/tensorflow/models
  52. RUN wget -q -P /usr/local/src/ --no-check-certificate https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.tar.gz
  53. # Download & build protobuf-python
  54. RUN cd /usr/local/src/ \
  55. && tar xf protobuf-python-3.5.1.tar.gz \
  56. && rm protobuf-python-3.5.1.tar.gz \
  57. && cd /usr/local/src/protobuf-3.5.1/ \
  58. && ./configure \
  59. && make \
  60. && make install \
  61. && ldconfig \
  62. && rm -rf /usr/local/src/protobuf-3.5.1/
  63. # Download & build OpenCV
  64. RUN wget -q -P /usr/local/src/ --no-check-certificate https://github.com/opencv/opencv/archive/4.0.1.zip
  65. RUN cd /usr/local/src/ \
  66. && unzip 4.0.1.zip \
  67. && rm 4.0.1.zip \
  68. && cd /usr/local/src/opencv-4.0.1/ \
  69. && mkdir build \
  70. && cd /usr/local/src/opencv-4.0.1/build \
  71. && cmake -D CMAKE_INSTALL_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/ .. \
  72. && make -j4 \
  73. && make install \
  74. && rm -rf /usr/local/src/opencv-4.0.1
  75. # Download and install EdgeTPU libraries
  76. RUN wget -q -O edgetpu_api.tar.gz --no-check-certificate http://storage.googleapis.com/cloud-iot-edge-pretrained-models/edgetpu_api.tar.gz
  77. RUN tar xzf edgetpu_api.tar.gz \
  78. && cd python-tflite-source \
  79. && cp -p libedgetpu/libedgetpu_x86_64.so /lib/x86_64-linux-gnu/libedgetpu.so \
  80. && cp edgetpu/swig/compiled_so/_edgetpu_cpp_wrapper_x86_64.so edgetpu/swig/_edgetpu_cpp_wrapper.so \
  81. && cp edgetpu/swig/compiled_so/edgetpu_cpp_wrapper.py edgetpu/swig/ \
  82. && python3 setup.py develop --user
  83. # Minimize image size
  84. RUN (apt-get autoremove -y; \
  85. apt-get autoclean -y)
  86. # symlink the model and labels
  87. RUN ln -s /python-tflite-source/edgetpu/test_data/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite /frozen_inference_graph.pb
  88. RUN ln -s /python-tflite-source/edgetpu/test_data/coco_labels.txt /label_map.pbtext
  89. # Set TF object detection available
  90. ENV PYTHONPATH "$PYTHONPATH:/usr/local/lib/python3.5/dist-packages/tensorflow/models/research:/usr/local/lib/python3.5/dist-packages/tensorflow/models/research/slim"
  91. RUN cd /usr/local/lib/python3.5/dist-packages/tensorflow/models/research && protoc object_detection/protos/*.proto --python_out=.
  92. WORKDIR /opt/frigate/
  93. ADD frigate frigate/
  94. COPY detect_objects.py .
  95. CMD ["python3", "-u", "detect_objects.py"]