【實戰精選】掌握圖像風格遷移:構建基于生成對抗網絡的系統

1.研究背景與意義

隨著計算機技術的不斷發展,圖像處理和計算機視覺領域取得了長足的進步。圖像風格遷移是其中一個備受關注的研究方向,它可以將一幅圖像的風格特征應用到另一幅圖像上,從而創造出新的圖像。這項技術具有廣泛的應用前景,如藝術創作、電影特效、虛擬現實等領域。

傳統的圖像風格遷移方法主要基于優化算法,通過最小化圖像的內容損失和風格損失來實現。然而,這些方法存在一些問題,如計算復雜度高、結果不穩定等。近年來,生成式對抗網絡(GANs)的出現為圖像風格遷移帶來了新的突破。

GANs是一種由生成器和判別器組成的神經網絡結構,通過博弈的方式訓練生成器生成逼真的圖像,同時判別器則試圖區分真實圖像和生成圖像。GANs的核心思想是通過生成器和判別器之間的對抗學習,不斷提升生成器的生成能力,從而生成更加逼真的圖像。

基于生成式對抗網絡的圖像風格遷移系統具有以下幾個方面的研究意義:

  1. 提高圖像風格遷移的效果:傳統的圖像風格遷移方法往往無法完全捕捉到圖像的風格特征,導致生成的圖像與目標風格之間存在差異。而基于GANs的方法可以通過對抗學習不斷優化生成器,從而生成更加逼真、細致的圖像,提高圖像風格遷移的效果。

  2. 提高圖像風格遷移的穩定性:傳統的圖像風格遷移方法在處理復雜的圖像時往往存在結果不穩定的問題,生成的圖像可能會出現失真、模糊等情況。而基于GANs的方法可以通過對抗學習的方式提高生成器的穩定性,生成更加清晰、真實的圖像。

  3. 拓展圖像風格遷移的應用領域:基于生成式對抗網絡的圖像風格遷移系統具有廣泛的應用前景。例如,在藝術創作領域,藝術家可以利用這一系統將不同風格的繪畫作品進行融合,創造出獨特的藝術作品。在電影特效領域,可以利用該系統將不同風格的特效圖像應用到電影中,增強視覺效果。在虛擬現實領域,可以利用該系統將真實世界的風格特征應用到虛擬場景中,提升虛擬現實的真實感。

總之,基于生成式對抗網絡的圖像風格遷移系統具有重要的研究意義和廣泛的應用前景。通過提高圖像風格遷移的效果和穩定性,可以為藝術創作、電影特效、虛擬現實等領域帶來更多可能性,推動圖像處理和計算機視覺技術的發展。

2.圖片演示

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.視頻演示

基于生成式對抗網絡的圖像風格遷移系統_嗶哩嗶哩_bilibili

4.生成式對抗網絡簡介

卷積神經網絡與循環神經網絡是目前較常見的兩類人工神經網絡算法,前者長于處理圖像信息,后者常用于處理序列信息。它們都需要大量的訓練樣本來保證訓練的質量,需要成千上萬張圖片來做訓練。但與脫胎于生物神經元模型的深度學習算法不同,成年人的學習過程卻并不需要海量的樣本和數據。因此,有學者開始嘗試發展小樣本學習的神經網絡算法,希望用少量的樣本就可以訓練出較為準確的網絡模型,生成式對抗網絡就是近年來發展較快的模型之一。

2014年,I.J.Goodfellow等人提出了一個深度學習算法的新框架,該模型借鑒了二人零和博弈的思想,通過對抗過程估計生成模型,即假設在游戲博弈過程中雙方都同時采取最優的方案并使用,使得游戲結果達到納什均衡的狀態。在該算法中,生成式模型G和判別式模型D一起進行訓練。其中,G負責學習樣本數據分布,D則估計樣本來自生成器G或訓練數據的概率。生成式模型需要盡量降低判別式模型對數據做出

