久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

QEMU+debootstrap:PC端搭建arm64仿真環(huán)境部署YOLOv5s全攻略

QEMU+debootstrap:PC端搭建arm64仿真環(huán)境部署YOLOv5s全攻略 1. 為什么先要在PC端搭一個仿真環(huán)境1.1 這套教程走到這一步到底在解決什么問題如果你已經(jīng)拿到了香橙派5這塊板子也看完了前面幾篇關(guān)于RK3588基礎(chǔ)環(huán)境和YOLOv5s模型結(jié)構(gòu)的文章大概率會迫不及待地想把模型跑到板子上。但我先潑一盆冷水真機部署YOLOv5s這件事卡點從來不在模型本身而在于環(huán)境。YOLOv5s這個模型結(jié)構(gòu)并不復(fù)雜PyTorch生態(tài)也成熟難的是arm64架構(gòu)下的Python環(huán)境、PyTorch庫、OpenCV、numpy這些依賴之間的兼容關(guān)系。稍有版本對不上就會出現(xiàn)import torch直接段錯誤、cv2讀取圖片全部為空、模型權(quán)重加載到一半卡死之類的玄學(xué)問題。調(diào)試這些問題最痛苦的點在于香橙派5的串口調(diào)試和SSH連上去倒是方便但每次修改環(huán)境都要重新燒錄、重啟、裝包一次完整調(diào)試周期可能要二十分鐘以上。尤其是當你需要反復(fù)測試YOLOv5s推理鏈路時這種低效率會消磨掉整個項目的熱情。所以這篇教程里的核心思路就八個字先仿真后上板。PC端模擬器仿真的本質(zhì)是在X86工作機上搭建一個完整的arm64運行環(huán)境讓你在開發(fā)機上以接近原生的方式運行arm64版本的Python、PyTorch以及YOLOv5s整套代碼。這樣你可以先把代碼邏輯、依賴版本、推理流程全部調(diào)通確認沒有任何環(huán)境層面的問題之后再去香橙派5上做真實部署。因為模擬器和真機共享同一套arm64指令集環(huán)境所以只要你在這里跑通了上了真機大概率一次成功。這套方案適合誰呢我按使用場景分了三類。第一類是你剛剛接觸RK3588開發(fā)板對YOLOv5s的部署流程不熟想把整個技術(shù)棧在PC上先摸一遍避免反復(fù)折騰板子。第二類是你正在做YOLOv5s的代碼移植和功能驗證比如要接攝像頭或者修改后處理邏輯適合在快速迭代的PC仿真環(huán)境里改代碼。第三類是你手上只有一塊香橙派5但舍不得把它當作實驗品來折騰想先確定方案可行再動手。無論你是哪一類這篇教程的方法都能省下大量時間。1.2 模擬器仿真和交叉編譯是兩回事很多人會把交叉編譯和模擬器仿真搞混我先花一點篇幅把這兩個概念掰開。交叉編譯解決的問題是“編譯動作和目標執(zhí)行環(huán)境不一致”。也就是說你在X86的PC上編譯出一個arm64架構(gòu)的可執(zhí)行文件但你的X86機器此時運行不了這個文件必須把這個文件拷到香橙派5上才能運行。這種做法適用于編譯原生代碼工具鏈比如C/C程序但面對Python這種解釋型語言時就不太夠用了。為什么不夠用因為Python的運行不僅需要解釋器還需要一大堆site-packages里的擴展庫。PyTorch在arm64平臺上的whl輪子包體積動輒幾百兆里面既有編譯好的.so動態(tài)庫又有Python層代碼。你想在PC上把這些whl全部通過交叉編譯的方式逐個搞定工作量是災(zāi)難級的。退一步說就算你費盡功夫全編譯出來了pkg版本之間的依賴關(guān)系在交叉編譯時也很難完全模擬出來。而模擬器仿真的思路完全不同。它是在X86宿主機上正兒八經(jīng)運行一套arm64的根文件系統(tǒng)rootfs然后通過QEMU這個“翻譯層”把arm64的機器指令翻譯成X86機器指令來執(zhí)行。在這個rootfs里你安裝的是arm64版本的Python解釋器、arm64版本的PyTorch、arm64版本的OpenCV它們互相配合相當于一個完整的香橙派5系統(tǒng)跑在你的開發(fā)機里。對YOLOv5s這個模型來說這套環(huán)境里跑出來的推理行為和真機是一致的性能只是打了個折扣。所以我的結(jié)論很簡單交叉編譯適合折騰單個小程序模擬器仿真適合折騰一整套Python深度學(xué)習(xí)環(huán)境。你要部署YOLOv5s走模擬器路線是性價比最高的。當然這個方法也有代價就是運行速度明顯低于真機這個我們通過模板編譯優(yōu)化可以部分彌補但整體性能仍然有限。后文我會專門分析這個磚頭。1.3 先想清楚性能預(yù)期別拿模擬器當性能標準我見過不少朋友拿著模擬器環(huán)境跑YOLOv5s發(fā)現(xiàn)一幀圖片要跑十幾秒直接就下了“RK3588跑不動目標檢測”的結(jié)論。這是完全錯誤的判斷方向。模擬器仿真的價值絕對不在于性能而在于功能驗證和環(huán)境驗證。QEMU的翻譯執(zhí)行天然有性能損耗數(shù)據(jù)通常會是真機的五到二十倍具體取決于你跑的是純計算還是帶大量內(nèi)存操作的代碼。在仿真環(huán)境里你真正應(yīng)該關(guān)心的是模型能正常加載嗎圖片前處理流程有沒有問題推理結(jié)果和真機預(yù)期一致嗎模型輸出框的位置和分類是否正確這些是可以用模擬器快速確認的因為它們只依賴CPU計算邏輯的正確性不依賴速度。而推理耗時要控制在正式部署時再調(diào)整那才是RK3588的NPU和CPU協(xié)處理真正發(fā)揮價值的地方。這里我想額外強調(diào)一點模擬器跑出來的環(huán)境和你之后在香橙派5上搭建的環(huán)境兩者在Python版本、依賴庫版本、模型權(quán)重上必須保持一致。你要是模擬器里用Python 3.9到了真機上卻裝了Python 3.11那代碼能跑但可能會引入一些隱性的庫兼容問題排查起來非常痛苦。盡量用同一套rootfs或者至少鎖定同樣的版本這是仿真的核心原則。2. 仿真環(huán)境的搭建三個核心組件的逐一拆解2.1 交叉編譯器給arm64準備一套C/C編譯環(huán)境雖然我們走了模擬器路線但交叉編譯器依然是整套方案的地基。原因很簡單你在X86宿主機上編譯出來的Python、OpenCV等第三方庫雖然目標平臺是arm64但編譯過程中需要調(diào)用交叉編譯器來生成最終的目標機器代碼。沒有這個基礎(chǔ)組件后面每一步都得卡殼。推薦使用aarch64-linux-gnu-gcc這是Ubuntu和Debian系的交叉編譯工具鏈。安裝命令在一行之內(nèi)但版本選擇有講究。在香橙派5的生態(tài)里我通常建議使用Ubuntu 22.04 LTS上的gcc-aarch64-linux-gnu它的glibc版本和板子自帶的鏡像系統(tǒng)匹配度較高。如果你用的是Debian系宿主系統(tǒng)直接裝gcc-aarch64-linux-gnu也可以但要注意交叉編譯出來的二進制在目標機上的glibc版本依賴如果目標機版本太舊有可能會報GLIBC_2.34 not found之類的錯誤。為什么這塊這么重要因為Python在編譯時需要生成C擴展模塊比如_ctypes、_hashlib、_ssl這些擴展模塊最終都是.so動態(tài)庫必須鏈接到正確的arm64系統(tǒng)庫上。如果交叉編譯工具鏈的sysroot路徑里的庫版本和目標rootfs不一致你編譯出來的Python解釋器可能可以運行但一些第三方包在import時就可能出現(xiàn)“undefined symbol”的詭異錯誤。所以我的固定搭配是交叉編譯器gcc-aarch64-linux-gnu版本不低于10目標rootfsDebian bullseye arm64glibc版本2.31編譯參數(shù)-marcharmv8-acrc確保兼容RK3588的Cortex-A76核心這套搭配我用了小半年沒出過大問題。如果你的PC是新的Intel或AMD平臺裝Ubuntu 22.04之后直接apt install gcc-aarch64-linux-gnu就能拿到全部組件。安裝完成后用aarch64-linux-gnu-gcc --version檢查一下輸出類似aarch64-linux-gnu-gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0就說明環(huán)境就緒。2.2 QEMU用戶態(tài)模擬器讓arm64程序在X86上跑起來QEMU是整個模擬器方案里最核心的執(zhí)行引擎。這里我使用的不是QEMU全系統(tǒng)模擬也就是不用模擬完整的主板和硬件而是用戶態(tài)模擬模式也就是qemu-aarch64-static。它的工作模式可以理解成一個“指令翻譯器”當你的X86宿主機準備執(zhí)行一個ELF格式為arm64的可執(zhí)行文件時內(nèi)核會通過binfmt_misc機制把這個文件交給qemu-aarch64-static來運行后者逐條將arm64指令翻譯成X86指令來執(zhí)行。為什么要選用戶態(tài)模擬而不是全系統(tǒng)模擬這里有一個顯著的利弊權(quán)衡。全系統(tǒng)模擬需要加載香橙派5的完整內(nèi)核鏡像好處是可以連驅(qū)動和硬件行為一起模擬壞處是速度慢到你懷疑人生——跑一次Debian的啟動都要十分鐘以上更別提在里面跑PyTorch了。而用戶態(tài)模擬跳過了內(nèi)核層面的模擬只處理用戶程序的指令翻譯速度要好得多。對于跑純用戶態(tài)程序的YOLOv5s來說功能完全夠用。安裝上特別推薦使用靜態(tài)編譯版本的qemu-aarch64-static。apt install qemu-user-static裝出來的就是這個形態(tài)。為什么非要靜態(tài)版本因為模擬器本身運行在宿主機上它需要依賴宿主機的glibc但如果在目標rootfs環(huán)境中使用動態(tài)鏈接的qemu它就會嘗試從目標rootfs里尋找依賴庫很容易導(dǎo)致加載順序混亂崩潰。靜態(tài)版本通過file qemu-aarch64-static查看輸出應(yīng)該是statically linked字樣。binfmt_misc的注冊也很關(guān)鍵。apt install qemu-user-static的時候Debian系會自動幫你注冊好arm64格式的binfmt記錄所以一般來說不需要手動配置。但如果你換了別的Linux發(fā)行版可能需要手動執(zhí)行一次注冊命令。Linux內(nèi)核里有一個“執(zhí)行格式處理器”機制讓系統(tǒng)遇到arm64的ELF文件時自動調(diào)用模擬器這個機制被命名為binfmt_misc。我通常檢查是否注冊成功的方式很簡單直接運行一個arm64版本的busybox能正常輸出就是成功了。2.3 debootstrap根文件系統(tǒng)搭一個完整的arm64“小系統(tǒng)”交叉編譯器和QEMU只是工具真正的“虛擬香橙派”是根文件系統(tǒng)。我需要強調(diào)一下這里的rootfs并不是一個只能用來跑YOLOv5s的簡易目錄而是一個完整的Debian bullseye arm64系統(tǒng)里面有/usr/bin、/lib、/etc這些標準目錄再加上Python運行所需的共享庫。構(gòu)建方法是用debootstrap工具這個工具原本是為了快速建立Debian chroot環(huán)境而生的但它配合QEMU就能輕松構(gòu)建一個arm64的rootfs。命令大概是這樣sudo apt install debootstrap sudo mkdir -p /opt/op5-rootfs sudo debootstrap --archarm64 --foreign bullseye /opt/op5-rootfs http://deb.debian.org/debian這里有個關(guān)鍵細節(jié)--foreign參數(shù)意味著debootstrap只把第二階段所需的包解壓到rootfs但不在宿主機上直接執(zhí)行配置腳本。為什么要這樣因為debootstrap第二階段的腳本需要在目標架構(gòu)環(huán)境里運行在X86宿主機上跑會直接報錯。所以需要先chroot到rootfs里去執(zhí)行第二階段而chroot到arm64 rootfs時又依賴于QEMU用戶態(tài)模擬。第二階段的執(zhí)行流程是這樣sudo cp /usr/bin/qemu-aarch64-static /opt/op5-rootfs/usr/bin/ sudo chroot /opt/op5-rootfs /debootstrap/debootstrap --second-stage這個過程視網(wǎng)絡(luò)狀況而定一般在五分鐘到十分鐘。跑完之后/opt/op5-rootfs就是一個可以正常進入的arm64最小系統(tǒng)了。以后每次需要“進入”這個虛擬香橙派環(huán)境只需要sudo chroot /opt/op5-rootfs /bin/bash你在chroot環(huán)境里敲命令時感覺就像直接登錄了一塊香橙派5板子。不過這里要特別提醒chroot說白了只是切換了文件系統(tǒng)根目錄并沒有完整模擬香橙派5的硬件信息所以你在里面用cat /proc/cpuinfo看到的CPU信息還是宿主機的這不是問題不影響Python程序運行。如果你追求希望通過模擬器看到真實板卡的/proc/cpuinfo輸出就需要換全系統(tǒng)模擬方案但那在性能上的代價不適合本項目。這時候整個仿真環(huán)境的三塊拼圖都齊了交叉編譯器負責(zé)編譯QEMU負責(zé)指令翻譯rootfs提供一個完整的arm64系統(tǒng)空間。接下來進入實際的環(huán)境配置環(huán)節(jié)開始準備能跑YOLOv5s的Python運行環(huán)境。3. 實操全程從零到模擬器里跑出YOLOv5s檢測框3.1 第一步安裝宿主依賴并準備目錄正式開始前先把宿主機的依賴補全。我是在一臺跑Ubuntu 22.04的臺式機上做的這套流程核心就是安裝前面提到的交叉編譯器和QEMUsudo apt update sudo apt install qemu-user-static binfmt-support debootstrap sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu這幾個包安裝完成后建議順手檢查一下binfmt注冊情況。因為我之前遇到過某些發(fā)行版安全策略限制/proc/sys/fs/binfmt_misc/register寫入權(quán)限不夠的情況表現(xiàn)為你運行arm64二進制時直接報Exec format error。這種情況下需要臨時提升權(quán)限sudo sysctl -w fs.binfmt_misc.status1然后確認rootfs目錄存在按理說前面已經(jīng)做好了如果你跳過了上面的debootstrap步驟一定先回去做。我這里假設(shè)你已經(jīng)建好了/opt/op5-rootfs目錄并且第二階段執(zhí)行完成。準備就緒后先進入rootfs做一次最小化的系統(tǒng)更新避免后面裝包時庫里版本過舊sudo chroot /opt/op5-rootfs /bin/bash apt update apt install wget curl vim git build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev這條命令里的依賴全部是編譯Python時需要的系統(tǒng)庫關(guān)鍵就是libffi-dev和libssl-dev。記住我之前踩過的坑如果缺了libffi后面Python import ctypes會失敗整個深度學(xué)習(xí)框架都沒法加載。如果缺libssl安裝pip后連PyPI倉庫都連不上。3.2 第二步編譯arm64版Python 3.9這是大頭進入rootfs之后我們開始編譯Python。為什么不用系統(tǒng)自帶Python版本主要原因是香橙派5上運行的Ubuntu系統(tǒng)自帶的Python是3.10而YOLOv5官方代碼對Python 3.9的支持驗證最充分很多第三方預(yù)編譯的PyTorch arm64 wheel也是對cp39優(yōu)化得最好。用系統(tǒng)自帶版本容易在后續(xù)裝包時碰到“該wheel不支持此Python版本”的提示所以我堅持用3.9。編譯Python的過程和你在普通Linux上編譯沒有本質(zhì)區(qū)別但因為它在QEMU模擬環(huán)境里跑速度會慢一些整個編譯過程大概得半小時到四十分鐘建議用tmux掛個會話慢慢等。cd /usr/src wget https://www.python.org/ftp/python/3.9.17/Python-3.9.17.tgz tar -zxvf Python-3.9.17.tgz cd Python-3.9.17 ./configure --prefix/usr/local/python3.9 --enable-optimizations --with-lto make -j4 make install有幾個參數(shù)需要解釋一下。--enable-optimizations會自動執(zhí)行PGO優(yōu)化因為之前QEMU環(huán)境下PGO測試階段那個性能損耗會更明顯整個過程會拉長。如果你遇到的問題是想快速搭好環(huán)境可以直接去掉這個參數(shù)編譯時間能縮短一半。--with-lto啟用鏈接時間優(yōu)化對于C擴展模塊的加載有一定性能提升但它要求交叉編譯器支持LTO所以我在編譯這道工序里用的就是gcc-aarch64-linux-gnu版本必須高一點太低版本會有LTO兼容問題。編譯完成后設(shè)置PATH和LD_LIBRARY_PATHexport PATH/usr/local/python3.9/bin:$PATH export LD_LIBRARY_PATH/usr/local/python3.9/lib:$LD_LIBRARY_PATH關(guān)鍵一步來了確認Python能正常import所有需要的標準庫python3 --version python3 -c import sqlite3; import ssl; import ctypes; print(ok)如果輸出okPython解釋器這部分就合格了。如果報錯優(yōu)先檢查是否漏裝了libsqlite3-dev、libssl-dev、libffi-dev其中任何一個庫。這是我遇到過最多的一個問題特別是sqlite3缺失時Python的包管理器會間接出問題排查起來還不明顯。3.3 第三步組裝虛擬環(huán)境裝PyTorch與YOLOv5倉庫為什么我要堅持用虛擬環(huán)境venv而不是直接把這個Python裝成系統(tǒng)的全局Python原因很實際你后面在真機上部署時極有可能這臺香橙派5上已經(jīng)有系統(tǒng)自帶的Python環(huán)境和別的項目如果用全局Python安裝一套YOLOv5s要用的大堆依賴可能會把系統(tǒng)環(huán)境搞壞。用虛擬環(huán)境可以做到“項目環(huán)境隔離”最終整個依賴目錄打包帶走拷貝到香橙派5上解壓就能用部署效率高很多。創(chuàng)建虛擬環(huán)境并進入cd /opt /usr/local/python3.9/bin/python3 -m venv yolo_env source yolo_env/bin/activate這個虛擬環(huán)境創(chuàng)建完成后你會看到shell提示符前面多了一個(yolo_env)前綴。但這里要特別提醒一個QEMU模擬下的坑虛擬環(huán)境創(chuàng)建時pip的安裝引導(dǎo)腳本是從系統(tǒng)中的ensurepip模塊復(fù)制過來的如果在QEMU模擬里這個引導(dǎo)過程閃斷你可能會遇到virtualenv可用但pip不可用的情況。解決辦法是創(chuàng)建venv后再手動裝一次pippython3 -m ensurepip --upgrade接著安裝YOLOv5依賴的Python庫。PyTorch在ARM平臺上的安裝方式很有講究我們不能直接用pip install torch因為默認源拉下來的可能是X86版本。需指定使用arm64專用的ManyLinux輪子倉庫。如果你在arm64的Raspberry Pi或者其他ARM板子上裝過PyTorch對https://download.pytorch.org/whl/cpu這個地址應(yīng)該很熟悉它提供的torch-1.11.0cpu-cp39-cp39-manylinux2014_aarch64.whl就是為arm64準備的標準wheel。pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu這里的CPU版本有優(yōu)勢真機香橙派5的NPU對PyTorch模型的優(yōu)化不是通過常規(guī)的torch CUDA路徑實現(xiàn)的所以GPU版和NPU加速的兼容性很差。所以一上來就用CPU版反而能在模擬器和真機之間保持高度一致的推理結(jié)果。還有一點是我的個人經(jīng)驗在仿真環(huán)境里建議先用pytorch 1.11.0這個版本的arm64 wheel包兼容性最大跟我后面要說的后處理封裝能很好地銜接。裝完P(guān)yTorch后克隆YOLOv5倉庫并安裝剩余依賴注意requirements.txt里包含opencv、numpy、matplotlib、pandas等一堆東西git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt這一步會拉取大量whl包。模擬器環(huán)境下pip的下載速度正常但安裝階段有幾類包要做本地C擴展編譯速度明顯比宿主機慢。這里必須耐心等待。如果等待過程中有任何包編譯失敗把報錯信息記錄下來繼續(xù)排查最常見的是opencv-python頭文件問題和pandas里的numpy版本沖突。我的建議是把opencv-python替換成opencv-python-headless因為它剔除了GUI相關(guān)依賴在無顯示器仿真環(huán)境里少裝一堆庫也讓后續(xù)的包依賴管理更干凈。如果你用的也是我這種方式最后可以檢查一下環(huán)境python3 -c import torch; print(torch.__version__) python3 -c import cv2; print(cv2.__version__)如果輸出torch為1.11.0cpu且cv2正常環(huán)境就緒了。如果輸出類似Illegal instruction (core dumped)或者段錯誤基本就是QEMU翻譯出現(xiàn)指令集沖突直接看第四章第三節(jié)的排查方法。3.4 第四步跑通推理測試并做精度和性能記錄環(huán)境搭好了開始正式跑一張圖片驗證YOLOv5s推理鏈路。在YOLOv5倉庫目錄下有一張輕量級的測試圖data/images/bus.jpg我們直接用detect.py腳本測試python3 detect.py --weights yolov5s.pt --source data/images/bus.jpg --project runs/sim_test第一次運行這個命令時如果本地沒有yolov5s.pt權(quán)重文件腳本會自動從官方GitHub Release上下載。這一步在模擬器環(huán)境里可能有坑因為倉庫里的下載地址有時連通性不佳而且模型的權(quán)重文件是放在GitHub LFS上的。我遇到過下載卡半天不動的解決方式是提前手動下載權(quán)重文件放到weights/目錄再在運行時通過--weights weights/yolov5s.pt指定。推理跑完后腳本會在runs/sim_test/exp目錄生成帶檢測框的標注圖片。在無圖形界面的仿真環(huán)境下你可以直接把生成圖片拷貝到宿主機上打開看效果cp runs/sim_test/exp/bus.jpg /tmp/result_bus.jpg然后退出chroot環(huán)境在宿主機上查看/tmp/result_bus.jpg。理論上你應(yīng)該看到bus類別被正確識別檢測框位置準確。這一步代表模擬器里YOLOv5s的完整推理鏈路已經(jīng)跑通。同時也要記錄一下模擬器的運行耗時數(shù)據(jù)。在chroot環(huán)境下直接加時間time python3 detect.py --weights yolov5s.pt --source data/images/bus.jpg我實測的一張1920x1080圖片在模擬器環(huán)境里跑一整個流程大概需要80到100秒其中很大一部分是環(huán)境初始化和圖像預(yù)處理耗掉的。這個數(shù)據(jù)不用慌張因為真機上通過NPU加速推理同一張圖往往只需要幾百毫秒。模擬器真正檢驗的功能你都已經(jīng)完成了。作為對比我還建議你在拿到真實板子后用同一套venv跑一次同樣的命令記錄下真機耗時把兩張數(shù)據(jù)表放進你的開發(fā)文檔里這是非常有價值的驗收和驗證數(shù)據(jù)。4. 模擬器環(huán)境里的排坑實錄與經(jīng)驗總結(jié)4.1 必踩之坑一site-packages的符號鏈接陷阱這個坑我花了整整一個晚上才找到原因非常典型先拿出來說。我用venv創(chuàng)建虛擬環(huán)境并安裝PyTorch之后一切看起來正常但一執(zhí)行import torch就報錯說找不到某個模塊。我進入虛擬環(huán)境的lib/python3.9/site-packages目錄發(fā)現(xiàn)里面一大堆包的文件赫然是符號鏈接指向系統(tǒng)的/usr/local/python3.9/lib/python3.9/site-packages目錄。按理說venv里的包文件就是應(yīng)該這樣操作的畢竟虛擬環(huán)境設(shè)計上就是通過軟鏈來復(fù)用基環(huán)境的庫。但在QEMU模擬環(huán)境下問題出現(xiàn)了chroot進去后這些軟鏈接指向的是宿主機上的絕對路徑/usr/local/python3.9/...但這個路徑在rootfs環(huán)境里根本不存在軟鏈接就全部變成懸掛狀態(tài)Python自然找不到模塊。我驗證這個猜測的方式是ls -la /opt/yolo_env/lib/python3.9/site-packages/ | head -20看到一堆broken symbolic link的提示后問題定位就明確了。解決辦法有兩種。第一種是在rootfs里把虛擬環(huán)境做成“獨立完整”的——不依賴基環(huán)境的軟鏈具體做法是創(chuàng)建虛擬環(huán)境之前不要安裝全局Python到/usr/local而是把所有包全部裝在venv內(nèi)。但這樣效率低、包安裝耗時長。第二種更簡潔的方案是不要用venv直接在rootfs里用全局Python的site-packages因為我們的目標是把這套環(huán)境整體打包拷貝到真機全局和venv在打包遷移上差別不大全局環(huán)境還少了軟鏈這一層麻煩。我的最終建議是直接放棄venv改為在rootfs全局Python里安裝依賴并嚴格記錄pip freeze的包版本。這樣打包rootfs到香橙派5時整個/usr/local/python3.9目錄都是真實文件不存在軟鏈陷阱。4.2 必踩之坑二Illegal instruction與AVX指令亂入這個坑的詭異程度在模擬器踩坑里絕對排得上號。當我第一次在模擬環(huán)境里跑YOLOv5s的train.py時模型加載階段報出Illegal instruction (core dumped)整個Python進程直接崩掉。第一反應(yīng)以為是QEMU翻譯錯誤但用gdb跟了一下core dump的原因發(fā)現(xiàn)是程序在執(zhí)行某段代碼時觸發(fā)了非法指令。再仔細查問題是PyTorch在安裝時其setup階段會自動檢測宿主機CPU支持的指令集。如果你的X86宿主機是近幾年的CPU幾乎一定支持AVX、AVX2甚至AVX512指令集。但YOLOv5s用的一些底層優(yōu)化函數(shù)和PyTorch的torchvision::ops會基于這些指令集做特化優(yōu)化可QEMU在翻譯arm64指令時并不認識這些AVX指令它只處理arm64的指令集。所以本質(zhì)上我在X86推理機上裝了arm64版的PyTorch wheelwheel本身是arm64的代碼但在編譯torchvision::ops的C擴展時如果發(fā)現(xiàn)是從pip的源碼構(gòu)建而非預(yù)編譯會退回到本機優(yōu)化就出現(xiàn)了X86指令污染arm64環(huán)境的罕見案例。解決方法是徹底避開源碼編譯使用官方預(yù)編譯的torch1.11.0cpu版本確保所有C擴展都是arm64預(yù)編譯的二進制。這類wheel包里的.so文件是純arm64的不存在宿主機指令集探測邏輯。如果你確實需要編譯某些源碼包建議在編譯時顯式指定CFLAGS禁用AVX系列指令export CFLAGS-marcharmv8-a export CXXFLAGS-marcharmv8-a這里armv8-a是arm64的基礎(chǔ)架構(gòu)理論上兼容性最好。經(jīng)過這一步調(diào)整YOLOv5s就能穩(wěn)定跑起來。這個坑是模擬器特有的畢竟你真機運行arm64原生程序時根本不存在X86指令的概念。4.3 必踩之坑三YOLOv5s.pt模型加載后decode卡死模型加載成功一段時間后我就發(fā)現(xiàn)一個更隱蔽的問題在運行detect.py時模型成功加載圖像預(yù)處理也完成了但在最后的NMS后處理階段直接卡死。控制臺沒有任何輸出也沒有報錯就是一直掛著不動。排查了好一陣子最后發(fā)現(xiàn)卡點是PyTorch 1.11.0在arm64環(huán)境里的一個已知問題某些版本的CPU版torch在非標準平臺比如QEMU模擬環(huán)境上實現(xiàn)torchvision.ops.nms()時存在死鎖或無限循環(huán)。好消息是解決方案特別簡單就是把YOLOv5的默認后處理替換成純PyTorch實現(xiàn)的版本避免調(diào)用torchvision.ops.nms。具體做法是在detect.py里強制指定model.model[-1].nms False或者直接修改YOLOv5倉庫里utils/general.py中的NMS函數(shù)實現(xiàn)將torchvision.ops.nms注釋掉改用YOLOv5自帶的non_max_suppression函數(shù)。這里多說一句YOLOv5倉庫實際上早在0.7版本之后就在默認路徑上避免使用torchvision.ops.nms了所以這個問題主要影響的是通過pip install -U torchvision誤升級到新版torchvision的場景。如果你在安裝時嚴格固定torchvision0.12.0這個版本和torch 1.11.0匹配大概率能繞開。這個坑排查的價值在于它告訴我們模擬器環(huán)境和真機一樣版本鎖定對深度學(xué)習(xí)框架項目來說是極度重要的尤其是以毫秒計的算子實現(xiàn)版本差異可能直接決定項目能否跑通。4.4 必踩之坑四虛擬環(huán)境激活后 import torch 仍然失敗有一次我在某臺新PC上重新搭整套環(huán)境virtualenv創(chuàng)建成功進入rootfs激活venv后Python版本檢查正常但import torch報出找不到torch._C模塊的錯誤。這種情況最氣人因為版本檢查顯示torch已經(jīng)裝上了甚至pip show torch也確認包位置無誤。排查過程讓我意識到這是venvinside-chroot場景下PYTHONPATH發(fā)生了混亂。在chroot環(huán)境中venv激活腳本會把一些路徑硬編碼進去但宿主機和rootfs之間的絕對路徑又不一致導(dǎo)致Python加載擴展模塊時找不到真正的.so文件。定位方法很簡單(venv) python3 -c import torch; print(torch.__file__)如果能輸出site-packages/torch/__init__.py但隨即在加載torch._C時失敗那就是擴展模塊路徑的問題。解決辦法是不要依賴activate腳本直接設(shè)置好PYTHONPATH和LD_LIBRARY_PATHexport PYTHONPATH/opt/yolo_env/lib/python3.9/site-packages export LD_LIBRARY_PATH/usr/local/python3.9/lib:$LD_LIBRARY_PATH確保這些動態(tài)庫路徑都在你的環(huán)境變量里import torch大概率就正常了。這個問題的根本原因在于QEMU模擬環(huán)境下的動態(tài)鏈接器在某些情況下不如原生環(huán)境靈活所以手動指定運行時庫路徑比依賴默認搜索機制更可靠。4.5 其余零散但高頻的坑除了上面四個大坑還有幾個頻率高但解決起來快的小問題列成清單方便你排查現(xiàn)象排查方向建議處理OpenCV讀不了圖片opencv-python是GUI版依賴libgtk卸載后裝opencv-python-headlesspillow版本沖突YOLOv5依賴pyyaml較老與pillow 10.x不兼容鎖定pillow 9.5.0matplotlib渲染崩潰模擬器無顯示環(huán)境字體文件缺失提示使用Agg后端MPLBACKENDAgglibopenblas加載失敗BLAS庫路徑錯誤在rootfs里apt install libopenblas-dev libatlas-base-devtorch推理耗時異常長QEMU的浮點模擬損耗這是正?,F(xiàn)象記錄數(shù)據(jù)即可不優(yōu)化模擬器尤其是OpenCV這個問題幾乎每個用YOLOv5系列的人都會碰到。原因在于很多ARM基礎(chǔ)教程里為了省事直接裝opencv-python全量版但香橙派5上可能缺少對應(yīng)的GTK依賴導(dǎo)致圖片讀取路徑上的cv2.imread返回None。排查依據(jù)是cv2.imread沒報錯但result全是空針對這個坑我強烈建議在模擬器和真機上都統(tǒng)一使用headless版本省時省力。4.6 從模擬器到真機的遷移技巧既然整個仿真環(huán)境的意義就是為了最終的板子部署最后說說怎么把這套環(huán)境“搬”到香橙派5上。本質(zhì)就是打包rootfs和Python依賴然后拷貝到開發(fā)板的SD卡或SSD上。先明確目標機的rootfs目錄就是你模擬器里用的/opt/op5-rootfs打包它cd /opt sudo tar -czpf op5_rootfs.tar.gz op5-rootfs注意tar打包時要保留軟鏈接和權(quán)限-p參數(shù)不能少。生成的包大概有2到3GB取決于你安裝的PyTorch和依賴拷貝到真機上解壓即可。但這里要提醒解壓到真機后不能直接用chroot進入因為真機會運行自己的內(nèi)核和rootfs里的Debian mirror的源配置不一致。我這個方法的精度是“依賴打包遷移”不是“系統(tǒng)整盤燒錄”你真正拿到真機上用的是rootfs里的/usr/local/python3.9目錄以及YOLOv5倉庫和訓(xùn)練好的權(quán)重文件。這些文件在真機上放入系統(tǒng)的對應(yīng)目錄并配置好環(huán)境變量就能無縫激活。同步文件時的建議是直接用SCP或rsync因為香橙派5在局域網(wǎng)里的訪問很方便rsync -avz --excludeproc --excludesys /opt/op5-rootfs/ userorangepi5:/opt/op5-rootfs/同步完之后在真機上設(shè)置環(huán)境變量并驗證Python和torch版本配合前面在模擬器里跑通的業(yè)務(wù)代碼真機推理就水到渠成了。而且因為環(huán)境版本完全一致模擬器里排過的一切坑在真機上都不會再出現(xiàn)。這套路我前前后后用了四五次每次的效果都相當穩(wěn)定。其實說到底PC端模擬器的價值不在于替代真機而是把風(fēng)險前置到開發(fā)階段。環(huán)境對了版本鎖定了邏輯跑通了上板只是時間問題。個人在實際操作中的一個體會是模擬器環(huán)境里無意中引發(fā)的“異常指令”和“軟鏈丟失”這些問題反而讓我對arm64架構(gòu)的運行邏輯比直接上手真機還要明白。希望這篇手把手的內(nèi)容能幫你少走幾步彎路。最后再分享一個小技巧仿真環(huán)境里的pip freeze輸出一定要保留成文件連同rootfs一起存好就算之后你的真機環(huán)境真被折騰壞了隨時還能拿這套東西快速重建一個完好的工作環(huán)境。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
青青草白白色| 欧美一级A片在线看视频性色| 国产无吗在线播放| 美國A片| 久久人妻一区二区三区高清| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 啪啪免费| 男人综合网| 97资源超碰| 日本中文字幕不卡视频| 91爰爱欧美| 天堂无码精品国产久| 久久久久久久六六| 伊人97超碰| 91看黄片| 欧美天天综合网版| 久久精品国产精品| 中文字幕在线免费观看视频| 九九九九国产| 日本一片一区| 操比国产| 午夜男女爽爽爽影院视频| 加勒比东京热五月天天堂网| 中出后入| 日韩人妻精品中文字幕| 夜色综合| 亚洲97P| 中文字幕 一区二区 亚洲无码| 国产精品人人爽人人做可爱福利 | 亚洲精品免费中文字幕| 日韩成人在线性爱视频| 日韩中文字幕视频| 亚洲成人在线乱码色午夜| 91色黑人少妇| 色色色综合网| 国产一区二区精品久久99| 岛国免费视频在线| 久操凹凸视频| 亚洲影院成人| 揉揉日日日日| 久九九九| 丁香五六月啪啪| 日本影视久久免费| 青草精品视频-日本久久久久网站| 欧美肥臀在线| 亚洲伊人久久精品影院| 欧美色图在线视频少妇| 99色在线| 丰满丝袜少妇AV| 97人人爱人人做人人乐| 深夜视频| 日本高清视频xxxx| 亚洲精品一区二区精华| 一区操逼日比视频| 大香蕉免| 夜夜爽夜夜高潮夜夜爽| 国产精品无码av嫩草| 国产精品国产亚洲区艳妇糸列| 精品国产Av无码久久久伦古装| 91插B网站| 日韩欧美久久婷婷网站| 96久久久| 中文AV制服乱伦| 中英熟女操女| 国产激情在线观看| 无码一区二区三区四区五区六区七区八区九区十区视频 | 啊啊啊啊操死我了| 日本ZZ高免费A级视频| 色网在线| 亚洲在钱| 人妻系列无码专区中文有码| 超碰成人最新最好看| 婷婷五月天成人网| 99久久婷婷国产综合精品草原| 成人免费在线网站| 国产强奸超碰AV| 中文字幕在线免费观看视频| 青青草公开在线免费不卡视频| 成人一级二级| 明星性猛交ⅹxxx乱大交| 国产在线综合网| 国产熟女免费观看久久| 精品国产污一区二区三区| 久草新在线| 国产一二三福利视频网| 男女激情黄色网址| 91久久久老司机| 色婷婷一区二区三区久久午夜| 国产sv美女内射| 加勒比综合| 这里只有精品97| 大香蕉中文| 国产极品美女高潮无套在线观看| 嗯阿好爽好紧| 91亚洲影视| 亚洲αv一区二区三区| 91国产精品在线看| 欧美日韩婷婷中文| 人人性爱视频免费| 爽爽淫人网| 91青青在线视频| 国产精品一区二区手机看片| 亚洲高潮少妇| 一区二区影视| 日本3级一区二区免费| 中文字幕 一区二区 亚洲无码| 亚州精品人妻一二三区| 国产亚洲精品农村妇女 | 天天视频黄| 亚洲精品视频在线| 亚洲欧美97| 岛园激情| 丰满人妻aA一区二区三区| 色色色欧美| 玖玖爱综合网| 日韩精品视频在线观看一卡二卡| 日韩欧亚中文在线| 强奸乱伦亚洲第一页| 九九干| 思思视频免费看网站| 91操人| αⅴ天堂| 在线国产一区二区av| 欧美日韩少妇色情| 深夜福利黄片| 欧美在线官网| 天天懆天天日| 亚洲精品一卡二卡三卡福利视频网站 | 狠狠超| 欧美黑人猛交春色影视大全| 久久精品视| 亚洲av综合色区图片亚洲| 亚洲熟妇熟在线电影视频| 久久精品国产亚洲5555| 亚洲人人夜夜澡人人爽| 中文字幕精品资源在线| 久久精品一区一起草| 亚洲精品影视老司机| 日韩精品人妻中文字有码在线| 吖在线不卡一区二区国产剧情| 亚洲人成网www| 26UUU欧美激情一区二区| 韩国轻伦国内自拍一区| 久久久精品视频免费观看| 骚日日av| 欧美日韩夜夜| 强奸乱伦av电影| 成人五月天色网| 少妇3P性爱自拍| 男人的天堂无码| 欧美天天插| 人人操超碰在线| 一区二区三区精品视频| 99re黄| 九热大香蕉| 国产兽交视频在线播放| 日韩亚洲97| 亚洲91在线播放影院| 日韩电影免费网站麻豆视频| 青娱乐av在线| 乱伦av.com| 欧美色女人| 狠色婷婷久久一区二区三区_| 在线性黄高清免费视频| 国产黄色小视频网站| 插插综合网天天影视网| 欧美视频第二页| 色综合久| 亚洲第一无码播放立川理惠| 91久久久亚洲| 情色大香蕉| 夜夜操夜夜爽夜夜高潮| 97超碰国产亚洲精品资源| 特级特黄一级毛片免费| 国产精品久久| www.成人无码| 国产熟女精品区| 色性综合| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产人人干| 97资源超碰| 99热这里只有精品地址| 国产传媒操逼视频| 天堂69亚洲精品中文字| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美真人抽搐一进一出gif | 四虎视频在线观看| 极品五月天噜噜| 爱av免费| 熟女字幕| 国产树林里野战在线看| 无码丰满熟妇一区二区浪潮AV| 东京热毛片177b2viP| 欧美综合自拍亚洲综合图| 亚洲欧美国产日本一区二区三区| 精品视频免费在线一区| 欧美日韩*字幕一区| aa片毛片| 欧美日韩中文字幕人妻| 视频国产成人精品日本亚洲18 | 夜夜中出国产| 99精品在线| 国产综合日韩伦理| 日日爱99| 亚洲日韩精品久久久久一区壹牛| 精品人成视频在线观看| 国产福利一区二| 亚洲欧美日韩偷拍色图| 伊人影院日本| 日韩无码极品| 天天做天天爱夜夜爽毛片试看| 91丝袜美女视频| 三四中文字幕| 亚欧无码线免费观看视频| 人妻偷拍一区二区三区| 国产黄片在线免费观看| 午夜影美女日鸡鸡天天视频国产| 亚洲国产一级精品毛一级精品看免费视频| 色在线亚洲视频www| 精品国产无码中文| 人看人人摸人人操| 黄页18禁| 国产精品第二页| 激情婷婷丁香| 91狠狠综合久久| 亚洲风情在线观看| 韩国三级一线观看久| 亚洲一区日韩精品| 婷婷五月天成人网| 日本九九久久99播| 欧洲小说色图视频另类| 欧美亚洲在线| 日韩欧美性吧婷婷乱伦大香蕉| 天天看天天干| 日本精品成人无码| 老熟女91av| 91中文精品日韩欧美在线| 神马影院午夜福利久久久| 夜夜操夜夜高潮夜夜爽国产精品区| 好一吊区二区| 亚川综合视频| 夜夜嗨一区二区| 日本不卡三级网在线播放| 91伊人大香蕉| 日韩精品亚洲一二三| 日日夜夜精品视频| 欧美强奸乱| 天天综合色电影| 91成人社区| 夜夜欧美| 色色婷| 亚洲黄日韩无码专区| 久久99干一本高清| 亚洲偷拍自拍在线视频| 国产婷婷一区| 91中文字幕制服丝袜免费视频| 绯色一区二区三区不卡少妇| 欧美特大黄一级片片免费| 在线女人91| 91在线丝袜| 无遮挡男女激烈动态图| 日韩婷婷| 天天色踪合| 日本在线观看网址| 欧美天天插| www久久精品| 影音先锋每日最新资源在线观看| 操久久久久久| 久久久久九九九九九| 日韩欧美大力操| 久久久草成人网站久久久草成人久久久草久久久 | 中文在线视频| 高清一区AV无码| 色香色香欲天天天影视综合网| 日韩大香蕉精品在线视频| 国产捆绑一区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 天天色,天天干,天天干| 色诱中文字幕| 色五月激情AV在线| 我要去看2个日本美女.com曹逼| 婷婷97| AV天黑人| 日韩三级一区| 久久尹人大香焦视| 亚洲色综合| 91精品操美女| 日本污ww视频网站| 国产精品久久久蜜臀| 人人澡人人干| 一区二区三区 丝袜 高跟 美腿| 嗯嗯嗯啊啊在线观看| 久久高清欧美国产| 九九九九97| 久草福利在线资源站| 色制服丝袜夫妻av一区| 免费精品人妻一区二区三| 日韩AV一区二区三区三州三州| 国产精品久久久久婷婷二区次| 国产男女无套视频免费观看| 亚洲色婷婷综合久久久久中文| 99热在线观看| 久久网亚洲| 亚洲AV成人在线| 日韩精品 欧美激情| 欧美午夜精品久久久久久3D| 亚洲美女AV无码| 中文字幕视频一区视频二区| 国产亚洲精品A在线观看下载| 亚91亚洲网| 成人av福利在线观看| 精品无人区麻豆乱码久久久| 最新中文字幕精品在线| 青青草原av| 免费观看欧美日韩操逼视频| 欧美少妇人妻| 精品一二三区四视频| 操逼片中文| 欧美亚洲清纯| 啊啊啊好湿国产一二| 眼镜人妻101.com| 91国产在线精品| 亚洲高清无码免费观看视频| 69XX一中文字幕人妻91| 加勒比av网| 人妻天堂综合网| 在线人成亚洲视频免费观看| 大但人体久久久久| 亚洲天堂另类小说男人| 天天视频黄网站| 国产美女自拍视频| A男人的天堂| 日本色婷婷| 玖玖爱在线视频免费观看| 日日日大屁股骚女人精品| 人妻中文字幕日韩电影| 日韩有码 一区二区三区| 午夜福利在线合集| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 超碰成人免费| 懂色中文一区二区三区 | 欧美精品自慰系列寂寞少妇| 日本αv| 亚洲性综合11| 成人色女网| 亚洲日本成人动漫| 亚洲精品中文字幕一区在线视频 | 婷婷综合五月天| 欧美日韩另类在线播放| 视频不卡中文字幕| 精品无人区麻豆乱码1区2区图片 | 天天草夜夜草高潮片| 91久久婷婷| 超碰久久网| 无码heyzo高清一区| 亚洲色图欧美视频| 欧美日本中字另类在线| 国产偷拍网站| 青青草中文字幕| 久操免费电影| 亚春色色| 大但人体久久久久| 亚洲欧美国产va在线| 成人熟女视频一区二区三区| 欧美国产日韩清纯唯美| 日亚韩精品视频二区三| 8050无码八戒| 国产97视频免费观看| 日韩黄色av中文字幕| 亚洲欧美色图| 九九九九九精品| 日本三级精品| 97干在线| 欧美v日韩v亚洲v最新在线| 欧美一区二区| 亚洲欧美黄| 欧美色综合网| 一本久道久久综合狠狠爱一密臀精| 欧美成人精品一区二区男人蜜臀| 久久机热| 国产日韩美女小穴视频网站不卡| 亚洲精品国产熟女久久久| 91影视亚洲| 青青草字幕AV| 2019亚洲男人天堂| 97久久天天综合色天天综合色电影| 亚州 综合 色图| 麻豆精品A片免费观看| 厕所偷拍在线| 开心六月色| 中文字日本乱码| 国产乱码精品久久久久久| 黄呦呦在线| 91色伦综合| 欧美丝袜美女电影一二三四区| 午夜福利在线合集| 久久亚洲一区女同性恋中文字幕| 麻豆亚洲AV成人无码久久精品| 黄页av| yw尤物av无码点击进入麻豆| 国产又黄又粗的视频| 欧美精品23| 日日操丁香五月天| 性色av婷婷久久一区二区点复制| 淮穴色AV| 国产成人主播| 超碰97伊人| 久久精品国产亚洲AV先锋| 日韩av免费一级电影| 久久直播国产| av天堂影视中文在字幕在线中文 | 欧美 精品国产制服第一页| 日本一区二区三区午夜观看| 欧美一区二区三区日韩| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 看一级黄色视频| 天天透伊人| 青青草啪啪网| 色原狠狠天天天| 在线a亚洲视频播放在线| 国产一级高跟丝袜| 久久麻豆一区二区| 欧美精品三区| 丰满熟女一区二区三区在线播放| 91精品久久久久五月天精品| 国产伦精品一区二区三区在线观 | 岛国1区2区3区在线观看| 肉嘟嘟www视频在线观看高清| 黑丝内射一区二区三区| 国产情色在线| 亚洲电影中字一区二区| 涩五月婷婷| 丝袜亚洲91| 久久69| 911粉嫩人妻| 一区二区三区日韩欧美| 色与欲影视| 99精品视频在线观看免费| 女色视频社区| 欧洲精品二区| 操逼网免费无码视频| 日本不卡码黄色 | 夜夜嗨一区二区| 91亚洲欧美综合高清在线| 91综合网| 亚洲少妇色| 日本天堂在线播放| 秋霞久久亚洲精品成人| 午夜久久一区二区无码中出| 色97干| 日韩性爱高清免费视频| 亚洲欧美综合网站| 郑州宾馆老熟女露脸啪啪| 成人色女网| 国产呦精品系列在线观看| 91Chinese在线| 91美女国产在线| 在线国产福利网址导航| 亚洲人妖网| 黄色AV影视| 国产视频97| 黄色性爱网网| 亚洲女人毛茸茸91| 人人摸人人摸人人干| 亚洲色情在线影视| 精品国产一区二区三区香蕉欧美| 懂色AV中文| 日韩欧无码一区二区三区免费不卡| 久久午夜伦| 国产三级片在线观看| 99自拍视频| 97伦综合| 爱射综合| 成人无码在线视频网站| 人人操人人射人人干| 日韩色| 蜜乳av一区二区三区四区不卡| 一起草欧美| 91无摭挡| 99热色精品| 亚洲熟女诱惑| 亚洲欧美爆| 欧美自拍偷拍综合图片| 中文幕97| 国产久久久久久久久一区二区| 97超碰伊人| 骚逼高潮久久精品| 欧美精品三级黄片| 99re这里| 99热精品在线| 无码操逼视频一下| 91欧美巨乳| 人人爱操| 性色AV网站| 日日噜噜夜夜久久亚洲一区二区| 久久综合激情| 成 人 A V免费视频在线观看| 超碰人妻中文在线| 久久9视频| 中文字幕黄片在线| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 女人被男人桶爽视频网站| 久久熟女久| 骚逼高潮久久精品| 日本操逼视频不卡直接放| 国产诱惑| 国产精品制服丝袜中文字幕日韩一区二区三区 | 日韩欧美tv一区二区在线观看| 国产精品白丝AV| 91丝袜在线观看视频在线观看| 思思热免费在线视频| 三四中文字幕| 一区二区三区色综合| 久草婷婷| 九九九午夜| 欧美 日韩 婷婷 五月| 51一区二区三区| 国产树林里野战在线看| 国产精品人妻熟女aⅴ| 中文字幕99999| 婷婷五月天久久久| 18+91网站| 啊嗯嗯啊好大好爽| 人妻二区| 麻豆国产精品午夜视频| 志村玲子视频一区二区| 国产亚洲色停停久久99精品91| 97超碰大| 97综合激情| 色约约一区=区三区| 久久老子无码午夜伦不卡| av九九| 熟妇xxxxx性春色| 大香蕉线| 亚洲中字慕不卡| 一区麻豆 高清中文字幕| 逼逼逼逼操操操操操操操操操午夜剧场| 综合第一页| 日本 情色 1区2区3区| 国产女同性恋视频| 久久国产精品91| av天堂手机版追回| 日本操嫩b网| av毛片aaaaa免费看| 97超碰中文字幕| 97超碰免费人人性爱| 嗯嗯啊在线视频| 99久久综合| 欧美强奸乱能| 无码高清国产AV| 亚洲无码超碰免费| 欧美亚洲情色| 天天网综合| 懂色Av一区二区三区| 9ⅰ久久久天天| AV色五月天| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧美嗯啊……在线观看视频免费| 岛园激情| 久久久久人妻二区精品叶可怜| 日骚逼视频| 麻豆天天躁天天揉揉AV| 91 天天综合| 丝袜美腿91| 久久华人网| 人人妻人人色一区二区三区| 日韩无码服务区| 超碰在线在公开超碰在线在公开| 99热国产精品| 亚洲蜜臀精品视频久久| 粉嫩AV一区二区夜夜| 欧美一区二区| 中文字幕精品探花视频| 狠狠婷婷亚洲中文综合久久| 欧美亚洲自拍另类人妻| 亚洲色欲天天天堂色欲网女| 免费一级a毛片久久久久久鸭绿欲| 极品国产内射| 377p欧洲日本亚洲大胆| 亚洲欧美日韩精品久久久一区二区| 天天看,天天做| 伊人五月天| 婷婷丁香六月天| 热久久91婷婷| 国产中文福利| 亚洲天堂日本| 久久久久久久| 综合久久久久久久久91| 日本操大逼| 美国一区二区免费视频| 91在线无码精品秘 软件| 69人妻精品一区二区绯色| 国产伦精品一区二区三区视频女| 在线97在线| 色眯眯av| 综合久久2017| 天天操夜夜操狠很操| av资源在线观看少妇| 97色论| 91成人久久| 九一国产精品| 操屄日韩| 女同性恋久久| 欧亚第一综合网| 超碰在线1234区| 中文字幕国产在线天堂| 国产操操日韩三级黄| 色五月av| 色第一页| 亚洲日韩黑丝| 国产自制av蜜乳| 麻豆啪啪啪视频| 婷婷三区| 欧美综合第一页| 大黄片做爱的大的| 91久久精品蜜臀| 久久久性少妇| 国产探花日韩援交| 亚洲综合码| 日天天九九天堂666| 亚洲欧美综合区自拍另类| 九月色婷婷| 欧美日韩美女精品久草一区二区三区| 色欲Av人妻精品一区二| 亚洲综合激情五月久久| 丰满少妇精品一区二区| 国产精品嫩草影院午夜两性| 欧美劲爆视频一区二区| 亚洲欧洲色情高清| 99色网| 丰满高潮18xxxx| 清清草影| 日本人妻伦在线中文字幕| 久久人妻丝袜一区二区三| 欧美成人精品一区二区男人蜜臀| 亚洲欧美综合区自拍另类| 国产13区| 综合网天天| 日韩乱码Av| 中国和日本人色哪个不下载能放| 欧美日韩性爱视屏免费看了| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久久草视频污视频| 国产精品免费1区2区视频| 日韩有码免费视频| 国产久久久久久| a在线观看| 五月开心久久AV官网| 欧美伊人久久综合网| 嗯嗯啊啊用力视频免费| AV麻豆免费一区| 一区二区首页| 91精品久久久久五月天精品| 97青娱乐超碰久久| 26uuu久久| 天堂精品小草| 成人26uuu| 色欲色香天天天综合网www-亚洲综合国| www久久国产精品| 性生活无遮挡纯毛片在线看| 岛国大片国产| 日韩中文字幕宗合在线| 亚洲午夜福利视频| 久久9免费视频| 99啪啪| 91亚洲电影| 精爱久久| 黄片com.| 怡红院成人av| 国产无套粉嫩白浆在| 亚洲深夜福利| 亚洲国产综合久久久性感熟妇| 欧美Ⅴ性爱| 校园春色综合色| 国产一区二区三区久久久精品| 91色图片| 日语五十路和六十路亚洲国产精品| 78久久久| 91精品啪在线观看国产城中村| 国产精品一区二区麻豆| 96精品在线| 人人操我人人干| 亚洲精品一卡二卡三卡福利视频网站| 91东京热男人的天堂| 69丨亚洲丨精品丨入口免费播放| 国产亚洲国产超碰| 国产精品久久久吖| 99re在线视频国产| 久久久久成人蜜桃精品| 亚洲,日韩,欧美,成人播放| 久久久9 9 9精品| 亚洲综合小说另类图欧美视频激情小说色五月天 | 色情五月综合婷婷| 久久亚洲AV无码白度| 精品国产国产AV| 国产日韩欧美三级片| 日产操逼| 国产97/欧美| 91人妻视频在线| 伊欧美综合视频| 唯美清纯 妖精视频| 中文字幕55555| 免费操逼视频下载| 777琪琪午夜免费A片| 亚洲在线观看| 欧美伦乱爱| 中文字暮97| 日本精品第一视频在'| 久久午夜鲁丝片| 啊啊啊爽爽| 素人伊尹大香蕉免费下载视频| 精品少妇后入一区二区三区四区人妻巨乳| 美女视频尤物网在线看| 日韩在线电影| 欧美图片校园春色| 国产肏屁眼视频| 久草久热| 少妇滛荡视频| 日本护士高潮| 免费一级黄色录像影片| 国产成久久综合片| 精品人妻一区二区三区在线视频不卡| 国产吹潮女在线观看| 色哟哟-国产专区| 97视频网站在线观看| 欧美色色色| 啪一啪免费视频| 人人操,人人插| 国产精品第一页国产大屁股视频免费区| 97久久精品不卡| 超碰97最新人妻| 无码视频一区二区| 天天操女人| 色色色色色色色色色色色色色色综合 | 99性爱视频| 成人在线视频网| 黄色性爱网网| 亚洲制服欧美另类内射| 国内亚洲精彩视频在线| 午夜男人av| 欧美激情另类一区二区| 秋霞成人一级在线观看| 99这里只有精品国产| 亚洲国产一区二区日韩专区| 少妇厨房愉情理伦片bd在线观看| 91精品人妻偷情| 成人精品在线免费视频| 欧美一级AAAAAAA| 久久中文字幕不卡人妻| 日韩操逼性鲍| 国产日韩色综合| 999综合网| 永久电影三级在线观看| 亚洲欧美色图| av一区二区三区四区| 亚洲欧洲自拍图片专区满春格| 欧美日韩午夜精品一区二区三区| 伊人五月天婷婷| 黄页网站免费高清在线观看| 日韩一性一交一A片俄罗斯| 亚洲国产麻豆一区二区三区| 手机在线观看不卡无码av| 激情五月婷婷综合| 污啪啪啪视频| 第45页一区二区| 欧美亚洲AN| 色噜噜狠狠色综无码久久| 少妇色欲综合网2| 久久大| 人人干黄色| 岛国黄色大片网站| 97婷婷色| 亚州色站 日韩电影| 98精品国产乱码久久久久久| 天天性射网| 三久久久四久久久久| 亚洲精品久久久久毛片A片拉屎| 日本东京热久久久电影| 色吧 综合| 亚洲一卡2卡3卡4卡乱码网站| 中文字幕在线高清男人的天堂 | 亚洲男人的天堂网| 日本一线产区和二线产区伦理片| 97AV在线观看| 免费成人自拍视频在线| 风流老熟女一区二区三区l| www99热| 性老妇一区二区三区| 夜夜嗨免费视频| 人妻9117c| 能直接看AV的网站| 亚洲丝袜色图| 亚洲精品蜜桃久久久| 日韩熟女操逼| 国产精品久久久三级无码| 91久久午夜无码鲁丝片久久人妻| 欧美天天在线| 欧美A片中文字幕| 九九久久99| AV中文字幕剧情1区2区3| 97超级久久| 97人妻免费中文字幕| 日本三级韩三级99久久| 国产精品高朝久久久久久久| 亚洲美女av无码| 97香蕉碰碰人妻国产欧美| 美女淫穴| 国产精品午夜AV完会免费| 中文字幕123| 亚洲熟妇熟在线电影视频| 亚洲情色无码一区二区三区| 无码精品久久久天天影视| 91N欧美| 国产精品伦理| 自拍偷拍草一草| 欧美熟爽综合| 好爽免费视频,| 99色热| 强奸a片网| 嫩草伊人久久精品| 午夜美女福利视频| 天美国产三级传媒| 亚洲人妻色图| 国产精品亚洲免费| 秋霞鲁丝午夜无码一区二区三| 中国AV美女| 十八禁网站在线| 蜜臀久久99精品久久久久久婷婷 | 国产粉嫩出水在线播放| 精品久久大胆人体| 精品人妻中文字幕4399| 欧美亚洲国产自久久| 日本中文熟女视频| 欧美制服网站美腿丝袜| 色九久| 屁屁影院一区二区三区国产| 日韩欧美偷拍美女视频| 性在久久久久久| 欧美日韩亚洲高清不卡一区二区三区| 狠狠色伊人亚洲综合网站色| 97精品国产97久久久久久户外免费| 国内一区二区免费| 天天操av懂色| 欧美gv在线观看| 热久久国产精品视频大陆精品| 9国产超碰| 中文字幕精品久久久久人妻红杏ⅰ| 精品人妻视频入口| 日韩美女高潮喷水视频| 色色色色日本| 91色人| 欧美做爰无码A片视频| 色老大| 婷婷五月天社区| 99re免费| 亚洲熟妇无码一区二区三区| 一本大道不卡一二三区| 中文字幕第23区| 人人插人人搞人人操| 久久午夜神马| 免费看污网站| 亚洲欧洲自拍图片专区满春格| 人妻 欧美 中文| 国产版a级片直播在线| 综合亚州欧美| 日韩女优中文字幕| 欧美激情视频在线一区| 久久久精品一区二区| 婷婷亚洲五月***久久| 69天堂| 天天干2区3区| 精品国产91av一区二区三区| 玖玖超碰熟| 国产尤物AV尤物在线观看不卡| 天天操福利视频综合网站| 天天操综合网| 一级性爱视频免费在线| 日韩精品大香蕉伊人在线| 久久精品国产72国产精品福利| 99热在线只有精品| 91嫩草欧美| www久久99| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 少妇天堂网络| 黄片色区软件| 丝袜亚洲综合| 超碰在线人妻不卡| 国产高潮AA片免费看| 天天上日日上日韩精品| 老女人91| 区一二区日韩亚洲乱码av电影| 狠狠色狠狠色狠狠五月| 91亚州| 国产精品久久久久久9999| 四虎永久在线精品免费网址 | av资源在线播放天堂| 日韩簧片免费看| 超碰吊日色| 91成人久久| 欧美婷婷久久| 99色天堂| 日韩在线观看字幕精品| 91精品91久久久久77777俄罗斯老妇姓x| 精品九九九九九九九九九| 成人在线日韩| 九九性爱网| 中文字幕一区二区三区字幕| 亚洲超碰97| 久夜操| 色偷偷男人的天堂麻豆| 丝袜制服字幕在线| 99自拍视频| 久久美女福利是上海美女| 另类图片欧美激情综合| 就去色综合| 干美女人妻| 欧天美中出| 国产熟女| 大香蕉 222| 亚洲精品97在线| 精品一啪| 久久一级无码精品毛片6| WWW操逼| 男人天堂电影院| 欧美在线啊啊| 天天色综合影视网| 欧美久久人体| 国产女同性恋视频| 午夜情侣自拍网站| 天天透伊人| 久久久久骚| 69超碰综合| 99青草| 精品少妇后入一区二区三区四区人妻巨乳 | 成人五级久久| 欧美亚洲国产91在线| 无码天堂| 蜜乳中文字幕a在线| 乱性AV| 国产综合日韩伦理| 久久无码一区二区二三区性色| 操东北女人| 欧美日韩国产成人高清| 国产女同在线观看视频| se吧提供91精品国产91久久久久久| 亚洲精品一二牛牛| 免费观看性欧美一级| 性久久| 在线综合色| 国产精品国产拍高清AV| 91校园春色长篇| 亚洲精品丝袜-不卡成人免费……| 91 手机在线播放 绯色| 精品国产乱码久久久久久影片| 久久久久密| 久久天天躁日日躁狠狠躁| 91强在线播放| 婷婷性网| 热热色中文无码| 尤物网站91| 国产精品麻豆成人av| 国产一级内射无挡观看| 翔田千里AV无码秘 三区| 日本欧美一区二区三区视频麻豆| 狠狠色噜噜狠狠狠狠狠色综合久久| 欧美强奸乱能| 91美女丝袜诱惑视频| 伊人综合色网| m欧洲一级午老| 99热在线只有精品| 国产熟妇 码视频户外直播| 乱伦一区二区三区‘| 日韩一区二区三区四区五区| 日日狠狠久久偷偷色综合免费| 狠狠热这里都是精品| 日韩精品影视| 狠狠操狠狠操操| 免费一级精品啪啪视频| 色色婷婷五月| 中文字幕超碰CAO| 亚洲欧美激情小说| 亚洲av无码国产精品字幕| 思思热影视| 美女露胸露屁股| 99999这里都精品| 凌辱美少妇久久aV| 99re公开精品免费视频| 婷婷亚洲天堂| 精品九九淫乱男| 欧美极品| 色色色天美视频| 日本裸体久久色噜噜| 十八禁电影伊人网| 9久在线视频只有精品| 久草福利在线资源站| 九九无码久久精品视频| 少妇激情AV| 麻豆亚洲AV成人无码久久精品| 免费αⅴ在线观看| 一区二区三区网站日日骚| A男人的天堂| 秋霞午夜成人福利片片| 欧美精品一区二区少妇免费A片| AV 少妇 人妻 偷拍| 午夜精品人妻二区三区| 久久天堂| 六月丁香五月婷婷| 精品女同一区| 99亚洲国产精品色一区二区三区| 激情久久久| 亚洲精品人伦一区二区| 天天躁日日躁AAAAXXXX国产| 亚洲,欧美,春色,另类| 久久久九精品| 亚洲制服aⅴ中文字幕| 超碰人人在线| 欧亚韩国999| 久干9操| 亚州色站 日韩电影| 色综合加勒比| 日本欧美韩国日产片片在线看免| 国产欧洲精品亚洲午夜拍精品| 亚洲国产欧美另类自拍| 一区二区三区 丝袜 高跟 美腿| 欧美性爱一区二区三区| 大香蕉五月天婷婷| 91欧美综合在线| 欧美日韩不卡a片| 91激情网| 午夜福利国产欧美日韩夜夜| 午夜情侣自拍网站| 97超碰中文在线| 欧美另类色图片| 男女国产精品| 操人91| 78精品| 又大又白奶子| 欧美亚洲特P| 天天干美少妇一区| 爱爱啊啊啊| 丰满人妻一区二区三区免费,| 97干在线视频| 狠狠操狠狠爱| 中欧人妻丝袜中文字幕| 国产最新AV| 97超碰欧美| 国产SV一线| 亚洲精品国产熟女| 大香伊人在线一区| 黄色电影在线播放综合网站| 欧美熟妇精品黑人巨大一二三区| 精品黄色电影| 少妇国产不卡| 欧美国产精品久久九九| 九九热免费国产视频婷婷伊人五月 | 国产视频一区二区三区久久亚洲天堂| 99re免费| 欧美少妇一区二区三区| 日韩97P| 区一二区日韩亚洲乱码av电影| 欧美东京热精品A∨| 亚洲无码成人精品| 91总综合网| 国产九九九九九九九九| 啊啊啊啊免费视频| 久久人妻办公室视频| 亚洲欧美日韩免费观看| 女生自91网站| 自拍偷拍 日韩无码| 亚洲天堂男| 射欧美综合| 色色色色日本| 男生通女生屁股| 夂久色| 亚洲一区二区AV| 亚洲欧美中日韩| 国产a片操逼| 美国三级日本三级久久99| 艹精品| 亚洲欧洲色情高清| 大伊香蕉在线视频免费| 天天爽天天操啊啊啊| 欧美人妻二区三区| 大香蕉强奸乱伦| 亚洲人精品午夜不卡| 中文操嬖片。| 九九九精品美女| 三级片大波波| 五月天丁香婷婷综合网站| 精品人妻一区二区三区不卡断 | 久久黄黄黄| 啊a一区在线| 久久精品色欧美aⅴ一区二区| 精品视频一区二区| 大香蕉青青9| 67914在线精品观看| 国产成人无码久久精品| 精品一区二区国产日韩| 亚洲激情久久久伊人综合| 97碰碰日本乱偷人妻中文的| 大香蕉丝袜一级片| 亚洲va有码在线天堂| 97爱| 亚洲色图欧美色图综合| 97色涩| 日韩99999色| 九九性爱网| 岛国网址国产| 国产午夜精品理论片一二三区区| 操操操操操操| 国产精品老熟女一区二区| 亚洲一区二区精品福利| 亚洲另类欧美精品| 色九久| 国产日韩美女小穴视频网站不卡| 亚州综合图片| 亚洲影视综合网| 996热| av天堂5| 久久久国产av美女私房| 99热| 精品久| 久操免费电影| 久久熟女嫩草成人片免费| 色综合超碰超| 欧美一区二区在线资源| 狠狠欧美| 2010男人的天堂| 一本大道不卡一二三区| 精品久久久久久无码| 国产综合日韩伦理| 亚洲国产精品成人久久蜜臀| 欧美线天码中字| 尤物视频新赏网鲜网色诱网| 精品人妻一二三四区视频| 欧美激情超碰777| 99国产精品久久久久久久成人热| 国产九九久久久精品| 色婷婷99| 天天做天天爱天天高潮| 91Chinese在线| 在线性黄高清免费视频| 男人的天堂一区三区| 欧美网站免费| 激情专区综合| 日韩免费看黄片| JULIA一区二区三区在线播放| 色香色欲天天综合网天天来吧 | 在线情色电影 91大| 欧美狠狠鲁| 亚洲大胆人体av| 久久久久久久久久久久欧美日| 97日视频| 国产精品久久久久久9999| 91热色| 蜜臀久久99精品久久久久久酒店| 992视频一区| 欧美色999| 99久久久无码精品国产人| 人人玩人人添人人澡免费|