欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

旋轉(zhuǎn)目標(biāo)檢測核心:旋轉(zhuǎn)GIoU計算原理與C++實(shí)現(xiàn)詳解

旋轉(zhuǎn)目標(biāo)檢測核心:旋轉(zhuǎn)GIoU計算原理與C++實(shí)現(xiàn)詳解 1. 項目概述從IoU到旋轉(zhuǎn)GIoU的演進(jìn)在目標(biāo)檢測、實(shí)例分割等計算機(jī)視覺任務(wù)中交并比IoU是衡量預(yù)測框與真實(shí)框重疊程度最核心的指標(biāo)。無論是模型訓(xùn)練時的損失函數(shù)設(shè)計還是后處理時的非極大值抑制NMSIoU都扮演著至關(guān)重要的角色。然而傳統(tǒng)的IoU及其改進(jìn)版GIoUGeneralized IoU都是為軸對齊的矩形框Axis-Aligned Bounding Box, AABB設(shè)計的。當(dāng)我們的目標(biāo)——比如遙感圖像中的飛機(jī)、船只或者自動駕駛場景中的車輛——存在任意角度的旋轉(zhuǎn)時使用軸對齊框會引入大量背景噪聲嚴(yán)重降低檢測精度。這時旋轉(zhuǎn)目標(biāo)檢測Rotated Object Detection應(yīng)運(yùn)而生其核心便是使用旋轉(zhuǎn)矩形框Rotated Bounding Box, RBB進(jìn)行表示通常定義為(x, y, w, h, θ)其中(x, y)是中心點(diǎn)坐標(biāo)w和h是寬和高θ是旋轉(zhuǎn)角度。隨之而來的一個關(guān)鍵問題是如何計算兩個旋轉(zhuǎn)矩形框之間的IoU更進(jìn)一步如何計算其GIoU以解決無重疊情況下的梯度消失問題這就是“旋轉(zhuǎn)目標(biāo)GIoU計算原理與C代碼實(shí)現(xiàn)”要解決的核心課題。它不僅是旋轉(zhuǎn)目標(biāo)檢測模型如RoI Transformer, R3Det, S2A-Net等損失函數(shù)的關(guān)鍵組成部分也是評估旋轉(zhuǎn)檢測器性能的基石。本文將深入拆解旋轉(zhuǎn)IoURotated IoU, RIoU和旋轉(zhuǎn)GIoURotated GIoU, RGIoU的計算原理并提供一個高效、健壯、可直接集成到項目中的C實(shí)現(xiàn)方案其中會涉及計算幾何、多邊形處理、性能優(yōu)化等多個層面的細(xì)節(jié)。2. 核心原理深度解析從多邊形相交到面積計算計算兩個旋轉(zhuǎn)矩形框的IoU本質(zhì)上是計算兩個凸多邊形在這里是矩形的交集面積與并集面積的比值。因此整個計算流程可以分解為幾個核心步驟將旋轉(zhuǎn)矩形參數(shù)轉(zhuǎn)化為多邊形頂點(diǎn)、計算兩個凸多邊形的交集、分別計算交集和并集的面積。2.1 旋轉(zhuǎn)矩形的多邊形表示一個軸對齊矩形由中心點(diǎn)(cx, cy)、寬w、高h(yuǎn)定義。當(dāng)其繞中心點(diǎn)逆時針旋轉(zhuǎn)角度θ后其四個頂點(diǎn)的坐標(biāo)需要經(jīng)過旋轉(zhuǎn)矩陣變換得到。這是所有后續(xù)計算的基礎(chǔ)。給定中心點(diǎn)(cx, cy)半寬w/2半高h(yuǎn)/2旋轉(zhuǎn)角度θ通常定義為矩形長邊與x軸正方向的夾角逆時針為正四個頂點(diǎn)的局部坐標(biāo)未旋轉(zhuǎn)時為(-w/2, -h/2),(w/2, -h/2),(w/2, h/2),(-w/2, h/2)。應(yīng)用旋轉(zhuǎn)矩陣R(θ) [[cosθ, -sinθ], [sinθ, cosθ]]進(jìn)行變換然后加上中心點(diǎn)偏移即可得到最終的頂點(diǎn)坐標(biāo)V_i R(θ) * [local_x_i, local_y_i]^T [cx, cy]^T, 其中i 0, 1, 2, 3。注意角度定義與頂點(diǎn)順序不同的數(shù)據(jù)集和庫對旋轉(zhuǎn)角度θ的定義可能不同。常見的有兩種1) 定義為長邊與x軸的夾角范圍[-π/2, π/2)或[0, π)2) 定義為矩形整體旋轉(zhuǎn)的角度范圍[-π, π)或[0, 2π)。頂點(diǎn)順序順時針或逆時針也必須保持一致否則會影響后續(xù)多邊形交集算法的正確性。在實(shí)現(xiàn)中必須明確約定并貫穿始終。本文后續(xù)代碼將采用θ ∈ [-π/2, π/2)的定義頂點(diǎn)按逆時針順序存儲。2.2 凸多邊形交集算法旋轉(zhuǎn)卡殼與Sutherland-Hodgman計算兩個凸多邊形的交集是計算幾何中的經(jīng)典問題。對于旋轉(zhuǎn)矩形這種特定的凸四邊形有幾種主流算法Sutherland-Hodgman多邊形裁剪算法這是最常用且實(shí)現(xiàn)相對直觀的算法。其核心思想是用多邊形A的每條邊構(gòu)成的無限長直線去裁剪多邊形B保留B在A“內(nèi)部”的部分迭代進(jìn)行。對于兩個多邊形需要執(zhí)行兩次A clip B和B clip A但通常一次裁剪的結(jié)果就是交集因?yàn)橥苟噙呅谓患允峭苟噙呅?。該算法效率為O(N*M)其中N和M是多邊形的邊數(shù)。對于矩形而言NM4效率很高。旋轉(zhuǎn)卡殼Rotating Calipers求凸多邊形交集這是一種更高效的算法可以在近似O(NM)的時間內(nèi)完成。它通過兩個“卡殼”平行線沿著多邊形滾動來找到交點(diǎn)并構(gòu)建新的交集多邊形。雖然效率更高但實(shí)現(xiàn)復(fù)雜度也顯著增加?;谌瞧史值乃惴▽蓚€多邊形分別三角剖分然后計算所有三角形對之間的交集并累加。這種方法通用性強(qiáng)但實(shí)現(xiàn)復(fù)雜且效率不如前兩者。對于旋轉(zhuǎn)矩形交集計算Sutherland-Hodgman算法在實(shí)現(xiàn)復(fù)雜度和效率之間取得了最佳平衡是工業(yè)界和學(xué)術(shù)界最普遍的選擇。因此我們的實(shí)現(xiàn)將基于此算法。2.3 面積計算與IoU/GIoU公式得到交集多邊形可能是一個多邊形也可能是多個對于凸多邊形交集則是一個凸多邊形后計算其面積。多邊形面積可以通過“鞋帶公式”Shoelace formula計算對于頂點(diǎn)(x1, y1), (x2, y2), ..., (xn, yn)面積Area 0.5 * |Σ(x_i * y_{i1} - x_{i1} * y_i)|其中下標(biāo)循環(huán)。設(shè)矩形A的面積為Area_A矩形B的面積為Area_B交集面積為Area_Intersection。并集面積Area_Union Area_A Area_B - Area_Intersection。IoUIoU Area_Intersection / Area_Union。當(dāng)Area_Union為0時即兩個矩形面積為零且完全重合理論上罕見IoU定義為1。GIoUGIoU的提出是為了解決當(dāng)兩個框不重疊時IoU恒為0導(dǎo)致梯度為0無法優(yōu)化的問題。其計算公式為GIoU IoU - |C \ (A ∪ B)| / |C|。 其中C是包含A和B的最小外接矩形對于旋轉(zhuǎn)框是包含兩個旋轉(zhuǎn)矩形的最小軸對齊矩形。|C|是C的面積|C \ (A ∪ B)|是C中不屬于A或B的區(qū)域面積。GIoU的取值范圍是[-1, 1]當(dāng)A和B完全重合時為1當(dāng)A和B相距無限遠(yuǎn)且C面積遠(yuǎn)大于并集面積時趨近于-1。對于旋轉(zhuǎn)目標(biāo)GIoURGIoU計算流程與軸對齊框的GIoU一致只是A、B、C的形態(tài)和面積計算方式不同A和B是旋轉(zhuǎn)矩形它們的面積Area_A,Area_B就是w * h旋轉(zhuǎn)不影響面積。交集面積Area_Intersection需要通過上述多邊形求交算法計算。最小外接軸對齊矩形C的獲取分別計算A和B的所有頂點(diǎn)共8個點(diǎn)的x坐標(biāo)最小最大值和y坐標(biāo)最小最大值由此構(gòu)成的軸對齊矩形就是C。其面積Area_C (x_max - x_min) * (y_max - y_min)。2.4 數(shù)值穩(wěn)定性與退化處理在實(shí)際代碼實(shí)現(xiàn)中必須考慮數(shù)值精度帶來的問題接近零的判斷面積、分母等計算中當(dāng)值小于一個極小閾值如1e-8時應(yīng)視為0避免除零錯誤或產(chǎn)生極大的不合理值。退化多邊形當(dāng)兩個矩形不相交時交集多邊形可能為空或退化為一個點(diǎn)或一條線。此時Area_Intersection 0IoU 0。在Sutherland-Hodgman算法中需要能正確處理這種情況輸出一個空的多邊形頂點(diǎn)列表。浮點(diǎn)數(shù)比較判斷點(diǎn)是否在邊上、內(nèi)部還是外部時應(yīng)使用帶有容差的比較例如abs(cross_product) eps來判斷共線。3. C代碼實(shí)現(xiàn)模塊化設(shè)計與高性能實(shí)踐接下來我們將把上述原理轉(zhuǎn)化為可運(yùn)行的C代碼。我們的設(shè)計目標(biāo)是清晰、模塊化、高性能、數(shù)值穩(wěn)定。代碼將包含以下幾個核心類/結(jié)構(gòu)struct Point2D: 表示二維點(diǎn)。struct RotatedBox: 表示旋轉(zhuǎn)矩形。class Polygon: 表示多邊形封裝頂點(diǎn)和面積計算。namespace GeometryOps: 包含幾何操作函數(shù)如點(diǎn)積、叉積、線段交點(diǎn)、Sutherland-Hodgman裁剪等。double calculateRotatedIoU(const RotatedBox b1, const RotatedBox b2): 計算旋轉(zhuǎn)IoU的主函數(shù)。double calculateRotatedGIoU(const RotatedBox b1, const RotatedBox b2): 計算旋轉(zhuǎn)GIoU的主函數(shù)。3.1 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)定義#include vector #include cmath #include algorithm #include limits #include iostream // 定義全局精度容差 const double EPS 1e-8; // 1. 二維點(diǎn) struct Point2D { double x, y; Point2D(double x_ 0, double y_ 0) : x(x_), y(y_) {} Point2D operator(const Point2D p) const { return Point2D(x p.x, y p.y); } Point2D operator-(const Point2D p) const { return Point2D(x - p.x, y - p.y); } Point2D operator*(double s) const { return Point2D(x * s, y * s); } bool operator(const Point2D p) const { return std::abs(x - p.x) EPS std::abs(y - p.y) EPS; } }; // 2. 旋轉(zhuǎn)矩形框 (x, y, w, h, theta) // theta: 弧度制定義為矩形長邊w與x軸正方向的夾角逆時針為正范圍 [-π/2, π/2) struct RotatedBox { double cx, cy; // 中心點(diǎn) double width, height; // 寬和高 (始終為正數(shù)) double angle; // 旋轉(zhuǎn)角度弧度 RotatedBox(double cx_ 0, double cy_ 0, double w_ 0, double h_ 0, double a_ 0) : cx(cx_), cy(cy_), width(w_), height(h_), angle(a_) {} // 獲取旋轉(zhuǎn)矩形的四個頂點(diǎn)逆時針順序 std::vectorPoint2D getVertices() const { std::vectorPoint2D vertices(4); double cos_a std::cos(angle); double sin_a std::sin(angle); double w2 width / 2.0; double h2 height / 2.0; // 局部坐標(biāo) double dx[4] {-w2, w2, w2, -w2}; double dy[4] {-h2, -h2, h2, h2}; for (int i 0; i 4; i) { double local_x dx[i]; double local_y dy[i]; // 旋轉(zhuǎn)并平移 vertices[i].x cx local_x * cos_a - local_y * sin_a; vertices[i].y cy local_x * sin_a local_y * cos_a; } return vertices; } // 獲取面積 double area() const { return width * height; } }; // 3. 多邊形類 class Polygon { public: std::vectorPoint2D vertices; Polygon() default; Polygon(const std::vectorPoint2D verts) : vertices(verts) {} // 判斷是否為空無頂點(diǎn)或退化 bool isEmpty() const { return vertices.size() 3; } // 至少需要3個點(diǎn)構(gòu)成多邊形 // 使用鞋帶公式計算多邊形面積支持凸多邊形和凹多邊形 double area() const { if (isEmpty()) return 0.0; double a 0.0; int n vertices.size(); for (int i 0; i n; i) { int j (i 1) % n; a vertices[i].x * vertices[j].y; a - vertices[j].x * vertices[i].y; } return std::abs(a) * 0.5; } };3.2 幾何操作工具函數(shù)我們將關(guān)鍵的幾何判斷和計算函數(shù)放在一個命名空間內(nèi)。namespace GeometryOps { // 計算二維向量叉積 (v1 x v2) inline double cross(const Point2D v1, const Point2D v2) { return v1.x * v2.y - v1.y * v2.x; } // 計算點(diǎn)p到點(diǎn)p1-p2線段的相對位置和交點(diǎn)用于Sutherland-Hodgman // 返回值: 0 在直線內(nèi)側(cè) 0 在外側(cè) 0 在線上 // 參考: https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm enum class PointLinePosition { Inside, Outside, On }; PointLinePosition pointLineTest(const Point2D p, const Point2D p1, const Point2D p2) { double c cross(p2 - p1, p - p1); if (c EPS) return PointLinePosition::Outside; if (c -EPS) return PointLinePosition::Inside; return PointLinePosition::On; // 共線視為在線上內(nèi)側(cè)邊界 } // 計算直線(p1-p2)與直線(p3-p4)的交點(diǎn) // 假設(shè)兩條直線不平行調(diào)用者需確保 bool lineIntersection(const Point2D p1, const Point2D p2, const Point2D p3, const Point2D p4, Point2D out) { Point2D d1 p2 - p1; Point2D d2 p4 - p3; Point2D d3 p1 - p3; double det cross(d1, d2); if (std::abs(det) EPS) return false; // 平行或共線無交點(diǎn)或無窮多交點(diǎn) double t1 cross(d2, d3) / det; double t2 cross(d1, d3) / det; // 計算交點(diǎn) out p1 d1 * t1; return true; } // Sutherland-Hodgman多邊形裁剪算法 // 用由點(diǎn)clip_p1和clip_p2定義的無限長直線裁剪多邊形subject_polygon Polygon clipPolygonByEdge(const Polygon subject_polygon, const Point2D clip_p1, const Point2D clip_p2) { if (subject_polygon.isEmpty()) return Polygon(); std::vectorPoint2D output_vertices; int n subject_polygon.vertices.size(); for (int i 0; i n; i) { int j (i 1) % n; const Point2D current_point subject_polygon.vertices[i]; const Point2D next_point subject_polygon.vertices[j]; PointLinePosition pos_current pointLineTest(current_point, clip_p1, clip_p2); PointLinePosition pos_next pointLineTest(next_point, clip_p1, clip_p2); // 情況1: 當(dāng)前點(diǎn)在內(nèi)部或線上 if (pos_current ! PointLinePosition::Outside) { output_vertices.push_back(current_point); } // 情況2 3: 線段與裁剪邊相交 if (pos_current ! pos_next) { Point2D intersect; if (lineIntersection(clip_p1, clip_p2, current_point, next_point, intersect)) { output_vertices.push_back(intersect); } } // 情況4: 當(dāng)前點(diǎn)在外下一個點(diǎn)在內(nèi)已在情況3中處理了交點(diǎn) } return Polygon(output_vertices); } // 計算兩個凸多邊形的交集使用Sutherland-Hodgman用poly_b裁剪poly_a Polygon convexPolygonIntersection(const Polygon poly_a, const Polygon poly_b) { if (poly_a.isEmpty() || poly_b.isEmpty()) return Polygon(); Polygon result poly_a; int n poly_b.vertices.size(); for (int i 0; i n; i) { int j (i 1) % n; const Point2D clip_p1 poly_b.vertices[i]; const Point2D clip_p2 poly_b.vertices[j]; result clipPolygonByEdge(result, clip_p1, clip_p2); if (result.isEmpty()) { break; // 交集已為空提前結(jié)束 } } return result; } } // namespace GeometryOps3.3 旋轉(zhuǎn)IoU與GIoU計算主函數(shù)現(xiàn)在我們可以利用上面的基礎(chǔ)組件來實(shí)現(xiàn)核心的IoU和GIoU計算。// 計算兩個旋轉(zhuǎn)矩形的IoU double calculateRotatedIoU(const RotatedBox b1, const RotatedBox b2) { // 1. 獲取多邊形表示 Polygon poly1(b1.getVertices()); Polygon poly2(b2.getVertices()); // 2. 計算交集多邊形及其面積 Polygon inter_poly GeometryOps::convexPolygonIntersection(poly1, poly2); double inter_area inter_poly.area(); // 3. 計算并集面積 double union_area b1.area() b2.area() - inter_area; // 4. 處理數(shù)值穩(wěn)定性 if (union_area EPS) { // 理論上兩個面積為零的矩形完全重合IoU應(yīng)為1。但實(shí)際中面積為零無意義。 // 更常見的情況是兩個矩形都極小且?guī)缀踔睾洗藭r返回1或0取決于應(yīng)用。 // 為安全起見返回0。 return 0.0; } // 5. 計算IoU double iou inter_area / union_area; // 由于浮點(diǎn)誤差iou可能略大于1或小于0需要鉗制到[0, 1] if (iou 1.0 - EPS) iou 1.0; if (iou 0.0) iou 0.0; return iou; } // 計算兩個旋轉(zhuǎn)矩形的GIoU double calculateRotatedGIoU(const RotatedBox b1, const RotatedBox b2) { // 1. 計算IoU double iou calculateRotatedIoU(b1, b2); // 2. 計算最小外接軸對齊矩形C std::vectorPoint2D all_vertices b1.getVertices(); std::vectorPoint2D b2_verts b2.getVertices(); all_vertices.insert(all_vertices.end(), b2_verts.begin(), b2_verts.end()); double x_min std::numeric_limitsdouble::max(); double x_max std::numeric_limitsdouble::lowest(); double y_min std::numeric_limitsdouble::max(); double y_max std::numeric_limitsdouble::lowest(); for (const auto p : all_vertices) { x_min std::min(x_min, p.x); x_max std::max(x_max, p.x); y_min std::min(y_min, p.y); y_max std::max(y_max, p.y); } double area_c (x_max - x_min) * (y_max - y_min); if (area_c EPS) { // 所有頂點(diǎn)重合C面積為0此時GIoU退化為IoU應(yīng)為1 return iou; } // 3. 計算并集面積復(fù)用IoU計算中的結(jié)果但需重新計算 Polygon poly1(b1.getVertices()); Polygon poly2(b2.getVertices()); Polygon inter_poly GeometryOps::convexPolygonIntersection(poly1, poly2); double inter_area inter_poly.area(); double union_area b1.area() b2.area() - inter_area; // 4. 計算GIoU double giou iou - (area_c - union_area) / area_c; // 5. 數(shù)值鉗制GIoU理論范圍[-1, 1] if (giou 1.0) giou 1.0; if (giou -1.0) giou -1.0; return giou; }3.4 性能優(yōu)化與工程化考慮上述代碼清晰展示了原理但在生產(chǎn)環(huán)境中尤其是深度學(xué)習(xí)訓(xùn)練中需要計算大量框?qū)Φ腎oU時性能至關(guān)重要。以下是一些優(yōu)化方向提前排除Early Rejection在計算復(fù)雜的多邊形交集前可以先進(jìn)行快速的重疊測試。例如計算兩個旋轉(zhuǎn)矩形的最小外接軸對齊矩形即上述的C如果這兩個軸對齊矩形都不相交那么旋轉(zhuǎn)矩形也一定不相交IoU直接為0。這可以過濾掉大量不相交的框?qū)Α6c(diǎn)數(shù)或近似計算在精度要求不是極端高的場景可以考慮使用定點(diǎn)數(shù)運(yùn)算或查找表LUT來加速三角函數(shù)sin和cos的計算?;蛘邔τ诮嵌仁?0度倍數(shù)的情況如車輛檢測中常見可以特殊處理避免浮點(diǎn)運(yùn)算。向量化計算如果使用支持SIMD指令集的編譯器如GCC/Clang的-marchnativeMSVC的相應(yīng)選項并合理組織數(shù)據(jù)結(jié)構(gòu)如使用std::array或Eigen::Vector2d編譯器可能自動進(jìn)行向量化優(yōu)化。對于極度追求性能的場景可以手動使用SSE/AVX intrinsics來加速頂點(diǎn)變換、點(diǎn)積叉積等計算。并行化在批量計算成千上萬個框?qū)Φ腎oU時可以使用多線程如OpenMP,std::thread或GPU如CUDA進(jìn)行并行計算。每個框?qū)Φ挠嬎闶仟?dú)立的非常適合并行。緩存頂點(diǎn)如果一個旋轉(zhuǎn)框需要與多個其他框計算IoU其頂點(diǎn)只需計算一次并緩存起來避免重復(fù)的三角函數(shù)計算。使用成熟的幾何庫對于生產(chǎn)環(huán)境直接使用高度優(yōu)化的幾何庫通常是更穩(wěn)妥的選擇。例如CGAL (Computational Geometry Algorithms Library)提供了魯棒性極強(qiáng)的多邊形布爾運(yùn)算。Boost.GeometryBoost庫的一部分功能強(qiáng)大支持多種幾何圖形和操作。OpenCV雖然其cv::rotatedRectangleIntersection函數(shù)可以直接計算旋轉(zhuǎn)矩形的交集面積但其內(nèi)部實(shí)現(xiàn)可能針對特定情況做了優(yōu)化且接口易用。實(shí)操心得庫的選擇與自實(shí)現(xiàn)的權(quán)衡在項目初期或研究原型階段為了深入理解原理和完全控制流程自己實(shí)現(xiàn)一遍是極好的。但在產(chǎn)品級代碼中強(qiáng)烈建議使用CGAL或Boost.Geometry。這些庫經(jīng)過了無數(shù)測試處理了各種退化情況如共線、共點(diǎn)、數(shù)值溢出其魯棒性遠(yuǎn)非短時間內(nèi)自研的代碼可比。自己實(shí)現(xiàn)的代碼更適合用于學(xué)習(xí)、教學(xué)或?qū)σ蕾囉袊?yán)格限制的場景。4. 常見問題與排查技巧實(shí)錄在實(shí)際實(shí)現(xiàn)和使用旋轉(zhuǎn)IoU/GIoU的過程中你幾乎一定會遇到下面這些問題。這里記錄了我的踩坑經(jīng)驗(yàn)和解決方案。4.1 問題一IoU計算結(jié)果大于1或?yàn)樨?fù)數(shù)現(xiàn)象計算出的IoU值偶爾會略大于1.0如1.0000001或略小于0。原因根本原因是浮點(diǎn)數(shù)精度誤差。在多邊形求交過程中交點(diǎn)坐標(biāo)、面積計算都是浮點(diǎn)運(yùn)算累積的誤差可能導(dǎo)致交集面積inter_area略微大于理論值甚至略微大于union_area。并集面積union_area計算為負(fù)值當(dāng)inter_area因誤差略大于b1.area() b2.area()時。解決方案引入容差Epsilon如代碼中所示定義全局EPS 1e-8或1e-10。鉗制Clamp結(jié)果在最后返回IoU前強(qiáng)制將其限制在[0, 1]區(qū)間內(nèi)。if (iou 1.0 - EPS) iou 1.0; if (iou 0.0) iou 0.0;。穩(wěn)健的面積計算確?!靶瑤Ч健笔褂昧藄td::abs并且對非常小的面積如 EPS直接返回0。檢查多邊形頂點(diǎn)順序如果頂點(diǎn)順序不是一致的逆時針或順時針鞋帶公式計算出的面積可能為負(fù)這會導(dǎo)致后續(xù)所有計算出錯??梢栽赑olygon::area()中取絕對值但更好的做法是在構(gòu)造多邊形時確保頂點(diǎn)順序一致。4.2 問題二在特定角度下IoU計算異常或程序崩潰現(xiàn)象當(dāng)兩個矩形角度為0、90度或互為90度時計算結(jié)果不穩(wěn)定有時甚至因?yàn)槌沐e誤而崩潰。原因角度定義不一致你的代碼和調(diào)用方或數(shù)據(jù)集對角度θ的定義可能不同范圍、參考邊。例如OpenCV的cv::RotatedRect角度定義是[0, 180)而有些論文定義是[-90, 90)?;煊脮?dǎo)致頂點(diǎn)計算完全錯誤。退化情況處理不足當(dāng)兩個矩形邊完全平行或重合時直線求交函數(shù)lineIntersection中的行列式det可能為0導(dǎo)致除零錯誤。Sutherland-Hodgman算法中對“點(diǎn)在線上”的判斷邏輯不嚴(yán)謹(jǐn)也可能在退化情況下產(chǎn)生重復(fù)點(diǎn)或無窮循環(huán)。解決方案統(tǒng)一角度約定并文檔化在項目開始時就明確規(guī)定旋轉(zhuǎn)角度的定義參考邊、正方向、范圍并在所有相關(guān)代碼和數(shù)據(jù)標(biāo)注中嚴(yán)格遵守。提供一個轉(zhuǎn)換函數(shù)以備不時之需。增強(qiáng)幾何算法的魯棒性在lineIntersection函數(shù)中如果abs(det) EPS判斷兩條線段是否共線。如果共線可以返回線段的重疊部分一個點(diǎn)或一條線段但這會大大增加復(fù)雜度。一個更簡單的策略是當(dāng)檢測到平行/共線時直接認(rèn)為沒有唯一交點(diǎn)返回false。在Sutherland-Hodgman算法中當(dāng)線段與裁剪邊平行時pointLineTest的結(jié)果會將其正確處理為“在線上”或“在外”通常不會導(dǎo)致錯誤。在clipPolygonByEdge中對輸出的頂點(diǎn)進(jìn)行“去重”操作合并距離非常近的點(diǎn)distance EPS避免生成具有極短邊或重復(fù)頂點(diǎn)的退化多邊形。添加斷言和單元測試編寫全面的單元測試覆蓋各種邊界情況無重疊、點(diǎn)接觸、邊接觸、包含、相交、平行、垂直、角度為0等。使用一個已知正確的參考實(shí)現(xiàn)如調(diào)用OpenCV的函數(shù)進(jìn)行對比測試。4.3 問題三計算速度太慢成為模型訓(xùn)練瓶頸現(xiàn)象在訓(xùn)練旋轉(zhuǎn)目標(biāo)檢測模型時前向傳播很快但反向傳播很慢性能分析顯示大部分時間花在了損失函數(shù)中的IoU/GIoU計算上。原因Sutherland-Hodgman算法雖然對于單個四邊形是O(1)常數(shù)時間但其中的三角函數(shù)計算sin,cos、循環(huán)、條件判斷在批量計算時累加起來開銷巨大。純CPU串行計算難以滿足現(xiàn)代檢測模型大批量訓(xùn)練的需求。解決方案從易到難啟用編譯器優(yōu)化使用-O2或-O3優(yōu)化等級編譯編譯器會自動進(jìn)行很多優(yōu)化。實(shí)現(xiàn)提前排除如前所述在計算多邊形交集前先計算軸對齊包圍盒AABB進(jìn)行快速重疊測試。如果AABB不相交直接返回IoU0。這可以過濾掉大部分負(fù)樣本對。批量計算與向量化將框的參數(shù)中心點(diǎn)、寬高、角度組織成連續(xù)的內(nèi)存數(shù)組如std::vectordouble或Eigen::MatrixXd。重寫頂點(diǎn)計算函數(shù)使用循環(huán)一次性計算所有框的頂點(diǎn)并利用Eigen庫或手動SIMD指令進(jìn)行向量化計算。例如同時計算多個框的sin(angle)和cos(angle)。雖然Sutherland-Hodgman算法本身難以向量化但批量進(jìn)行AABB測試和頂點(diǎn)變換可以向量化。并行化使用OpenMP指令并行化最外層的循環(huán)。例如如果你要計算一個NxN的IoU矩陣可以#pragma omp parallel for來并行計算每一行或每一個元素。終極方案使用CUDA/GPU計算對于訓(xùn)練場景將IoU計算內(nèi)核移植到CUDA是效果最顯著的??梢詫⑺锌驍?shù)據(jù)拷貝到GPU啟動成千上萬個線程每個線程計算一對框的IoU。這需要一定的CUDA編程經(jīng)驗(yàn)但已有一些開源實(shí)現(xiàn)可供參考??紤]近似算法如果對精度要求不是100%可以考慮使用基于矩形的近似IoU計算方法或者使用深度學(xué)習(xí)模型來預(yù)測IoU在一些最新研究中出現(xiàn)但這會引入新的復(fù)雜性。4.4 問題四與第三方庫如OpenCV計算結(jié)果有微小差異現(xiàn)象自己實(shí)現(xiàn)的旋轉(zhuǎn)IoU與OpenCV的cv::rotatedRectangleIntersection配合cv::contourArea計算出的IoU在絕大多數(shù)情況下一致但在某些邊緣情況下有小數(shù)點(diǎn)后6-7位的差異。原因算法實(shí)現(xiàn)差異OpenCV內(nèi)部可能使用了不同的多邊形裁剪算法或數(shù)值處理策略。頂點(diǎn)順序與表示OpenCV返回的交集多邊形頂點(diǎn)順序可能不同或者對退化多邊形的處理方式不同例如可能返回2個點(diǎn)組成的“線段”其面積計算為0而你的算法可能因?yàn)槿莶顚⑵湟暈闊o效多邊形返回空。精度差異OpenCV可能使用float而非double或者使用了不同的近似三角函數(shù)實(shí)現(xiàn)。解決方案理解并接受微小差異在深度學(xué)習(xí)訓(xùn)練中損失函數(shù)中IoU的微小差異如1e-6通常不會影響模型的收斂方向和最終性能。只要差異不是系統(tǒng)性的、巨大的可以認(rèn)為是可接受的。進(jìn)行模糊比較在單元測試中不要使用ASSERT_EQ(expected, actual)而是使用ASSERT_NEAR(expected, actual, tolerance)設(shè)置一個合理的容差如1e-5。深入調(diào)試如果差異較大0.01則需要深入調(diào)試。可以打印出兩個矩形框的輸入?yún)?shù)、計算出的頂點(diǎn)坐標(biāo)、交集多邊形的頂點(diǎn)進(jìn)行逐項對比。通常問題就出在角度轉(zhuǎn)換或頂點(diǎn)順序上。避坑技巧如何驗(yàn)證你的實(shí)現(xiàn)是正確的對稱性測試IoU(box1, box2)必須等于IoU(box2, box1)。范圍測試IoU結(jié)果必須在[0, 1]之間GIoU必須在[-1, 1]之間。特殊值測試兩個相同的框IoU應(yīng)為1。兩個完全不相交的框IoU應(yīng)為0。當(dāng)一個框完全包含另一個時IoU應(yīng)等于小框面積/大框面積。不變性測試對同一個框?qū)ν瑫r進(jìn)行平移、旋轉(zhuǎn)整體旋轉(zhuǎn)即同時給兩個框加一個角度、縮放IoU值應(yīng)保持不變。對比測試與一個可信的參考實(shí)現(xiàn)如OpenCV或另一個經(jīng)過驗(yàn)證的開源實(shí)現(xiàn)在大量隨機(jī)生成的框?qū)ι线M(jìn)行比較統(tǒng)計差異的均值和方差。5. 擴(kuò)展與應(yīng)用在旋轉(zhuǎn)目標(biāo)檢測損失函數(shù)中的集成計算旋轉(zhuǎn)GIoU的最終目的通常是將其作為損失函數(shù)的一部分用于訓(xùn)練旋轉(zhuǎn)目標(biāo)檢測網(wǎng)絡(luò)。最常用的形式是Loss 1 - GIoU。這樣當(dāng)預(yù)測框與真實(shí)框完全重合時損失為0當(dāng)它們完全不重合且距離很遠(yuǎn)時損失趨近于2因?yàn)镚IoU趨近于-1。在PyTorch或TensorFlow中你需要將C實(shí)現(xiàn)封裝為自定義算子以便在計算圖中調(diào)用。這里以PyTorch為例簡要說明步驟編寫C擴(kuò)展使用PyTorch的C前端APIATen庫重寫上面的計算函數(shù)使其能夠處理張量。核心是遍歷批次中的每一對框計算GIoU并輸出一個損失張量。處理廣播和批量計算設(shè)計算子的輸入是兩個張量pred_boxes(形狀[B, N, 5]) 和gt_boxes(形狀[B, M, 5])你需要計算一個[B, N, M]的GIoU矩陣。這通常需要三層循環(huán)Batch, N, M是性能熱點(diǎn)務(wù)必考慮5.3節(jié)提到的優(yōu)化方法。實(shí)現(xiàn)反向傳播如果你需要Loss 1 - GIoU是可微的以便梯度回傳那么你必須實(shí)現(xiàn)GIoU對預(yù)測框參數(shù)(cx, cy, w, h, θ)的梯度。這涉及到對交集面積、并集面積、外接矩形面積求導(dǎo)公式非常復(fù)雜。好消息是對于旋轉(zhuǎn)矩形這個梯度是存在的并且可以通過自動微分Autograd來避免手動推導(dǎo)。你只需要用PyTorch的張量操作重新實(shí)現(xiàn)一遍前向計算PyTorch的autograd引擎會自動為你計算梯度。這意味著你可以用Python重寫一個版本用于訓(xùn)練而C版本用于需要高性能推理的場景。一個實(shí)用的建議許多最新的旋轉(zhuǎn)檢測項目如MMRotate直接使用了PyTorch的自動微分和向量化操作來實(shí)現(xiàn)IoU損失雖然速度可能不如高度優(yōu)化的C算子但開發(fā)調(diào)試難度大大降低。在項目初期優(yōu)先考慮用PyTorch/TensorFlow原生操作實(shí)現(xiàn)一個正確且可微的版本驗(yàn)證訓(xùn)練流程。只有在性能確認(rèn)為瓶頸時再投入精力開發(fā)C/CUDA擴(kuò)展。最后旋轉(zhuǎn)目標(biāo)檢測是一個充滿挑戰(zhàn)且快速發(fā)展的領(lǐng)域高效的旋轉(zhuǎn)IoU/GIoU計算是其中的基石。理解其原理掌握一個可靠的實(shí)現(xiàn)并能根據(jù)實(shí)際場景進(jìn)行優(yōu)化和調(diào)試是打通旋轉(zhuǎn)檢測任務(wù)從模型到落地關(guān)鍵一步。希望這篇長文提供的原理剖析、代碼實(shí)現(xiàn)和避坑指南能幫助你更穩(wěn)健地開展相關(guān)工作。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月婷A V在线| 色色婷婷丁香| 91精品久久久久久久| 九九综合| 思思热思在线精品视频| 欧美日本免费一道免费视频| 天天撸天天干天天插| 色www99| 色色综合网站| 婷婷播播五月天| 亞洲自怕| 大香蕉啪啪啪| 国产精品五月天婷婷| 丁香狠狠干| 亚洲婷婷五月天激情| 美国不卡视频| 六月丁香网| 婷婷五月丁香基| 精品久久99码| 狠狠狠狠草草| 风流少妇A片一区二区蜜桃| 五月天成人手机在线视频| 最新高清无码专区| 婷婷精品在线| 色色网五月激情| 日韩美女在线视频19| 97欧美在线| 天天日人人| 九九九九中文字幕| 国产成人精品一区二区三区视频| 九九色综合视频| 人橾人| 亚洲操操操| 欧美亚洲操逼| 九九色之九九色之88| 色五月婷婷基地| 久久奄也去色色网站| www色综合亚洲92| 91综合在线| 北条麻妃伊人 | 五月天丁香网站| 国产精品久久久久久久久久 | 啪啪六月婷婷| 99久久er| 亚洲天堂AV免费片| 丁香五月1页| 九九精品9| 亚洲av免费在线| 丁香五月天婷婷中文| 免费黄色AV| 天天干天天日蜜臀av| 亚洲综合视频网| 襙逼网| 欧洲S级在线观看| 五月天婷婷色色| 影视av久久久噜噜噜噜噜三级| 午夜丁香六月婷| 91疯狂操操操操| 江苏少妇性BBB搡BBB爽爽爽| 中国女人内射6XXXXX| 无码99| 日本成人噜噜| 五月草视频| 丁香激惜男女| 日本婷婷丁香五月| 婷婷 亚洲图片 丁香| 久久综合综合久久| 久久久久亚洲AV无码网影音先锋| 伊人网啪啪| 丁香五月色色婷| 思思久久99热只有频精品66| 欧亚成人A片一区二区| 久久久精品人妻| 激情人妻综合| 日韩久热| 五月丁香网站| 丁香综合| 色婷婷色| 久操福利| 这里只有精品亚洲| 米奇激情婷婷| 久久久五月四色| 99色热视频| 激情婷婷亚洲五月| 婷婷色色色| 熟女人妻一区二区三区免费看| 一本久道综合色婷婷五月| 婷婷激情五月天在线| 激情综合网,五月| 97视频久久| 国产ava| 天天色图| 思思99re这里只有| 精品无吗va视频免费观看| 婷婷情色激情| 久99视频| 色.五月综合网| 国产亚洲精品久久久久苍井松| 五月婷婷激情综合网| 99热都是精品| 免费在线观看av网站| 亚洲无码影音| 中文字幕综合| 人人干天天操五月丁香| 这里只有精品久久| 大香蕉久久| 思思热精品在线视频| 久久视网36| 天天综合情| 五月激情婷婷开心五月| 青青草蜜臀| 思思久久青草热| 人人妻久久妻| 国产精品人成A片一区二区| 九九激情网| 无码少妇高潮喷水A片免费| chaopengdaxiangjiao| 99久久婷婷五月| 激情AV网| 亚洲精品乱码久久久久久综合| 天天艹天天色| 五月色丁香| 91日本在线观看| 老师的粉嫩小又紧水又多A片视频 欧美三级巜人妻互换 | 五月丁香六月激情综合| 91猫咪国产在线播放| 久久综合五月| 久久机热这里只有精品| 99热精品在线| 丁香五月婷婷激情网| 婷婷五月天777| A久网| 在线视频99| 少妇大叫太大太粗太爽了A片 | 天天日夜夜曹| 国产人妻人伦精品一区二区| 色综合久久44| 六月婷婷综合| 五月丁香婷婷色播无码| 天天碰天天插天天操| 免费五月婷婷网| 99爱精品| 操一区| 丁香五月激情性色郤| 超碰成人在线观看| 一级性爱大片| 激情五月天开心总和网| 五月婷婷影视| 好吊操这里只有精品| 色播播五月| 国产一区二区三区影院| 人人操Av| 激情五月综合网| 精品五月花| 只有精品视频在线观看| 婷婷五月电影院| 艾小青av| 久草嫩草在线观看| 色色色色色网| 操逼三区| 久久久WWW| 玖玖婷婷视频| 婷婷激情五月天视频在线| 99视频这里有精品| 天天艹天天综合网| 激情五月天婷婷丁香| 激情久久丁香| 99热久草| 99爱爱| 超级碰碰91| 日韩有码一区| 激情五月天激情五月天| 日韩精品电影| 国产婷婷五月天| 婷婷五月天性爱视频| www.丁香黄色五月天人与| AV九九| 色五月涩涩婷婷蜜桃| 久操人妻| 五月丁香WWW| 久久九九网| 婷婷五月激情四月综合| 国产乱子轮XXX农村| 色婷婷色五月另类综合| 日本不卡高字幕在线2019 | 色噜噜婷婷| 97色在线视频| 亚洲XX日本| 婷婷色五月91啪啪| 五月婷婷五月天| 狠狠爱夜夜| 国产毛片精品一区二区色欲黄A片| 伊人9草在线观看| 久久精品人妻| 婷婷激情伍月网| 五月丁香六月婷| 色黑鬼导航| 老师的粉嫩小又紧水又多A片视频| 欧美韩日AAA网站| 色和综合网| 思思久久精品| 爱之国产色情综合| 91传媒无码人妻精| 五月丁香激情啪啪| 激情图片婷婷丁香五月| 色婷婷4| 一本久久婷婷| 亚洲AV免费在线| 欧美日韩AAAAA| 深夜婷婷 丁香| 婷婷五月天播播| 亭亭色色五月天| 大地9中文在线观看免费高清| 天天谢天天操| 好好干Av| 丁香五月天激情四射网| 婷婷伊人| 伊人超碰| 五月色天情| 久久女人天堂| 黄色AAAAAAA| 日韩AV大全| 色婷婷在线视频综合| 香蕉大综综综合久久| 色婷婷五月天在线观看| 欧美大道不卡| 五月色综合网| 久久九精品| 久久狼人天堂| 婷婷五月丁香A∨| 婷婷五月天av| 色欲一区二区三区精品A片| 色色网站免费观看| 久久久久久草黄色片AV在线观看| 91精品91久久久中77777久久玖玖九九| 色婷婷五月天| 五月开心久久| 色丁香久久| 婷婷五月天六月| 日日撸夜夜操| 91黄址| 天天碰夜夜爽| 婷婷五月天欧美图片在线播放电驴| 一本久道综合99| 亚洲日韩久久婷婷伊人| 色五月激情五月| 综合色五月天| 久久久大香蕉| 日本三久久| 亚洲va在线∨a天堂va欧美va| www.色窝| 天天添天天摸天天天天做| 色色激情网| 丁香五月天综合| 99热国产国产| 激情五月综亚网| 久久草大香蕉| 六月丁香婷婷色狠狠久久| 综合激情肏逼网| 182.t午在线观看| 日本猛少妇色XXXXX猛叫| 超碰色综合| 婷婷五月天播播| VfJxEwPH| 国产美女视频久| 九九热视频精品| 天天插天天| 97婷婷丁香五月| a69在线视频| 99热啪啪| 99热成人精品| 成人狠狠成人狠狠成人狠狠成人狠狠| 人人舔天天| 26uuu国产精品| 久久久久久久久久久久久久人妻视频| 综合狠狠干| 五月丁香综合久久| 精品亚洲VA网站| 五月婷婷成人网首页| 很很操96| 99热这里只有的精品视| 久激情| 亚洲国产色婷婷| 91人无码久久久久久| 日比视频91| 97碰 在线视频观看| 九九久久偷拍| 丁香六月婷婷久久高清| 丁香六月婷婷激情综合| 五月丁香激情六月| 六月丁香五月婷婷| 婷婷五月天成人| 中文成人在线| 超碰京东热av男人的天堂| www,超碰| 天天日天天插天天操| 五月丁香少妇A| 婷婷五月天在婷| 日韩黄色电影| 亚洲乱码日产精品BD| 99热免费精品| 综合一本道| 亚洲人妻一区二区| 久久人妻高清中文| a v色婷婷| 99惹在线精品免费观看| 九九精品这里只有| 天天艹夜夜爽| 激情色视频| 五月天婷a| 九九热99精品在线| 俺也去在线视频| 天天干天天叉| 99成人在线观看| 色五月天综合网| av性爱在线| 五月婷婷亞洲中文| 久久精品系列| 人人爱操| 久久精品一区二区三区四区| BlACKEDRAW视频一区二区| 在线看片h站| 大香蕉 婷婷| 超碰97在线观看免费| 北条麻妃伊人| 亚洲无码成人网| 一区二区乱码视频| 综合婷婷六月| 久久成人人妻| 久久99久久99精品免视看婷| 婷婷午夜| 不卡在线视频| 成人资源在线| 激情综合五月激情17| 精品网站99| 五月丁香婷婷人体| 91人操| 99操碰| 色婷婷视频| 精品少妇人妻AV无码专区偷人 | 五月丁香婷婷婷激情爱爱| 99爱爱网| 亚洲激情免费久久| 天天久| 五月天丁香久久| 狠狠综合| av婷婷丁香| 色婷婷超碰| 天天爽在线视频| 丁香五月婷婷成人色区| 天天舔天天摸| 国产亚洲成AV人片在线观黄桃| 亚洲av电影网站| 亚洲性视频| 97五月天婷婷午夜| 色色色综合网| 少妇性按摩无码中文A片| 最新国产AV| 久久婷婷丁香视频网| 99re最新地址视频| 九九这里有精品| 性色五月天| 激情综合网婷婷五夜| 丁香六月| 色婷婷九月综合| 97极品在线| 亚洲乱码日产精品BD| 青青久久大香蕉| 婷激情五月天视频导航| 丁香五月影院| 久综合4| 欧美日综合| 天天色综合网1| 色色五月丁香| 久久久久久久久久久月丁| 婷婷五月成年人| 五月天综合在线| 99热在线观看| 精品久色| 在线观看av网站| 久久久av久av久片一区二区| 91丨九色丨大屁股| 久久人妻视频| 任我干视频在线观看| 噜噜色天天开心| 亚洲色99| 天天爱天天天射AV| 在线VA视频| 天天综合色丁香| 婷婷五月激情欧美大胆视频| 色色色激情| 人人视频人人干人人做| 中文字幕操比影片| 九九热思思热| 婷婷伊人綜合中文字幕小说| 色色五月婷婷| 大香蕉综合在线| 日日噜噜久久婷婷五月天| 婷婷综合中文| 丁香五月综合激情久久潮喷| 99热18| 99伊人婷婷在线| 9999色色色色| 亚洲V国产V欧美V久久久久久| 成人亚洲精品| 成人永久免费视频在线观看| 精品综合爱| 中文字幕日韩无码制服诱或| 欧美在线| 色婷婷伦理| 九九热在线观看视频| 久久婷婷东京热| 五月停停激情网| 97干干干丁香| 99热精品一| 蜜桃人妻无码AV天堂三区| 婷婷五月天av| 色爱亚洲| 久久婷婷成人视频| 六月婷婷激情| 日本色婷婷久久99精品91| 色色色色网| 婷婷中文字幕| 五月丁香婷婷色| 亚洲中文丁香| 国产精品涩涩涩视频网站| 思思热久在线观看视频| 97色色婷婷| 99热18| 天天日夜夜高潮| 色丁香五月婷婷| 99色在线观看免费| 国产伦亲子伦亲子视频观看 | 婷婷五月天欧美| 七七久久综合| 五月婷婷综合网| 婷婷五月天丁香激情| 深爱激情五月网| 欧美激情 日韩无码 婷婷 五月天| 丁香婷婷在线| www.99精品视频| 色色婷婷丁香五月天| 99超级碰免费视频| 中海油常州环保涂料有限公司| 婷婷丁香五月天激情| 天天玩夜夜操天天爽| 激情综合五| 这里只有精品视频在线观看免费| 欧美人与性动交CCOO| 亭亭五月丁香综合欧美| 国色天香成人网| 五月婷婷黄色视频| 五月天基地| 九热精品| tingting五月天亚洲| 精品少妇人妻AV无码专区偷人| 99热视精品| 青青草原爱爱网| 丁香五月偷拍| 秋霞三级色戒| 九九精品丁香花| 中文av网| 青青草a在线| 五月婷婷电影院| www.天天日| www.五月婷婷久久.com| 色色欧美。| 综合五月婷婷| 五月婷婷综合激情| 日本婷婷色| 日欧大屏操| 色情综合| 色色色丁香| 丁香婷婷五月天激情四射| 久久五月天精品视频| 610018岁成人视频| 99热最新精品| m色激情网| 99久久精品国产色欲| 日日操夜夜撸| www.亚洲激情| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 国产毛片精品一区二区色欲黄A片| 九九黄色网| 亚洲亚洲人成综合网络| 26uuu丁香婷婷五月| 综合激情啪啪| 五月天婷婷激情在线色图| 99色免费观看全部| 五月激情六月综合| 五月天色综合服务平台| 九月激情综合| 天天色中文字幕女优AV| 五月婷婷婷婷| 九九视频在线| 婷婷成人综合五月| 婷婷丁香久久| 99日本视频| 国自产拍偷拍精品啪啪一区二区| 91色色色18| wwwC0maV五月花| 婷婷丁香成人| 婷五月天丁香婷五月| 九九热精品在线| 欧美啪啪9| 婷婷五月天成人基地| 五月婷婷性爱| 99九九中文字幕视频| 黄色片久久| 色色色色综合网| 日日夜夜狠狠操| 管管補管管紱| 五月激情丁香五月| 九九99热久久精品66中文字幕| 亚洲精品久久久久久久久久吃药 | 五月丁香啪啪啪啪| 大香蕉九九操| 999精品久久久久久久| 久久精品99国产精品日本 | 五月香婷婷| 激情综合网色播五月| 2050人人操免费工开爱| 99re99在线看| 国产色色小草视频| 碰99在线| 精品9197碰| 丁香五月天人体| 六月婷婷最新网址| 五月丁香另类网| 亚洲经典三级| 大战熟女丰满人妻AV| 狠狠干无码| 棕合影院色色| 九九性爱网| 99精品大片| 5月丁香六月婷婷| 99热6这里只有精品6| 97色婷婷| 五月婷婷六月丁香免费| 九九热超碰| 亚韩在线视频| 色色吧综合| 亚洲AV综合在线观看| 一月婷婷色色| 日韩影院三级| 99操逼| 国产精品久久..4399| 91九色大屁股| 五月婷婷六月丁香综合| 色婷婷成人| 婷婷色吧| 亚洲不卡| 丁香丁婷五月激情| 人妻性爱| 99只有这里是精品| 婷婷性爱综合| 99超碰人人| 另类国产区| 99热欧美偷拍| 色综合激情| 欧美日韩91| 91在线日| 激情无码五月天| 爱爱色五月天| 另类激情五月| 色五月激情婷婷| 丁香婷婷视频在线| 成人综合视频在线| 五月丁香六月情| 婷婷五月婷婷| 超PEN精品在线| 91av成人| 一起草av| 人妻丰满精品一区二区A片| 青草视频在线观看视频 | 精品夜夜澡人妻无码AV| 99热xx| 亚洲精品444久久久久久| 九九超碰人人| 99自拍视频| 婷婷狠狠久久| 综合五月网| AV成人在线播放| 五月天婷婷久久| 婷婷亚洲综合| 国产探花一片区| 深爱五月激情| 婷婷婷婷婷婷婷婷婷婷丁香| 九伊人网| 狠狠干天天内射| 婷婷五月激情欧美大胆视频| 色五月婷婷91| 国产XXXX搡XXXXX搡麻豆| 国产高清av黄色看片| 久热精彩视频98| 五月婷婷久久大香蕉| VA五月激情在线| 丁香五月婷婷综合网| 婷婷刺激综合| 全部老头和老太XXXXX| 狠狠 久久| 9999久久久久| 99国产这里只有精品| 99熟女视频| 成 人片 黄 色 大 片| 91综合视频在线| 性一交一乱一交A片久久四色| er99免费视频在线| 中文字幕av在线| 精品夜夜澡人妻无码AV| 久久人人九| 亚洲精品无码A片一区二区| 精品国产a| 中文字幕成人| 婷婷噜噜| 极品少妇高潮啪啪AV无码| 色婷婷香蕉丁丁网| 丁香五月婷婷丫| 狠狠操天天干| 五月开心播播网| 97婷婷狠狠| 久久五月婷婷开心网| 99九无网码| 伊人久久丁香五月91| 欧美日韩99| 色五月在线观看| 538在线精品| 色色色色区| 草婷婷在线| 欧美婷婷五月丁香| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 天天插天天插天天插天天插| 182TV大香蕉| 亚洲色婷婷五月| 六月丁香啪啪| 婷婷中文无码| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 狠狠干夜夜干| 成人av在线电影| 五月丁香婷婷激情视频| 亚洲成av人影院| 超碰成人免费| 丁香五月色网| 青青草99热久久精品国| 99爱免费视频| 少妇真实被内射视频三四区| 婷婷综合欧美| 国产熟女一区二区三区五月婷| 亚洲一区二区 成人网站戴套| 五月丁香激情婷婷综合字幕| 五月丁香大相交| 91日综合欧美| 五月婷婷激情综合视频| 欧美三级巜人妻互换| 日韩免费乱轮网站| www.婷婷五月| 九九碰九九爱97超| 99热碰碰热| 97久操视频| 五月婷六月| 国产真实乱对白精彩| 天堂婷婷五月在线| 丁香六月激情综合| 开心六月丁香五月婷婷| 日本丁香五月| 综合激情啪啪| 五月丁香综合激情| 五月婷婷六月激情在线| 在线只有精品| 天天色综合色色色色色。| 九月婷婷综合| 五月婷视频久久| 色婷婷久久综合中文久久一本| 激情视频网址| 天天色情站| 亚洲人妻av| 亚洲综合在线播放| 久久99精品九九久久久婷婷| 久久五月天婷婷| 色五月婷婷丁香五月| 丁香五月亚洲激情婷婷射| 直接看的av| 五月天婷婷基地丁香| 99在线精品视频| 五月婷婷xxx| 嫩草AV久久伊人妇女超级A| 日撸夜撸日操| 久久精品91视频| 亚洲色五月天| 天堂草在线观| 五月综合激情| 国产FREESEXVIDEOS性中国| 日夜夜久久| 天天综合五月天| 99色视频在线| 久热精品视频| 五月婷婷熟女| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 小色小蛇伊人婷婷色香五月| 99热8| 激情婷婷五月天在线观看| 97香蕉人人在线观看| 久久草大香蕉| 丁香五月在线观看完整版| 婷婷六月综合基地| 国产成人网| 96精品久久久久久久久| 97人人草| 五月天婷婷久久| 99色色热| 91xxxx九色| 亚洲操逼网| 深情五月天| 丁香久久| 丁香五月婷婷激情完整版| 色色色色热| 草逼大片| 婷婷五月丁香影院| 激情伊人网| 99国产精品白浆在线观看免费| WWW.婷婷| 丁香六月视频| 久操大| 久综合4| 五月丁香婷婷啪啪| 五月婷在线视频免费看| 六月丁香啪| 久色五月天| 狠狠色噜噜狠| 五月婷婷啪啪| 欧美色色色色色色| 五月丁香六月婷婷婷婷| 九九九精品视频免费观看| 丁香五月激情欧美| 国产美女无遮挡裸体毛片A片| 香蕉视频91| 1区2区视频| 日韩AV中文在线观看| 九九热99热| 婷婷久久综合| 少妇人妻综合色6699| 五月天·www·com| 亚洲不卡| 久久精品综合色| 超碰97在线观看免费| 操一区| 五月天激情影院| 丁香六月婷婷综合缴| 色丁香婷婷美女视频网站| 天天爽夜夜爽夜夜爽精品| 久久激情五月网| 婷婷情色五月| 亚洲免费综合一区| 精品亚洲国产成人A片在线鸭王| 色欲操| 亚洲啪啪啪啪| 26uuu丁香婷婷五月| 丁香六月欧美| 婷婷六月成人| 97久久综合网| 一二线视频 另类| 婷婷六月天| 狠狠色成人影片| 久/久精品99看9| 99在线资源| h亚洲| 婷婷五月天天天| 综合五月天完整| 激情综合色五月丁香六月亚洲| 天天干天天日天天插| 日日噜狠狠色综| 天天情天天狠天天透| 色色色色色色色色五月先| 99视频久久久| 久操干| 操日视频| 97久久精品| 婷色五月天| 激情综合五| 人妻久久久久久久| 五月激情站| 天天玩夜夜操| 九九久久精品| 丰满少妇猛烈A片免费看观看| 亚洲V国产V欧美V久久久久久| 婷婷五月天基地| 欧美成人精品三区综合A片| 精品一二三区久久AAA片| 成人做爰A片免费看视频| 国产精品久久久久久亚洲毛片| 日本精品久久久久中文字幕| 国产伦亲子伦亲子视频观看| 香蕉网婷婷| 久久99草五月婷婷| 9久久精品视频| 色噜噜97视频在线观看| 大香蕉五月天| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 婷婷97碰碰| 色五月综合网| 激情网五月天| 色青青电影色五月| 99热99思午夜精品| 婷婷六月天天| 99热永久在线观看| 青青草深爱激情网| 五月天婷婷人妻| 欧美影院| 天天操天天干天天日| 青青草国产亚洲精品久久| 青青草大香| 午夜色丁香| 九九99九九99偷拍视频免费看| 青草网在线观看| 99丁香五月| 婷婷色偷拍| 青草青草久热这里只有精品| 五月色情网| www.henhengan| 色综合久久88色综合天天99| 婷婷久久综合久| 日本韩国视频在线观看社区免费的9| 五月天色色色色色| 婷婷色婷婷| 激情婷婷另类| 五月婷婷|欧美| 亚洲激情av| 香港九九六区八区99| 国产91九色| 综合五月丁香久久| 色五月激情婷婷| 婷婷永久在线| 日本不卡高字幕在线2019| 丁香六月青青草| 中文网AV| 久久精品99久久| 密黄站| 午夜激情五月天| 啪啪91| 亚洲黄色操逼| 日本99视频| 91色色色| 黄色网址五月婷婷| 疯狂做受XXXX高潮A片| 丁香五月婷婷激情蜜桃| 久9热| WWW嗯嗯啊啊啊啊| 91精品国产99久久久久久天美| 一个色的综合| 嫩草AV久久伊人妇女超级a| 超碰九色| 婷婷激情丁五月| 亚州操操| 狠狠爱深色婷婷综合| 91热视频色网站| 一本道综合网| 97香蕉久久超级碰碰高清版 | 天天操无码| 丁香婷婷激情网站| 国在线激情网| 久久婷婷丁香五月宗合| 精品久久婷婷五月天| www.minyis.com【JT】实力收量可预付QQ2101460746 | 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 超碰在线免费| 天天色凹凸| 激情小说五月丁香在线视频观看视频| 久久久精品人妻| 婷婷色色综合| 五月色婷婷在线观看| 伊人玖玖婷婷| 亚洲啪啪自拍| 婷婷激情鹿城五月天| 在线不卡视频| 在线看黄色| av性爱在线| 成AV人片一区二区三区久久| 久久新地址| 无码色色色| 色色色色色色色五月| 99er6| site:xmssd.com| 亚洲成人中心| 69人人操人人爽| 五月天激情日色在线| 99自拍视频在线观看| 97丁香婷婷| 天天日夜夜| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 婷婷视频在线碰| 婷久看人爽| 国产激情综合五月久久| 成年人夜夜喷水| 日本丁香五月| 99ri国产精品| www.成人婷婷综合| 综合久久五| 人妻久久久久久久久妻久久久久| 九九热免费视频| 99视频精品全部免费看| 91九色国产| 五月丁香综合激情网| 亚洲男女激情| 婷婷色一二三区波多野结衣| 天天色综合网1| 婷婷色色欧美综合网| 亚洲十月婷婷综合| 少妇人妻偷人精品无码视频新浪| 九九视频这里只有精品在线播放| 婷婷亚洲综合| 五月婷婷丁香深深爱| 五月天婷婷在线播放免费| 日本久久激情| 日本熟女内射| 九九久99免费视频| 色亚洲欧洲| 婷婷自拍| 婷婷97碰碰| 久久婷婷啪啪视频| 久久草大香蕉| 免费看欧美成人A片无码| 99成人网站| 国产成人精品一区二区三区视频| 狠狠操天天操天天操| 最新高清无码专区| WWW.开心五月天.COM| 超碰2021| 五月婷婷激情综合网| 大香蕉欧美在线| 一起草Av| 婷婷久久欧美| 97在线观看| 久久激情五月天| 婷婷性爱视频在线| 久久久久久久97| 国产片天天爽夜夜爽| 日本欧美成人片AAAA| 深爱激情久久| 久久久人人操A V| 国产精品日日躁夜夜躁| 99热伊人| 免费视频在线观看的网站| 凹凸操Av| 久艹大香蕉| 五月丁香六月天| 颜射 精品性爱av| 超级碰碰一区| 亚洲婷婷丁香| 九九精品片一| 五月婷婷先锋| 丁香五月六月综合激情| 大香蕉久久伊人婷婷五月丁香| CHINESE熟女老女人HD视频| 婷婷丁香综合成人| 2017人人操| 五月婷久久| 五月婷婷激情综合视频| 在线观看亚洲视频影院| 久久99网站| 欧美激情综合色丁香婷婷五月天| 精品女人九九九| wwwss在线观看| 综合久久六月| 97人人操人人干| 婷婷丁香综合网| 91久操| 国产69精品久久久久999小说| 可以看的AV网站| 婷婷五月综合激情| 久婷婷视平| 九九亚洲综合| 99热这里只有精品69| 婷婷爱五月| 激情久久久| AV性爱在线| 丁香五月自拍| 人妻五月天激情开心网| 五月天偷拍| 五月丁香婷婷激情视频| 丁香无月在线观看| 婷婷五月欧美AA片免费| 99综合视频| 久久婷婷综合五月趴| 丁香六月啪啪| 丁香六月欧美| 丁香五月影院| 日本色色网站| 五月婷婷精品视频| 色婷| 人人操婷婷| 色色色综合色| 九九热视频这里只有精品| 这里只有精品视频国产| 91嫩草久久| 99热在线观看| 五月丁香色色网| 欧美丁香五月| 五月婷婷六月丁香激情综合网| 大香蕉人在线65| 色网五月婷婷| 激情丁香五月天| 美女五月狠狠| 婷婷夜夜夜夜| 九九九精品视频免费观看| 青青草Avb在线| 香蕉AV777XXX色综合一区| 久久久18| 狠狠干综合| 99免费视频在线观看爱| 侠女刀之记忆电影在线看免费| 99日逼视频| 国产超碰av| 色爽干| 久综合网| 久热欧美| 六月婷婷色色色| 色婷婷社区| 丁香五月人妻熟女| 夜夜骑操AV| 久久性爱视频| 色五月婷婷综合在线| 色综合色色色色色色综合| 欧美顶级少妇做爰HD| 五月丁香免费看| 五月婷婷色影院| 999激情视频| 69精品人妻不卡视频| 182.t午在线观看| 亚洲欧洲中文日韩久久AV乱码| 色婷婷视频在线| 婷婷五月天激情综合| 人人摸人人澡人人| 丁香五月成人社区| 六月丁香社区| 久久久久人妻中文| 天天干天天操天天上| 情欲综合网| 夜夜躁狠狠 | 亚洲AV日韩无码| 五月婷婷丁香六月| 五月亭亭狠狠| 强伦轩人妻一区二区电影| 91wwmm导航| 丁香五月在线观看完整版| 夜夜夜叫天天天做| 婷婷五月天性| 色婷婷AV五月天| 色色日韩无码| 综合视频五月| 99热这里有精品24| 另类国产综合| 开心五月婷婷在线| 天天日天天做天天操| 五月天自拍视频| 色青五月天| Www.婷婷五月| 日日操天天| 99热免费看| 中文av网| 性生活视频98791| 色婷婷五月色| 九色视频91| 日韩啊啊啊| 激情综合五月婷婷| 中文成人在线| 超碰99热精品在线| 婷婷丁香婷婷97| 99热69| 九九99九九99偷拍视频免费看| 超碰chaompinm| 婷婷综合另类小说| 开心五月丁香综合久久| www.一起草av| 久久天堂精品| 影音先锋一区二区三区| 婷婷爱在线观看| 天堂婷婷五月色| 丁香婷在线| 亚洲无码99| 日本超碰在线| www久久久| 5月丁香综合图区| 六月婷婷操逼| 亚洲视频二区| 婷婷成人在线| 六月婷婷久久大全| 婷婷的色色五月天| 天天玩夜夜操| av操逼网| 丁香六月激情综合网| 色一情一乱一乱一区91| bbwcuckold精品熟妇| 九九热在这里只有精品| 色99在线观看| 欧美黄色AA片哗啦啦啦| 久久久国产精品黄毛片| 婷婷丁香五月天操逼| 99久在线观看| 色 丁香婷婷| WWW.婷婷| 99亚洲视频| 精品一区久热| 日韩啪| 九九久久99| 久久婷婷亚洲| 99碰碰| wwww.色婷婷| 色色丁香| ss视频xx91| 大香蕉综合| 婷婷五月天综合亚洲| 久久人人九| 五月天成人网婷婷| 常久最新免费的色吊丝| 天天日人人| 久热这里只有精品6| 国产无套精品一区二区| 色色五月婷婷狠狠| 97视频.干com| 俺去也在线官网| 婷婷久久五月丁香| 久久婷婷综合五月| 综合久久影院| 五月情涩综合婷婷| 亚洲成人在线播放| 丁香五月停停av| 五月天激情国产综合婷婷婷就去爱| 九九精品在线网| 99热最新| 色婷婷亚洲在线观看| 天天爽—爽| www.9797国产| 色五月 婷婷, 大香蕉| 大香蕉婷婷丁香天堂AV| 婷婷5月九九| 天天干天天插| 成人网丁香五月| 久久奄也去色色网站| 久久东京热婷婷五月| 就去色色五月丁香婷婷久久久| 狠狠大香婷婷爱| 天天日天天草| 少妇搡BBBB搡BBB搡毛茸茸| 色色激情网| 婷婷涩涩五月天| 无码激情AAAAA片-区区| 色色色色色色色色五月先| 99热这里只有精品18| 99热综合| 啊V视频在线观看| 色婷婷综合视频| αv中文字幕在线观| 婷婷五月天在线看| 婷婷六月综合基地| 大香蕉视频99| 婷婷丁香五另类网站| 色五月婷婷亚洲| 欧美色图天堂网色| 久机视频这只有精品| se色婷婷视频| 无码网| 久草五月天| 啪啪婷婷五月天激情| 99热6这里只有精品| 极骚大香蕉伊人| 日日色五月天| 婷婷成人视频| 大香蕉久艹| 97色啪| 亚洲av网址| 伊人久久五月天综合| 淫五月停停| 丁香婷五月天| www.yw尤物| 天天五月香欧美| 99婷婷| 成人在线视频网| 五月丁香啪啪婷婷| 色情婷| 天堂综合久久 | 日本在线观看aaa 99| 五月综合婷婷久久在线| 欧美成人AAA片一区国产精品| 欧美槡BBBB槡BBB少妇| 99综合色色色| 激情图片五月天| 超碰人人操人人干| 嫩草视频在线观看| 99色热视频| 日本久热| 99日本黄站| 亚洲精品视频在线播放| 人妻AV在线观看| 色婷婷综合久久久久| 天天综合网91| 色爱综合网| 欧美性爱五月天| 婷婷五月激情五月激情| 久久丝丝热| 天天综合网站| 欧美日韩AAAAA| 最近中文字幕在线中文视频| 日本激情ⅩXX免费视频| 久久五月婷| 五月激情丁香五月宗合| 校花娇喘呻吟校长陈若雪视频| xxx综合在线| 欧美天堂婷婷日韩| 五月丁香六月婷婷亚洲综合| 69精品无码一区二区三区| 丁香婷婷月| 婷婷激情六月综合| 色五月综合| 激情五月第四色| 人妻丰满精品一区二区A片| 丁香色播五月天| 97午夜一区二区| 99热网站| 国产脫衣舞一区二区三区| 五月天婷婷基地| 日日干日日色| 在线成人va| 五月天婷婷影院影院观看| 精品人妻在线| 狠狠操狠狠爱| 2020久久婷婷五月| 日本综合99| 夜夜操狠狠操| 婷婷五月综合在线| 少妇熟女视频一区二区三区| 爱婷婷久久视频| 五月天婷婷亚洲| 九色视频91| caobi四区| a级毛片一区二区免费视频| 天天操综合网| www.日本久久videos| 亚洲精品国产A久久久久久| 可以免费看AV网站| 亚洲情色一区| 99这里有精品视频| 99热这里只有精品18| 丁香六月婷婷综合欧美| 综合网色| 天天色,天天日,天天做| 九九精品综合| 亚洲中文字幕在线观看| 可似看的AV| 成人片在线播放| 操操操B| 丁香五月天社区| 婷婷丁香77777| 中文字幕人妻AV| 99久久99九九99九九九| 激情综合婷婷| 狠狠色丁香婷婷久久综合| 91狠狠综合久久久| 丁香五月综合在线观看| 91人妻人人做人碰人人爽九色| 日本不卡一区二区三区| 99视频这里有精品| 玖玖伦理电影| 人妻中文字幕网| 人妻丰满精品一区二区A片| 特级西西4444www无码| 婷婷免费精品视频|