正確判斷的概率,而判別式模型則要不斷識別出生成式模型生成的假數據,兩個模型間相互對抗,互相提高,最終使得生成式模型生成的數據與真實數據在數據分布上差別很小,而判別式模型最后則無法判斷該數據是來自真實的數據集還是由生成器G所生成。
GoodFellow提出的生成式對抗網絡,判別器網絡使用常規的訓練方法,訓練數據則包括小批量的真實樣本數據集和隨機噪聲z,真實的樣本被標記為1,生成器網絡輸入噪聲之后生成的假樣本標記為0。用G(z)表示新的數據集,判別式模型D則有兩個輸入,分別是表示真實數據的x和生成式模型G生成的數據,真實數據的分布則用Pilan(t)表示,判別式模型對數據進行判斷,輸出一個標量值。然后做反向傳播更新生成器網絡的參數,判別器網絡的參數不變,交替訓練,經過多次迭代,假樣本的數據分布相較于真實數據幾乎相同,即生成器網絡生成的假數據判別器已經無法正確出該數據的真偽,訓練過程如圖所示。
在這里插入圖片描述

5.核心代碼講解

5.1 cycleGAN.py
class ResidualBlock(nn.Layer):"""定義殘差塊"""def __init__(self, in_channels):super(ResidualBlock, self).__init__()self.conv1 = nn.Conv2D(in_channels, in_channels, kernel_size=3, stride=1, padding=1)self.bn1 = nn.BatchNorm2D(in_channels)self.prelu = nn.PReLU()self.conv2 = nn.Conv2D(in_channels, in_channels, kernel_size=3, stride=1, padding=1)self.bn2 = nn.BatchNorm2D(in_channels)def forward(self, x):identity = xout = self.conv1(x)out = self.bn1(out)out = self.prelu(out)out = self.conv2(out)out = self.bn2(out)out += identityreturn outclass cycleGAN(nn.Layer):"""定義cycleGAN網絡"""def __init__(self, upscale_factor=4, num_residual_blocks=16):super(cycleGAN, self).__init__()self.conv1 = nn.Conv2D(3, 64, kernel_size=3, stride=1, padding=1)self.prelu = nn.PReLU()# 添加殘差塊residual_blocks = []for _ in range(num_residual_blocks):residual_blocks.append(ResidualBlock(64))self.residual_blocks = nn.Sequential(*residual_blocks)self.conv2 = nn.Conv2D(64, 64, kernel_size=3, stride=1, padding=1)self.bn2 = nn.BatchNorm2D(64)# 上采樣層,使用反卷積進行上采樣upsampling_layers = []for _ in range(int(upscale_factor / 2)):upsampling_layers.append(nn.Conv2DTranspose(64, 64, kernel_size=3, stride=2, padding=1, output_padding=1))upsampling_layers.append(nn.BatchNorm2D(64))upsampling_layers.append(nn.PReLU())self.upsampling = nn.Sequential(*upsampling_layers)self.conv3 = nn.Conv2D(64, 3, kernel_size=3, stride=1, padding=1)def forward(self, x):out = self.conv1(x)out = self.prelu(out)residual = self.residual_blocks(out)out = self.conv2(residual)out = self.bn2(out)out += residualout = self.upsampling(out)out = self.conv3(out)return out

該程序文件cycleGAN.py定義了一個CycleGAN網絡模型。該模型包含兩個主要部分:ResidualBlock和cycleGAN。

ResidualBlock是一個殘差塊,用于增加網絡的深度和學習能力。它包含兩個卷積層和兩個批歸一化層。在前向傳播過程中,輸入通過第一個卷積層和批歸一化層,然后通過PReLU激活函數。然后,輸出通過第二個卷積層和批歸一化層。最后,將輸入和輸出相加得到殘差塊的輸出。

