OtaK / hide-my-mess-rs

Webcam virtual backgrounds with Rust, Tensorflow & RobustVideoMatting
Apache License 2.0
11 stars 1 forks source link

Cannot find tensorflow framework #3

Closed raffaem closed 2 years ago

raffaem commented 2 years ago
$ ./hide-my-mess
./hide-my-mess: error while loading shared libraries: libtensorflow_framework.so.2: cannot open shared object file: No such file or directory

also, it was not obvious to me that after compiling the binaries would be in target/release

raffaem commented 2 years ago

I put the path to libtensorflow_framework in LD_LIBRARY_PATH, but now it wants libtensorflow.so:

$ ./hide-my-mess
./hide-my-mess: error while loading shared libraries: libtensorflow.so.2: cannot open shared object file: No such file or directory

and there is no such library in the virtual environment:

[raffaele@fedora virtualwebcam]$ find . -name "*libtensorflow*"
./lib/python3.10/site-packages/tensorflow_io_gcs_filesystem/core/python/ops/libtensorflow_io_gcs_filesystem.so
./lib/python3.10/site-packages/tensorflow/libtensorflow_framework.so.2
OtaK commented 2 years ago

You shouldn't need any of that. Tensorflow-rust automatically downloads and links against a binary distribution of TF.

As an example, on my dev environment, tensorflow isn't even on my machine.

I literally have no idea what's happening to you. How are you compiling? cargo build --release?

Also binaries are in target/debug or target/release depending on the compilation flag. That's always the case with Rust so I suppose you're new to it?

raffaem commented 2 years ago

I've got the libraries from here and put them in LD_LIBRARY_PATH

It now says:

$ ./hide-my-mess
Error: Webcam(SetPropertyError { property: "Format(V4L Resolution, FourCC)", value: "640x480@30FPS, MJPEG Format", error: "Device or resource busy (os error 16)" })

Tensorflow-rust automatically downloads and links against a binary distribution of TF.

Evidently it didn't

How are you compiling? cargo build --release?

Yes

Also binaries are in target/debug or target/release depending on the compilation flag. That's always the case with Rust so I suppose you're new to it?

Yes no experience with Rust.

You should put the path to the compiled binaries in the README.md.

raffaem commented 2 years ago

ok it's compiling the binary downloading the model

I had misread the README.

Choose a video capture device index manually

It refers to the "video capture device", so the actual webcam

raffaem commented 2 years ago

ok got it working

For some reason the fake webcam must be attached to /dev/video0, otherwise it won't work.

Also after:

INFO hide_my_mess::rvm::download_rvm > Downloading model at https://github.com/PeterL1n/RobustVideoMatting/releases/download/v1.0.0/rvm_mobilenetv3_tf.zip...

I would log something like "model downloaded, now running", it is not obvious that the model has finished to download