Python ikili yolu eksik
Hata mesajı:
ERROR: An error occurred during the fetch of repository 'local_execution_config_python':
Traceback (most recent call last):
File "/sandbox_path/external/org_tensorflow/third_party/py/python_configure.bzl", line 208
get_python_bin(repository_ctx)
...
Repository command failed
genellikle Bazel'in yerel Python ikili programını bulamadığını gösterir. Çözüm
lütfen önce python ikili dosyasının nerede olduğunu bulun ve
Bazel komutuna --action_env PYTHON_BIN_PATH=<path to python binary>
ekleyin. Örneğin,
Python'daki varsayılan python3 ikili programını
şu komutu kullanın:
bazel build -c opt \
--define MEDIAPIPE_DISABLE_GPU=1 \
--action_env PYTHON_BIN_PATH=$(which python3) \
mediapipe/examples/desktop/hello_world
Gerekli Python paketleri eksik
Hata mesajı:
ImportError: No module named numpy
Is numpy installed?
genellikle belirli Python paketlerinin yüklü olmadığını belirtir. Lütfen
Python ikili sürümünüze bağlı olarak pip install
veya pip3 install
yükler.
Uzak bağımlılık depoları getirilemedi
Hata mesajı:
ERROR: An error occurred during the fetch of repository 'org_tensorflow':
java.io.IOException: Error downloading [https://mirror.bazel.build/github.com/tensorflow/tensorflow/archive/77e9ffb9b2bfb1a4f7056e62d84039626923e328.tar.gz, https://github.com/tensorflow/tensorflow/archive/77e9ffb9b2bfb1a4f7056e62d84039626923e328.tar.gz] to /sandbox_path/external/org_tensorflow/77e9ffb9b2bfb1a4f7056e62d84039626923e328.tar.gz: Tried to reconnect at offset 9,944,151 but server didn't support it
or
WARNING: Download from https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_swift/releases/download/0.12.1/rules_swift.0.12.1.tar.gz failed: class java.net.ConnectException Connection timed out (Connection timed out)
genellikle Bazel'ın gerekli bağımlılık depolarını indiremediğini gösterir
bazı çözümler üretebiliriz. MedaiPipe'te kullanılan bazı bağımlılık depoları
Google siteleri tarafından barındırılan. Bazı bölgelerde ağ proxy'si oluşturmanız gerekebilir
veya VPN kullanarak bu kaynaklara erişebilirsiniz. Ayrıca
--host_jvm_args "-DsocksProxyHost=<ip address> -DsocksProxyPort=<port number>"
.
komutuna ekleyin. Görüntüleyin
bu GitHub sorunu
inceleyebilirsiniz.
Bunun bir ağ sorunu olmadığını düşünüyorsanız, başka bir olasılık da
kaynaklar geçici olarak kullanılamıyor olabilir, lütfen bazel clean --expunge
komutunu çalıştırın
ve daha sonra tekrar deneyin. Hâlâ çalışmıyorsa lütfen
hata mesajını görüyorsunuz.
Yanlış MediaPipe OpenCV yapılandırması
Hata mesajı:
error: undefined reference to 'cv::String::deallocate()'
error: undefined reference to 'cv::String::allocate(unsigned long)'
error: undefined reference to 'cv::VideoCapture::VideoCapture(cv::String const&)'
...
error: undefined reference to 'cv::putText(cv::InputOutputArray const&, cv::String const&, cv::Point, int, double, cv::Scalar, int, int, bool)'
OpenCV'nin MediaPipe için doğru şekilde yapılandırılmadığını gösterir. Lütfen "OpenCV ve FFmpeg'i yükleme" bölümüne göz atın. şuradaki bölümler: Yükleme özelliğini kullanarak MediaPipe'in WORKSPACE ve Yerel opencv'niz için linux_opencv/macos_opencv/windows_opencv.BUILD dosyaları kitaplıklar. Bu GitHub sorunu yardımcı olabilir.
Python pip yükleme hatası
Hata mesajı:
ERROR: Could not find a version that satisfies the requirement mediapipe
ERROR: No matching distribution found for mediapipe
pip install mediapipe
genellikle sisteminiz için uygun MediaPipe Python olmadığını gösterir.
MediaPipe Python PyPI'nin 64 bit'i resmi olarak desteklediğini lütfen unutmayın
Python 3.7'den 3.10'a kadar olan sürümlerde kullanılabilir:
- x86_64 Linux
- x86_64 macOS 10.15 veya sonraki sürümler
- amd64 Windows
İşletim sistemi şu anda destekleniyorsa ve bu hatayı görmeye devam ediyorsanız lütfen hem Python hem de pip ikili programının Python 3.7 ila 3.10 için olduğunu unutmayın. Aksi halde Lütfen MediaPipe Python paketini yerel olarak oluşturmak için talimatları burada bulabilirsiniz.
Windows'da Python DLL yükleme hatası
Hata mesajı:
ImportError: DLL load failed: The specified module could not be found
genellikle yerel Windows sisteminde Visual C++ yeniden dağıtılabilir paketler ve/veya Visual C++ çalışma zamanı DLL'leri içerebilir. Bu sorun, projenin başarısı için ya da uygulamayı yükleme vc_redist.x64.exe veya "msvc-runtime" eklentisini yükleme aşağıdaki komutu çalıştırarak Python paketi
$ python -m pip install msvc-runtime
"msvc-çalışma zamanı" değerinin Python paketi yayınlanmadı veya yönetilmedi satın alabilirsiniz.
Yerel yöntem bulunamadı
Hata mesajı:
java.lang.UnsatisfiedLinkError: No implementation found for void com.google.wick.Wick.nativeWick
genellikle /libwickjni.so
gibi gerekli bir yerel kitaplıkta
Yüklenmiş veya uygulamanın bağımlılıklarına dahil edilmemiş ya da
bir neden olabilir. Java'nın her yerel kitaplığın
System.loadLibrary
işlevi kullanılarak açıkça yüklenir.
Kayıtlı hesap makinesi bulunamadı
Hata mesajı:
No registered object with name: OurNewCalculator; Unable to find Calculator "OurNewCalculator"
genellikle OurNewCalculator
öğesinin bir
CalculatorGraphConfig
ancak OurNewCalculator için kitaplık hedefinde daha fazla
uygulama ikili programına bağlanmamıştır. Yeni bir hesap makinesi
hesap makinesi grafiğinde, bu hesap makinesinin
ve hesap makinesi grafiğini kullanarak
uygulamaya başlayabilirsiniz.
Bu hata, hesap makinesi grafiklerinin çalışma zamanında
hesap makinelerini CalculatorGraphConfig::Node:calculator
alanına girin.
Hesap makinesinin kitaplığı bir uygulama ikili programına bağlandığında,
hesap makinesi otomatik olarak
registration.h
kitaplığını kullanan REGISTER_CALCULATOR
makrosu. Lütfen
REGISTER_CALCULATOR
, hesap makinesini ad alanı önekiyle kaydettirebilir.
ile aynıdır. Bu durumda, hesap makinesi grafiğinde aynı zamanda
gerekir.
Yetersiz Bellek hatası
Bellekin tükenmesi, paketin içinde biriken çok fazla paketin nasıl performans göstereceğim. Bu durum, aşağıdakiler gibi çeşitli nedenlerden kaynaklanabilir:
- Grafikteki bazı hesaplayıcılar, paketleri içeren bir pakettir.
- Bazı hesap makineleri, asla ulaşmayacak paketleri bekliyor.
(1. sorun için), daha eski bazı paketleri
daha yeni paket işleme alınır. Bazı ipuçları için aşağıdaki konulara bakın:
How to process realtime input streams
.
(2. sorun) bazı sorunlar için bir giriş akışında paket eksik olabilir.
bir neden sunmalısınız. Bir cihaz veya hesap makinesi yanlış yapılandırılmış olabilir veya paketler üretebilir
yalnızca belirli aralıklarla. Bu, aşağı akış hesaplayıcılarının birkaç işlem
hiçbir zaman ulaşmayacak olan bir pakettir. Bu durumda paketlerin
ve giriş akışlarından bazılarına katkıda bulunurlar. MediaPipe, bu tür sorunları
"zaman damgası sınırları". Bazı ipuçları için:
How to process realtime input streams
.
MediaPipe ayarı CalculatorGraphConfig::max_queue_size
akışı kısıtlayarak herhangi bir giriş akışında sıraya alınan paket sayısını
grafiğe dönüştürülebilir. Gerçek zamanlı giriş akışları için bir girişte sıraya alınan paket sayısı
akış neredeyse her zaman sıfır veya bir olmalıdır. Böyle bir durum söz konusu değilse
şu uyarı mesajını görürsünüz:
Resolved a deadlock by increasing max_queue_size of input stream
Ayrıca CalculatorGraphConfig::report_deadlock
ayarı,
başarısız olmak üzere çalıştırılan grafik, kilitlenmeyi hata olarak ortaya çıkarır (ör. max_queue_size)
görevi görebilir.
Grafik takılı kalıyor
Birçok uygulama CalculatorGraph::CloseAllPacketSources
ve
Bir MediaPipe'in yürütülmesini tamamlamak veya askıya almak için CalculatorGraph::WaitUntilDone
grafiğe dönüştürülebilir. Buradaki amaç, beklemede olan hesaplayıcıların veya paketlerin
ve ardından grafiği kapatmaktır. Her şey yolunda giderse
grafikteki akış Timestamp::Done
değerine ulaşacak ve her hesap makinesi
CalculatorBase::Close
erişim düzeyine ulaşın ve ardından CalculatorGraph::WaitUntilDone
başarıyla tamamlanacaktır.
Bazı hesap makineleri veya yayınlar Timestamp::Done
durumuna ulaşamazsa veya
CalculatorBase::Close
ise CalculatorGraph::Cancel
yöntemi şöyle olabilir:
beklemedeki tüm hesap makinelerini beklemeden grafik çalışmasını sonlandırmak için çağrılır.
paket olması da mümkündür.
Çıkış zamanlaması eşit değil
Bazı gerçek zamanlı MediaPipe grafikleri, bir dizi video karesi oluşturarak video efekti olarak veya video teşhisi olarak kullanılabilir. Bazen bir MediaPipe grafiği, kümeler halinde oluşturabilirsiniz. Örneğin, birkaç çıkış aynı giriş çerçeveleri kümesinden çıkarım yapılır. Çıkışlar üretildikçe, bazı çıkış çerçeveleri hemen sonraki Aynı kümede çerçeveler kullanır ve bu da sonuçların görülmesini ve değerlendirilmesini zorlaştırır. yardımcı olur. Bu gibi durumlarda çıktı görselleştirme, proje yöneticiliği pozisyonu Kareleri eşit aralıklarla gerçek zamanlı olarak sunmak için kullanılır.
MediaPipe, bu kullanım alanını, zaman damgalarını gerçek zamanlı olarak noktalara eşleyerek ele alır.
Her bir zaman damgası, bir zamanı mikrosaniye cinsinden belirtir ve bir hesap makinesinde olduğu gibi:
LiveClockSyncCalculator
, paketlerin çıkışını kendi ayarlarıyla eşleşecek şekilde geciktirebilir
ekleyebilirsiniz. Bu tür hesap makinesi, çıktıların zamanlamasını şu şekilde ayarlar:
- Çıkışlar arasındaki süre, yakından incelemeniz gerekiyor.
- Çıkışlar, mümkün olan en kısa gecikmeyle üretilir.
HesaplayıcıGraph girişlerin gerisinde kalıyor
Birçok gerçek zamanlı MediaPipe grafiğinde düşük gecikme hedeflerinden biridir. MediaPipe "ardışık düzen"i destekler ve paralel işleme yöntemini kullanarak mümkün olduğunca erken gönderin. Normalde olası en düşük gecikme "kritik yol" boyunca her hesap makinesinin ihtiyaç duyduğu toplam süre art arda hesap makineleri. MediaPipe grafiğinin gecikmesi, ideal olandan daha kötü olabilir Bunun nedeni, aşağıdaki adımları uygulayarak görüntüleme çerçevelerine Çıkış zamanlaması eşit değil.
Grafikteki hesap makinelerinden bazıları gerçek zamanlı girdilere ayak uyduramazsa
akışlar devam ederse gecikme artmaya devam eder ve
birkaç giriş paketi bırakın. Önerilen teknik,
özel olarak bu amaç için tasarlanmış hesap makineleri,
Şu şekilde FlowLimiterCalculator
:
How to process realtime input streams
.