cycleGAN是整個網絡模型。它包含一個卷積層、一個PReLU激活函數、多個ResidualBlock殘差塊、一個卷積層和一個批歸一化層。在前向傳播過程中,輸入通過第一個卷積層和PReLU激活函數。然后,輸出通過多個ResidualBlock殘差塊。接下來,輸出通過第二個卷積層和批歸一化層,并與之前的殘差塊輸出相加。最后,輸出通過上采樣層進行上采樣,并通過最后一個卷積層得到最終的輸出。

該模型用于圖像超分辨率重建任務,通過學習低分辨率圖像和高分辨率圖像之間的映射關系,實現將低分辨率圖像轉換為高分辨率圖像的功能。

5.2 demo.py
class ImageNoise:def __init__(self, path1, path2):self.path1 = path1self.path2 = path2def sp_noise(self, image, prob):"""添加椒鹽噪聲prob:噪聲比例"""output = np.zeros(image.shape,np.uint8)thres = 1 - probfor i in range(image.shape[0]):for j in range(image.shape[1]):rdn = random.random()if rdn < prob:output[i][j] = 0elif rdn > thres:output[i][j] = 255else:output[i][j] = image[i][j]return outputdef add_noise(self, prob=0.1):for i in os.listdir(self.path1):im = cv2.imread(self.path1 + '/' + i)# 調用噪聲函數生成噪聲圖片img_sp = self.sp_noise(im, prob)# 均值濾波img_blur = cv2.blur(img_sp, (20, 20))cv2.imwrite(self.path2 + '/' + i, img_blur)

這個程序文件名為demo.py,它的功能是給指定文件夾中的圖片添加椒鹽噪聲,并對添加噪聲后的圖片進行均值濾波處理,然后將處理后的圖片保存到另一個文件夾中。

具體實現過程如下:

  1. 導入所需的庫:os、cv2、random、numpy。
  2. 定義兩個文件夾路徑變量path1和path2,分別表示原始圖片所在的文件夾和處理后圖片保存的文件夾。
  3. 定義一個函數sp_noise,用于給圖片添加椒鹽噪聲。該函數接受兩個參數,一個是圖片對象image,另一個是噪聲比例prob。函數內部會根據噪聲比例隨機生成椒鹽噪聲,并將噪聲添加到圖片上,最后返回添加噪聲后的圖片。
  4. 使用os.listdir遍歷path1文件夾中的所有文件。
  5. 使用cv2.imread讀取每個文件的圖片。
  6. 調用sp_noise函數給圖片添加椒鹽噪聲,噪聲比例為0.1。
  7. 使用cv2.blur對添加噪聲后的圖片進行均值濾波處理,濾波器大小為(20, 20)。
  8. 使用cv2.imwrite將處理后的圖片保存到path2文件夾中,文件名與原始圖片相同。
5.3 setup.py

class PPGAN:def __init__(self):with open('requirements.txt', encoding="utf-8-sig") as f:self.requirements = f.readlines()def readme(self):with open('README.md', encoding="utf-8-sig") as f:self.README = f.read()def setup(self):setup(name='ppgan',packages=find_packages(),include_package_data=True,entry_points={"console_scripts": ["paddlegan= paddlegan.paddlegan:main"]},author='PaddlePaddle Author',version=__version__,install_requires=self.requirements,license='Apache License 2.0',description='Awesome GAN toolkits based on PaddlePaddle',long_description=self.readme(),long_description_content_type='text/markdown',url='https://github.com/PaddlePaddle/PaddleGAN',download_url='https://github.com/PaddlePaddle/PaddleGAN.git',keywords=['gan paddlegan'],classifiers=['Intended Audience :: Developers', 'Operating System :: OS Independent','Natural Language :: Chinese (Simplified)','Programming Language :: Python :: 3','Programming Language :: Python :: 3.5','Programming Language :: Python :: 3.6','Programming Language :: Python :: 3.7', 'Topic :: Utilities'],)

