[2025CVPR-小目標檢測方向]基于特征信息驅動位置高斯分布估計微小目標檢測模型

核心問題

  • ?小目標檢測性能差:?? 盡管通用目標檢測器(如 Faster R-CNN, YOLO, SSD)在常規目標上表現出色,但在檢測微小目標(如 AI-TOD 基準定義的:非常小目標 2-8 像素,小目標 8-16 像素,較小目標 16-32 像素)時性能急劇下降。
  • ?根本原因:?? 微小目標極其有限的像素導致其特征表示非常微弱且缺乏區分度。深度神經網絡的下采樣過程導致信息丟失,這對微小目標尤其致命,使它們在特征圖上幾乎與背景無法區分(如圖 1(b) 所示)。
  • ?現有方法的不足:?? 現有的解決方案(如尺度感知特征融合、注意力機制、模仿學習)部分緩解了問題,但未能有效解決由極度有限像素引起的弱表示問題。注意力機制尤其容易受到微小目標稀疏像素的影響,導致注意力圖不可靠。

解決方案:FIP-GDE 框架

論文提出了一種名為 ?Feature ?Information driven ?Position ?Gaussian ?Distribution ?Estimation (FIP-GDE) 的即插即用架構,旨在增強因信息丟失而變得微弱和難以區分的區域(即微小目標)。核心思想是從像素級信息量的角度出發來識別需要增強的區域。

  1. ?像素特征信息建模 (Pixels Feature Information Modeling - PFIM)??

    • ?目標:?? 無監督地識別圖像中信息量豐富的區域(通常是顯著目標,包括微小目標)。
    • ?原理:?? 基于信息論(香農熵)。信息量?I(x) = -log?p(x),信息量大的區域(顯著目標)出現概率?p(x)?小,信息量小(平滑背景)出現概率大。
    • ?方法:??
      • 對底層特征圖?P?(記為?y)進行量化(添加均勻噪聲模擬訓練)。
      • 使用 CNN 參數估計模塊預測每個像素元素的均值圖?μ?和尺度圖?σ(代表其高斯分布的參數)。
      • ?關鍵創新:?? 最小化信息熵損失 (Information Entropy Loss -?L_IE)?。該損失是量化特征???的整體編碼成本(比特數)的反映:L_IE = Σ? -log? p??(??|μ?, σ?)
      • ?優化過程的作用:?? 最小化?L_IE?促使網絡學習?y?的分布模型,使其能高效壓縮特征。在此過程中,信息量大的區域(如目標)需要更多的編碼比特(成本高),而背景區域需要的比特少(成本低)。
    • ?輸出 - 信息圖 (Information Map?σ):??
      • 預測的尺度圖?σ?被發現與信息量圖(每個像素的編碼成本)高度正相關,且視覺上更顯著(如圖 3(b) 所示)。
      • σ?值大的區域對應信息量大、需要增強的顯著區域(目標)。
      • 使用?σ?初步增強?P?y? = y ? (1 + Mean(σ))Mean?為通道維度平均)。

?

?2.位置高斯分布預測 (Position Gaussian Distribution Prediction - PGDP)??

  • ?目標:?? 提供監督信號,使信息圖?σ?和增強過程更關注微小目標。微小目標需要在分布圖中獲得比普通目標更高的強度值
  • ?核心組件 - 位置高斯分布圖 (Position Gaussian Distribution Map?M_GT):??
    • 使用高斯混合模型 (Gaussian Mixture Model)?? 建模。每個目標實例對應一個高斯分量。
    • ?關鍵創新 (縮放因子?α?):?? 高斯分量的協方差矩陣?Σ?^box?根據目標框的大小動態調整:Σ?^box = diag((w?/α?)2, (h?/α?)2)
    • α??取值:非常小目標 (vt) = 4, 小目標 (t) = 6, 較小目標 (s) = 8, 普通目標 = 10。這導致微小目標的協方差更小,在分布圖中峰值更高?(如圖 4 所示)。
    • 最終?M_GT?通過組合所有高斯分量、乘以實例數?N?并應用閾值處理來增強前景背景對比度獲得。
  • ?預測模塊:??
    • 使用多尺度特征?P?, P?, P??來預測?M_GT
    • ?關鍵設計:?? 將信息圖?σ??作為先驗知識引導預測。輸入為?[P? + (1/4)σ, P? + (1/2)σ, P? + σ]?(1/4,?1/2?表示下采樣)。
    • 網絡結構包含卷積、反卷積和跨層連接(如圖 2 所示),輸出三個尺度的預測圖?M_pd?, M_pd?, M_pd?
    • 使用加權均方誤差損失 (L_pred) 進行深度監督,對目標區域(值 > 閾值?th)賦予更高權重(10 vs 背景的 0.1)。
  • ?協同作用:???σ?指導?M_pd?的預測;反過來,優化?L_pred?也有助于生成能更好識別微小目標信息豐富區域的?σ
  • ?增強:?? 使用預測的?M_pd??增強?P?y? = y ? (1 + M_pd?)

