-
Main functionality:
Read videoInitialize neural networkExtract bounding boxes of detected objectsFilter detected objects by classname and confidenceDo non maximum suppression for additional filteringPut bounding boxes and classnames onto image after NMSDisplay an outputRedis (pub to user defined channel + consider password usage)- Implement SORT + Deep SORT [I guess we need ndarray, not nalgebra] W.I.P.
-
Additional functionality
Usage of custom implementation (via nalgebra) of Kalman filterTracking via custom implementation of Kalman filterUsage of OpenCV-based Kalman filterNot neededTracking via OpenCV-based Kalman filterNot neededSpatial converterTranform matrixConvert function
Speed evaluationsHaversine functionSpatial converter usageApply math function to objects
Read frames in one thread and do neural network's job in another one- Proper logging?
- Error handling W.I.P.
MJPEG streamer (via actix-web I guess?)[it's implemented via mspc and tokio, but I'm not sure if I do threads stuff correctly. MJPEG streaming are laggy currently, need to investigate]- gRPC for clients (do we need this?) [I guess it should work as redis publisher, so only client will be implemented?]
REST JSON for clientsStill uglyREST Websockets for clients (do we need this?. No)- Installation instructions (Makefile+Ubuntu18-20)
TOML configurationConvex polygons mathCheck if point is in polygonCheck if point has entered into polygonCheck if point has left polygon
Hashmap and timer for estimating average values of traffic (speed, intensity)- ~~ Hashmap and thread ~~
- ~~ Reset values ~~
- ~~ Time intervals (threads) ~~
Refactor
Optional choice between Tiny YOLO and MobilenetSSD(Caffe)[removed]Fill Jetson Nano instructionsEstimate speed and intensity for each vehicle type- RabbitMQ/NATS/Tarantool/Kafka integration module? Do we need those?
Verbose output as option (fps/workers output)- Consider color as hex representation (additional field with priority lower than RGBA)
Consider training YOLO v4 tiny for vehicle classes only (we do need false positive detection for peoples/boats/chairs and etc.)[I want to provide link for custom trained network: only vehicles + network size is 416x256 rather than 416x416 due the problem when resizing image provided too much squeezing]Organize structure to reduce connectiviy of components of applicationsConsider YOLOX (nano/tiny)[Well, I checked it and it not that good as I was thought]- ~~More neural network parameters in TOML ~~
Figure it out, how to boost perfomance for YOLOv4-tiny (or mobilenet-ssd?). Best idea I have so far is: pick tensort-rt and onnx and do magick trick.[But there are no good and mature tensor-rt libs for Rust I guess...]Scaling by x/ySwagger docs.
-
Some bugs
- RAM consumption grows up too much.