這是一個Python的安裝腳本文件,文件名為setup.py。該腳本用于安裝ppgan工具包,并設置相關的配置信息。腳本中使用了setuptools庫來進行安裝和打包操作,使用了find_packages函數來查找所有的包,使用了open函數來讀取文件內容。

腳本中定義了一個readme函數,用于讀取README.md文件的內容作為長描述。在setup函數中,設置了ppgan的名稱為’ppgan’,包含所有的包,包括數據文件,設置了命令行入口為’paddlegan’,作者為’PaddlePaddle Author’,版本號為__version__,依賴包為requirements.txt中的內容,許可證為Apache License 2.0,描述為’Awesome GAN toolkits based on PaddlePaddle’,長描述為README.md的內容,URL為源碼,下載URL為,關鍵詞為’gan paddlegan’,分類器為一些開發者相關的信息和Python版本信息。

6.系統整體結構

以下是每個文件的功能概述:

文件路徑功能
cycleGAN.py實現CycleGAN模型的訓練和推理
demo.py演示文件,用于展示模型的使用方法
setup.py安裝文件,用于安裝依賴和設置環境
ui.py用戶界面文件,用于創建圖形用戶界面
applications_init_.py應用程序模塊的初始化文件

7.圖像風格遷移

藝術風格遷移是一種有吸引力的技術,可以利用內容圖像的結構和示例風格圖像的風格樣式來創造藝術圖像。它已經成為學術界和工業界普遍的研究課題。近年來,人們提出了許多神經風格遷移的方法,大致可分為兩類:圖像優化方法和模型優化方法。
在這里插入圖片描述

圖像優化方法是利用固定網絡迭代優化風格化圖像。Gatyset等人的開創性工作在迭代優化過程中實現風格遷移,其中風格樣式是通過從預先訓練的深度神經網絡中提取的特征的相關性來捕獲的。后續工作主要以不同損失函數的形式改進。雖然取得了優越的風格化結果,例如STROTSS,但這些方法的廣泛應用仍然受到其在線優化過程緩慢的限制。相反,模型優化方法通過訓練來更新神經網絡,并在測試中進行前饋。主要有三種細分類型:
(1)Per-Style-Per-Model方法,被訓練來合成具有單一特定風格的圖像;
(2)Multi-Style-Per-Model方法,引入多種網絡架構,同時處理多種風格;
(3)Arbitrary-Style-Per-Model方法,進一步采用多種特征修改機制來遷移任意風格。
回顧這些方法,我們發現雖然局部風格樣式可以被遷移,但是混合了全局和局部風格的復雜樣式仍然不能被正確地遷移。與此同時,很多情況下會出現偽影和瑕疵。為此,在本次工作中,我們的主要目標是通過前饋網絡實現高質量的藝術風格遷移,在美學上保留局部和全局的樣式。

人類畫家在繪畫時如何處理復雜的風格樣式?一個常見的過程,特別是對于初學者來說,是先畫一個草圖捕捉整體結構,然后逐步修改局部細節,而不是直接一步一步完成最終的畫。受此啟發,我們提出了一種新的用于風格遷移的神經網絡——拉普拉斯金字塔網絡(LapStyle)。首先,在我們的框架中,Drafting Network被設計用于在低分辨率下遷移全局風格樣式,因為我們觀察到,由于更大的感受野和更少的局部細節,全局風格更容易在低分辨率下遷移。然后使用Revision Network根據草稿和拉普拉斯濾波在2倍分辨率的內容圖像上提取的紋理,通過產生殘差圖像,在高分辨率下修改局部細節。注意,我們的Revision Network可以以金字塔的方式堆疊,以生成更高分辨率的細節。最終的風格化圖像是通過聚合所有金字塔層的輸出得到的。此外,我們采用淺色塊判別器對局部風格樣式進行對抗性學習。如圖1所示,我們的“Drafting and Revison”過程取得了不錯的風格化結果。