?

  1. ?特征融合與最終輸出?

    • 將兩個增強特征?y??(由?σ?增強) 和?y??(由?M_pd??增強) 分別送入 ?CBAM (Convolutional Block Attention Module)?? 模塊進行進一步的空間和通道注意力優化。
    • 將兩個經過注意力優化的特征圖按元素相加 (Element-wise Addition)?? 融合,得到最終的增強特征圖?P?'
    • P?'?替換原始 FPN 中的?P?,送入檢測頭執行檢測任務。
  2. ?損失函數?
    總損失函數結合了檢測損失、信息熵損失和分布圖預測損失:
    L = L_det + λ?L_IE + λ?L_pred?(λ?=0.01,?λ?=1.0

實驗結果

  • ?數據集:?? 在三個公開的小目標檢測數據集上進行了廣泛實驗:VisDrone2019, AI-TOD, AI-TODv2。

  • ?評估指標:?? 遵循 AI-TOD 基準,包括 AP, AP?.?, AP?.??, APvt?(非常小目標), APt?(小目標), APs?(較小目標)。

  • ?主要發現:??

    • ?顯著提升:?? 作為即插即用模塊集成到多種主流檢測器(Faster R-CNN, Cascade R-CNN, DetectoRS, RFLA)中,均帶來了顯著性能提升,尤其在檢測微小目標(APvt, APt)上提升最大(例如,在 VisDrone 上 Faster R-CNN 的 APt?提升 5.8 點)。
    • ?SOTA 性能:?? 當與 RFLA 結合時,在 VisDrone2019 上取得了所有指標的最佳性能(AP=29.0, APvt=7.4)。在 AI-TOD 和 AI-TODv2 上,與 DetectoRS 結合也獲得了極具競爭力的結果(通常是最好或次好)。
    • ?超越現有方法:?? 性能優于近期專門針對小目標檢測的方法(如 NWD-RKA, RFLA, SR-TOD, Salience DETR),證明了提出方法的優越性。特別指出 SR-TOD 的差異圖依賴圖像復原質量且會損失信息,而 FIP-GDE 直接在特征圖層面識別信息損失區域。
  • ?消融研究 (Ablation Study):??

    • ?模塊有效性:?? PFIM 和 PGDP 模塊均獨立有效,結合使用效果最佳。
    • ?分布圖建模:?? 提出的基于目標大小動態調整?α??的高斯建模方法優于固定縮放因子、二值掩碼或自注意力生成權重圖。
    • ?先驗引導:?? 將?σ?通過?P? + (scale)σ?的方式添加到輸入進行引導效果最佳。
    • ?融合策略:?? 元素相加融合?y??和?y??效果優于元素相乘或拼接。
  • ?分析:??

    • ?信息圖有效性:?? 可視化(圖 5, 圖 6(a))和信息熵損失分析(比特每像素 bpp 與場景密集度正相關,如圖 7 所示)證明了 PFIM 能有效捕獲信息量大的顯著區域和目標的空間結構。

    • ?分布圖有效性:?? 可視化(圖 6(b))表明預測的分布圖?M_pd??能清晰區分前景背景,并賦予微小目標更高強度。最終增強特征?P?'(圖 6(c))中的目標更顯著,檢測結果(圖 6(f))也證明了能檢測出更多困難的微小目標。

?

主要貢獻

  1. 首次從像素級信息量的角度提出增強微小目標弱特征表示的方法,通過最小化信息熵損失無監督地生成注意力信息圖?σ
  2. 引入由高斯混合模型建模的位置高斯分布圖??M_GT,并創新性地根據目標大小動態調整高斯分量協方差,使微小目標獲得更高強度。
  3. 構建了以信息圖為先驗指導的多尺度分布圖預測模塊,協同調制信息圖和分布圖聚焦于微小目標。
  4. 提出的 FIP-GDE 框架是即插即用的,可靈活集成到類似 FPN 的檢測器中,在三個公開數據集上的大量實驗證明了其有效性和優越性,超越了當前最先進的方法。

核心代碼實現

1. 像素特征信息建模模塊(PFIM)

?

import torch
import torch.nn as nn
import torch.nn.functional as Fclass PFIM(nn.Module):def __init__(self, in_channels):super().__init__()# 參數估計網絡:預測高斯分布的μ和σself.param_net = nn.Sequential(nn.Conv2d(in_channels, 64, 3, padding=1),nn.ReLU(),nn.Conv2d(64, in_channels * 2, 3, padding=1)  # 輸出μ和σ)def forward(self, y):"""y: 輸入特征圖 [B, C, H, W]返回: 信息熵損失, 增強特征y1, 信息圖σ"""# 1. 參數估計params = self.param_net(y)  # [B, 2*C, H, W]mu, sigma = torch.split(params, params.size(1)//2, dim=1)sigma = torch.exp(sigma)  # 確保正值# 2. 量化處理(添加均勻噪聲)if self.training:y_hat = y + torch.rand_like(y) - 0.5  # U(-0.5, 0.5)else:y_hat = torch.round(y)  # 推理時直接取整# 3. 計算似然概率(公式5)upper = (y_hat + 0.5 - mu) / sigmalower = (y_hat - 0.5 - mu) / sigmap_yhat = self.std_normal_cdf(upper) - self.std_normal_cdf(lower)# 4. 計算信息熵損失(公式7)p_yhat = torch.clamp(p_yhat, min=1e-10)  # 避免log(0)loss_IE = -torch.log2(p_yhat).sum()# 5. 生成信息圖(通道平均)info_map = sigma.mean(dim=1, keepdim=True)  # [B, 1, H, W]# 6. 特征初步增強(公式8)y1 = y * (1 + info_map)return loss_IE, y1, info_mapdef std_normal_cdf(self, x):"""標準正態分布累積函數近似"""return 0.5 * (1 + torch.erf(x / torch.sqrt(torch.tensor(2.0))))
2. 位置高斯分布預測模塊(PGDP)
class PGDP(nn.Module):def __init__(self, in_channels):super().__init__()# 多尺度融合網絡(P2-P4)self.conv_p2 = nn.Conv2d(in_channels, 64, 3, padding=1)self.conv_p3 = nn.Conv2d(in_channels, 64, 3, padding=1)self.conv_p4 = nn.Conv2d(in_channels, 64, 3, padding=1)# 上采樣和融合層self.upsample = nn.ModuleList([nn.ConvTranspose2d(64, 64, 4, stride=2, padding=1),nn.ConvTranspose2d(64, 64, 4, stride=2, padding=1)])# 預測頭self.pred_head = nn.Sequential(nn.Conv2d(64 * 3, 64, 3, padding=1),nn.ReLU(),nn.Conv2d(64, 1, 1)  # 輸出單通道分布圖)def forward(self, p2, p3, p4, info_map):"""輸入: p2, p3, p4 - 多尺度特征圖 [B, C, H, W]info_map - 信息圖 [B, 1, H, W]返回: 預測分布圖M_pd2, 增強特征y2"""# 1. 信息圖下采樣適配各尺度info_p4 = F.interpolate(info_map, size=p4.shape[2:]) * 0.25info_p3 = F.interpolate(info_map, size=p3.shape[2:]) * 0.5# 2. 特征與信息圖融合p4_in = self.conv_p4(p4 + info_p4)p3_in = self.conv_p3(p3 + info_p3)p2_in = self.conv_p2(p2 + info_map)# 3. 上采樣和特征融合p4_up = self.upsample[0](p4_in)  # P4->P3尺寸p3_fused = p3_in + p4_upp3_up = self.upsample[1](p3_fused)  # P3->P2尺寸p2_fused = torch.cat([p2_in, p3_up, p3_up], dim=1)# 4. 預測最終分布圖M_pd2 = torch.sigmoid(self.pred_head(p2_fused))# 5. 特征增強y2 = p2 * (1 + M_pd2)return M_pd2, y2
3. 特征增強與融合模塊
class FeatureEnhancer(nn.Module):def __init__(self, in_channels):super().__init__()# CBAM注意力模塊(簡化實現)self.channel_att = nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Conv2d(in_channels, in_channels//8, 1),nn.ReLU(),nn.Conv2d(in_channels//8, in_channels, 1),nn.Sigmoid())self.spatial_att = nn.Sequential(nn.Conv2d(2, 1, 7, padding=3),nn.Sigmoid())def forward(self, y1, y2):"""輸入: PFIM增強特征y1, PGDP增強特征y2返回: 融合后的增強特征P2'"""# 1. 分別應用CBAM注意力y1_att = self.cbam(y1)y2_att = self.cbam(y2)# 2. 特征融合(元素相加)y_fused = y1_att + y2_attreturn y_fuseddef cbam(self, x):"""簡化版CBAM"""# 通道注意力channel_att = self.channel_att(x)x_channel = x * channel_att# 空間注意力avg_out = torch.mean(x_channel, dim=1, keepdim=True)max_out, _ = torch.max(x_channel, dim=1, keepdim=True)spatial_att = self.spatial_att(torch.cat([avg_out, max_out], dim=1))return x_channel * spatial_att
4. 整體框架集成
class FIPGDE(nn.Module):def __init__(self, backbone_channels):super().__init__()# 實例化核心模塊self.pfim = PFIM(backbone_channels)self.pgdp = PGDP(backbone_channels)self.enhancer = FeatureEnhancer(backbone_channels)# 損失權重self.lambda1 = 0.01self.lambda2 = 1.0def forward(self, p2, p3, p4, gt_bboxes=None):"""輸入: p2, p3, p4 - FPN特征圖gt_bboxes - 訓練時提供GT框用于生成M_GT返回: 增強后的P2'特征, 總損失"""# 1. PFIM模塊loss_IE, y1, info_map = self.pfim(p2)# 2. PGDP模塊M_pd2, y2 = self.pgdp(p2, p3, p4, info_map)# 3. 計算PGDP損失(訓練時)loss_pred = 0if gt_bboxes is not None:M_GT = self.generate_M_GT(gt_bboxes, p2.shape)# 加權MSE損失(公式13)mask = (M_GT > self.threshold).float()weights = mask * 10 + (1 - mask) * 0.1loss_pred = F.mse_loss(M_pd2, M_GT, reduction='none')loss_pred = (loss_pred * weights).mean()# 4. 特征增強與融合p2_prime = self.enhancer(y1, y2)# 5. 總損失total_loss = loss_IE * self.lambda1 + loss_pred * self.lambda2return p2_prime, total_lossdef generate_M_GT(self, gt_bboxes, feat_shape):"""生成位置高斯分布圖(公式9-12)gt_bboxes: [N, 5] (batch_idx, x1, y1, x2, y2)feat_shape: [B, C, H, W]"""# 初始化M_GT為零矩陣B, _, H, W = feat_shapeM_GT = torch.zeros(B, 1, H, W, device=gt_bboxes.device)# 遍歷所有GT框for box in gt_bboxes:b, x1, y1, x2, y2 = boxb = int(b)# 計算中心點(映射到特征圖坐標)cx = ((x1 + x2) / 2) / 4  # P2尺寸是原圖1/4cy = ((y1 + y2) / 2) / 4w = (x2 - x1) / 4h = (y2 - y1) / 4# 確定縮放因子α(基于目標大小)area = w * hif area < 8:    alpha = 4   # very tinyelif area < 16: alpha = 6   # tinyelif area < 32: alpha = 8   # smallelse:           alpha = 10  # general# 生成高斯分布(公式10)x_grid, y_grid = torch.meshgrid(torch.arange(W, device=M_GT.device), torch.arange(H, device=M_GT.device))gaussian = torch.exp(-(((x_grid - cx) / (w/alpha))?**2 + ((y_grid - cy) / (h/alpha))?**2))# 累加到M_GT(公式11)M_GT[b, 0] += gaussian# 后處理(公式12)M_GT *= len(gt_bboxes) / (B * len(gt_bboxes))  # 平均化threshold = M_GT.mean()M_GT = ((M_GT > threshold).float() * 0.5 + M_GT)return M_GT

論文地址:https://openaccess.thecvf.com/content/CVPR2025/papers/Bian_Feature_Information_Driven_Position_Gaussian_Distribution_Estimation_for_Tiny_Object_CVPR_2025_paper.pdf???????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89945.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89945.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

三大工廠設計模式

1.簡單工廠模式1.1需求入手從需求進行入手&#xff0c;可以更深入的理解什么是設計模式。有一個制作披薩的需求&#xff1a;需要便于擴展披薩的種類&#xff0c;便于維護。1.披薩的種類有很多&#xff1a;GreekPizz&#xff0c;CheesePizz等2.披薩的制作流程&#xff1a;prepar…

SpringBoot--Mapper XML 和 Mapper 接口在不同包

&#x1f9e9; 背景說明在 Spring Boot 中&#xff0c;MyBatis 默認要求 Mapper 接口和 XML 文件位于相同包路徑。 但在實際項目中&#xff0c;為了模塊化或結構清晰&#xff0c;常將 XML 放在 resources/mybatis/... 下&#xff0c;這種做法就必須進行額外配置。&#x1f4c1;…

公交車客流人數統計管理解決方案:智能化技術與高效運營實踐

1. 引言公交車作為城市公共交通的核心組成部分&#xff0c;其客流數據的精準統計與管理直接影響運營效率、調度優化和乘客體驗。傳統的人工統計方式效率低、誤差大&#xff0c;難以滿足現代智慧交通的需求。隨著人工智能&#xff08;AI&#xff09;、物聯網&#xff08;IoT&…

正則表達式完全指南:從入門到實戰

目錄 一、什么是正則表達式&#xff1f; 二、基礎語法速查表 三、進階特性 1.分組與捕獲 2.非捕獲分組 3.前瞻與后顧 4.貪婪與懶惰匹配 四、實戰案例 案例1&#xff1a;驗證手機號 案例2&#xff1a;提取網頁中所有鏈接 案例3&#xff1a;密碼強度驗證 一、什么是正…

SmartETL循環流程的設計與應用

1. 引言 **檢索增強生成&#xff08;RAG&#xff09;**是指通過檢索對大模型生成進行增強的技術&#xff0c;通過充分利用信息檢索&#xff08;尤其是語義檢索&#xff09;相關技術&#xff0c;實現大模型快速擴展最新知識、有效減少幻覺的能力。主流RAG框架包括問題理解、知識…

uni-app開發小程序,根據圖片提取主題色值

需求&#xff0c;在頁面根據傳入的圖片提取圖片主色值并用來設置區塊背景色<template><view class"icon-container"><view class"sport-icon" :style"{ backgroundColor: mainColor }"><image :src"/static/images/sp…

ESP32-Cam三腳架機器人:DIY你的智能移動監控平臺

項目概述 在物聯網與機器人技術融合發展的今天&#xff0c;基于ESP32的創意項目層出不窮。今天為大家介紹一款極具創新性的ESP32-Cam三腳架機器人&#xff08;Dodge&#xff09;&#xff0c;它將傳統三腳架結構與智能監控功能完美結合&#xff0c;通過巧妙的機械設計和開源硬件…

Kotlin集合過濾

過濾操作 在處理集合時&#xff0c;根據特定條件過濾集合或檢查集合中是否包含符合特定條件的元素是軟件開發中的常見任務。為了解決這個問題&#xff0c;我們可以使用 Kotlin 中實現的函數式 API。 在本主題中&#xff0c;我們將介紹如何使用謂詞過濾集合&#xff0c;并獲得滿…

14.8 LLaMA2-7B×Dolly-15K實戰:從準確率63%到89%,如何用優質數據讓大模型性能飆升42%?

LLaMA2-7BDolly-15K實戰:從準確率63%到89%,如何用優質數據讓大模型性能飆升42%? 在大模型微調中,“數據質量”往往比“數據數量”更能決定最終效果。Databricks發布的Dolly-15K數據集以“全人工標注+多維度校驗”的特點,成為指令微調的“黃金樣本”——用它微調后的LLaMA…

OpenCV中常用特征提取算法(SURF、ORB、SIFT和AKAZE)用法示例(C++和Python)

OpenCV 中提供了多種常用的特征提取算法&#xff0c;廣泛應用于圖像匹配、拼接、SLAM、物體識別等任務。以下是 OpenCV 中幾個主流特征提取算法的 用法總結與代碼示例&#xff0c;涵蓋 C 和 Python 兩個版本。常用特征提取算法列表算法特點是否需額外模塊SIFT&#xff08;尺度不…

復雜度+包裝類型+泛型

什么是集合框架什么是數據結構什么是算法時間復雜度與空間復雜度的概念時間復雜度的表達方式時間復雜度的大 O 的漸近表示法時間復雜度函數的大小排序包裝類和泛型基本數據類型和對應的包裝類型包裝類型出現的原因什么叫做裝箱&#xff08;裝包&#xff09;和拆箱&#xff08;拆…

硬件設計學習DAY15——自舉電容:MOSFET高端驅動的核心奧秘

每日更新教程&#xff0c;評論區答疑解惑&#xff0c;小白也能變大神&#xff01;" 目錄 一.自舉電容 1.自舉電容的作用 2.自舉電路原理 3.工作過程分析 4.實際應用中的問題 5.關鍵要點 二.自舉電容實現MOSFET高端驅動 2.1MOSFET半橋高端驅動的基本原理 2.2自舉電…

【SpringAI實戰】實現仿DeepSeek頁面對話機器人

一、實現效果 二、代碼實現 2.1 后端代碼 2.2 前端代碼 一、實現效果 可以保存聊天記錄與會話記錄 二、代碼實現 2.1 后端代碼 pom.xml <!-- 繼承Spring Boot父POM&#xff0c;提供默認依賴管理 --><parent><groupId>org.springframework.boot</grou…

RedisJSON 指令精講JSON.STRLEN 高效統計字符串長度

1 場景與價值 在日志累加、指標采集、消息追蹤等場景中&#xff0c;我們常需快速判斷某個字符串字段“到底有多長”&#xff0c;以便&#xff1a; 阻止過大日志&#xff1a;若長度超限則截斷或歸檔&#xff1b;動態分桶&#xff1a;按長度選擇不同存儲策略&#xff1b;性能監控…

大數據量查詢計算引發數據庫CPU告警問題復盤

大數據量查詢計算引發數據庫CPU告警問題復盤一、背景二、根因分析三、解決方案方案1&#xff1a;多線程緩存方案2&#xff1a;利用中間表緩存四、總結一、背景 2025年7月份某天&#xff0c;CDP系統每天不定時推送我們的Portal服務&#xff0c;生產環境運營看板會展示統計數據&…

2025最新版虛幻引擎5(UE5)C++入門教程:前言——你的隨身教程和學習筆記

大家好&#xff0c;我是開發游戲的老王&#xff0c;一名高校教師&#xff0c;我主講游戲開發已有十余年時間&#xff0c;通過我的博客大家應該可以了解我所涉獵的游戲技術范疇非常廣泛&#xff0c;除了Unreal,Unity,Godot等主流游戲引擎&#xff0c;還包括Blender、Houdini、3D…

(3)重定向 | 時間相關指令 | 文件查找 | 打包與壓縮

Ⅰ . 初始重定向01 輸出重定向 >在上一節中我們為了方便講解 head 和 tail 指令&#xff0c;我們用到了 > 去生成了一千行文本。通過 > 將生成的一千行文本寫入到了 large.txt 中……我們現在來正式介紹一下&#xff1a;$ echo "內容" > [目標] 本來應…

DTH11測量溫濕度學習(第十一天)

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;開發者-削好皮的Pineapple! &#x1f468;?&#x1f4bb; hello 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 削好皮的Pineapple! 原創 &#x1f468;?&#x1f4…

Go語言初識--標識符 可見性

Go語言初識–標識符 可見性 和C語言相似&#xff0c;go語言的基本組成有&#xff1a; 包聲明&#xff0c;編寫源文件時&#xff0c;必須在非注釋的第一行指明這個文件屬于哪個包&#xff0c;如package main。引入包&#xff0c;其實就是告訴Go 編譯器這個程序需要使用的包&…

Python實例之畫小豬佩奇

效果圖&#xff1a;python代碼以及解釋&#xff0c;沒有運用模塊。 """ 繪制小豬佩奇 """ from turtle import *def nose(x,y):"""畫鼻子"""penup()# 將海龜移動到指定的坐標goto(x,y)pendown()# 設置海龜的方向&…