綜上所述,主要貢獻如下:

我們引入了一個新的框架“Drafting and Revison”,通過將風格遷移過程拆分為全局風格樣式起草和局部風格樣式修訂來模擬繪畫創作機制。
我們提出了一種新的前饋式遷移方法LapStyle。采用Drafting Network遷移低分辨率的全局風格樣式,采用高分辨率Revision Network根據內容圖像的多級拉普拉斯濾波輸出,以金字塔方式修正局部風格樣式。
實驗證明,我們的方法可以生成高分辨率和高質量的風格化結果,其中全局和局部風格樣式都是有效合成的。此外,本文提出的LapStyle具有極高的效率,能夠在512分辨率下達到100fps的速度。

8.網絡結構

對于輸入的內容圖像xc和風格圖像xs,分別提取其拉普拉斯金字塔區。, r.2和(xs,r’s),其中x,是xc兩倍下采樣的結果,而殘差圖r ,是利用拉普拉斯濾波器得到的,保存了下采樣時丟失的高頻信息。風格圖像也做了同樣的處理
在第一階段,Drafting Network首先使用預訓練的神經網絡對來自又.和x.的內容特征和風格特征進行編碼,然后使用多粒度的風格特征對內容特征進行調制,最后使用解碼器生成風格化圖像.xs。在第二階段,Revision Network首先將.c上采樣到x s,然后將x 和r o連接起來作為網絡輸入,生成帶有高頻風格化細節的殘差圖rs。最后,我們通過聚合低分辨率風格化結果和高分辨率殘差圖得到最終風格化圖像xcs。

Drafting Network

Drafting Network的目的是在低分辨率下綜合全局樣式。為什么用低分辨率?我們觀察到,由于接收域大,局部細節少,全局樣式在低分辨率下更容易遷移。為了實現單一風格的遷移,早期的工作直接訓練一個編碼器-解碼器模塊,其中只有內容圖像被用作輸入。為了更好的結合風格特性和內容特性,我們從最近的任意風格遷移方法中采用了AdaIN。
在這里插入圖片描述

Drafting Network的結構如圖3所示,其中包括一個編碼器、幾個AdaIN模塊和一個解碼器。 (1) 編碼器是一個預先訓練好的VGG-19網絡,在訓練過程中是固定的。對于給出的x xxc和x xxs,VGG編碼器在2_1、3_1和4_1層提取多個粒度的特征。 (2) 然后,我們分別在2_1、3_1和4_1層后使用AdaIN模塊在內容和風格特征之間進行特征調制。 (3) 最后,在解碼器的每個粒度中,來自AdaIN模塊的相應特征通過跳躍連接進行合并,在這里,利用低級別和高級別的AdaIN模塊之后的跳躍連接有助于保留內容結構,特別是對于低分辨率圖像。

Revision Network

Revision Network的目的是通過生成殘差細節圖像來修正粗糙的風格化圖像,而最終的風格化圖像是通過聚合r c和粗糙的風格化圖像區xs生成的。這個過程確保了全局風格樣式在xs中的分布得到了妥善的保留。同時,Revision Network更容易學習利用殘差細節圖像對局部風格圖像進行修正。
在這里插入圖片描述

如圖所示,Revision Network設計為簡單有效的編解碼器架構,只有一個下采樣層和一個上采樣層。此外,我們還引入了一個patch判別器來幫助Revision Network在對抗學習設置下捕獲精細的patch紋理。我們選擇定義一個相對較淺的D,(1)避免過度擬合,因為我們只有—個風格圖像;(2)控制感受野,以確保只能捕獲局部樣式。

9.系統整合

下圖完整源碼&環境部署視頻教程&自定義UI界面
在這里插入圖片描述

參考博客《基于生成式對抗網絡的圖像風格遷移系統》

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

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

相關文章

lazada商品詳情數據接口(lazada.item_get)

Lazada商品詳情數據接口是Lazada電商平臺提供的一個API接口&#xff0c;用于獲取商品詳細信息。通過這個接口&#xff0c;開發者可以獲取Lazada平臺上商品的豐富信息&#xff0c;包括商品名稱、價格、庫存、描述、圖片等。這個接口使用RESTful風格&#xff0c;并通過HTTP協議進…

經過了多少輪洗牌后,序列中間位置的牌面為9 ← random.shuffle()

【題目描述】 有牌面為1~9的撲克牌&#xff0c;現在進行洗牌&#xff0c;并存于一個序列中。 請輸出經過了多少輪洗牌后&#xff0c;序列中間位置的牌面為9。【算法分析】 Python 中使用 random 模塊中的 shuffle 函數&#xff0c;可隨意排列列表中的元素。 本題中的輸出&#…

【基礎知識】AB軟件RSLinx的版本說明

哈嘍&#xff0c;大家好&#xff0c;我是雷工&#xff01; 之前對AB的軟件了解比較少&#xff0c;在工作中未接觸過&#xff0c;最近一次現場勘察時&#xff0c;有很多中控系統都是AB的&#xff0c;借此機會對AB軟件有了些許了解。 一、RSLinx是什么軟件&#xff1f; RSLinx是…

fork介紹,返回值問題,寫時拷貝,進程切換,子進程開始執行的位置,子進程的用途

目錄 fork 介紹 fork的返回值問題 介紹 fork()時,系統要做什么 數據是否要獨立 如果共享的話,就會出現問題! 寫時拷貝 引入 介紹 舉例(fork返回值) fork返回的值是什么 創建失敗的原因 子進程執行位置從哪里開始 引入 進程切換 子進程執行的位置 子進程的…

燙傷事件屢有發生,覓光推脫責任,稱是用戶操作失誤

提及“雙十一”“直播間”等關鍵詞&#xff0c;人們常常將其與“低價”“薅羊毛”等字眼掛鉤。而在近日&#xff0c;科技美容品牌AMIRO覓光&#xff08;下稱“覓光”&#xff09;卻上演了一出“反向薅羊毛”的戲碼&#xff0c;因線上線下渠道相差超千元的價格差飽受爭議。 自橫…

camera-caps:Jetson設備上的一種實用的V4L2可視化界面

camera-caps&#xff1a;Jetson設備上的一種實用的V4L2可視化界面 github地址是&#xff1a; https://github.com/jetsonhacks/camera-caps 注意&#xff1a;Jetpack5.x需要選擇tag 5.x版本

走迷宮(BFS寬度優先搜索)

給定一個 nm 的二維整數數組&#xff0c;用來表示一個迷宮&#xff0c;數組中只包含 0 或 1&#xff0c;其中 0 表示可以走的路&#xff0c;1 表示不可通過的墻壁。 最初&#xff0c;有一個人位于左上角 (1,1)處&#xff0c;已知該人每次可以向上、下、左、右任意一個方向移動…

MySQL數據庫約束你真的懂嗎?

??????今天給各位帶來的是關于數據庫約束方面的知識 清風的CSDN博客 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能對你有所幫助&#xff0c;有不足的地方還請各位看官多多指教&#xff0c;大家一起學習交流&#xff01; 動動你們發財的小手&#xff0c;點點關…

JMeter接口測試之文件上傳

最近用JMeter做接口測試&#xff0c;頻繁遇到了文件上傳的接口&#xff0c;與其他一般接口的處理方式不一樣&#xff0c;想著分享下&#xff0c;希望能給測試同學一點啟發。 文章將圍繞三個部分進行展開&#xff1a; 一、用戶場景 二、接口請求參數 三、JMeter腳本編寫步驟…

C語言每日一題(36)隊列實現棧功能

力扣 225 用隊列實現棧 題目描述 請你僅使用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通棧的全部四種操作&#xff08;push、top、pop 和 empty&#xff09;。 實現 MyStack 類&#xff1a; void push(int x) 將元素 x 壓入棧頂。int…

vue2系列 — 自定義指令

https://v2.cn.vuejs.org/v2/guide/custom-directive.html <div v-example:foo.bar"baz">vue 自定義指令的鉤子 bind&#xff1a; 當 v-XXX 指令綁定到節點上時 觸發inserted&#xff1a;被綁定元素插入父節點時調用update&#xff1a;所在組件的 VNode 更新…

使用nprogress實現請求進度條

一、安裝nprogress npm i nprogress 二、 在axios的請求攔截器中使用nprogress 如果對于axios的請求和響應攔截器的使用不了解的&#xff0c;可以看這篇文章&#xff1a; axios二次封裝配置請求攔截器和響應攔截器-CSDN博客 nprogress上有兩個有用的方法&#xff1a; star(…

OpenStack云計算平臺-Dashboard(圖形化)

目錄 一、安裝和配置 1、安全并配置組件 2、完成安裝 ?二、驗證操作 一、安裝和配置 1、安全并配置組件 安裝軟件包&#xff1a; yum install openstack-dashboard 編輯文件 vim /etc/openstack-dashboard/local_settings vim /etc/httpd/conf.d/openstack-dashboard.…

如何用Python爬取全國高校數據?

前言 Python是一門強大的編程語言&#xff0c;它可以用于爬取互聯網上的各種數據。在這篇文章中&#xff0c;我們將學習如何使用Python爬取全國高校數據&#xff0c;并使用代理IP進行爬取。 本文主要分為以下幾個部分&#xff1a; 數據來源及需求安裝依賴包及導入模塊爬取全…

關于禪道的安裝配置以及項目管理、團隊協同工作

目錄 一、禪道是什么&#xff1f; 二、特點和功能 三、安裝禪道 3.1 下載官網 3.2 版本考慮 3.3 禪道使用手冊參考 3.4 Windows端安裝禪道 四、啟動禪道 4.1 訪問禪道 四、禪道部分功能的使用 4.1 添加項目集 4.2 啟動/關閉項目 4.3 項目計劃儀表盤/階段目標/研發…

頭歌——操作系統實訓總結

死鎖 1、系統出現死鎖時一定同時保持了四個必要條件&#xff0c;對資源采用按序分配算法后可破壞的條件是&#xff08;A&#xff09;。 A、循環等待條件B、互斥條件C、占有并等待條件D、不可搶占條件 2、資源的靜態分配算法在解決死鎖問題中是用于&#xff08;B&#xff09;。 …

【圖論】關鍵路徑求法c++

代碼結構如下圖&#xff1a; 其中topologicalSort(float**, int, int*, bool*, int, int)用來遞歸求解拓撲排序&#xff0c;topologicalSort(float**, int*&, int, int, int)傳參圖的鄰接矩陣mat與結點個數n&#xff0c;與一個引用變量數組topo&#xff0c;返回一個布爾值…

代碼隨想錄-刷題第五天

鏈表題目總結 鏈表基本操作 對鏈表進行增刪改查等基本操作。注意&#xff0c;很多鏈表的題目使用虛擬頭結點操作起來會更加方便。每次對應頭結點的情況都要單獨處理&#xff0c;所以使用虛擬頭結點的技巧&#xff0c;就可以解決這個問題。 反轉鏈表 可以使用頭插法&#xf…

Shopee本土號封號幾率大嗎?如何避免封號?被封號了怎么辦?

Shopee是近幾年熱門的電商平臺之一&#xff0c;即使越來越多的跨境電商涌現&#xff0c;他的地位在東南亞市場依然占據一席之地&#xff0c;也依舊吸引著需要跨境商家入局。尤其在2023年&#xff0c;在TikTok Shop在印尼被關停之后&#xff0c;留下了大片空白&#xff0c;Shope…