技術老司機開車:用GAN去除(愛情)動作片中的馬賽克和衣服!

2021-01-20 養碼場


生成式模型


之前已經簡單介紹了GAN,這篇再簡要回顧一下生成式模型,算是補全一個來龍去脈。


生成模型就是能夠產生指定分布數據的模型,常見的生成式模型一般都會有一個用於產生樣本的簡單分布。例如一個均勻分布,根據要生成分布的概率密度函數,進行建模,讓均勻分布中的樣本經過變換得到指定分布的樣本,這就可以算是最簡單的生成式模型。比如下面例子:


圖中左邊是一個自定義的概率密度函數,右邊是相應的1w個樣本的直方圖,自定義分布和生成這些樣本的代碼如下:



對於一些簡單的情況,我們會假設已知有模型可以很好的對分布進行建模,缺少的只是合適的參數。這時候很自然只要根據觀測到的樣本,學習參數讓當前觀測到的樣本下的似然函數最大,這就是最大似然估計

(Maximum Likelihood Estimation):


MLE是一個最基本的思路,實踐中用得很多的還有KL散度(Kullback–Leibler divergence),假設真實分布是P,採樣分布是Q,則KL散度為:


從公式也能看出來,KL散度描述的是兩個分布的差異程度。換個角度來看,讓產生的樣本和原始分布接近,也就是要讓這倆的差異減小,所以最小化KL散度就等同於MLE。從公式上來看的話,我們考慮把公式具體展開一下:


公式的第二項就是熵,先不管這項,用H(P)表示。接下來考慮一個小trick:從Q中抽樣n個樣本,來估算P(x)的經驗值(empirical density function):


其中狄拉克函數,把這項替換到上面公式的P(x):


因為是離散的採樣值,所以時候狄拉克函數才為1,所以考慮時這項直接化為1:


第一項正是似然的負對數形式。


說了些公式似乎跑得有點遠了,其實要表達還是那個簡單的意思:通過減小兩個分布的差異可以讓一個分布逼近另一個分布。仔細想想,這正是GAN裡面adversarial loss的做法。


很多情況下我們面臨的是更為複雜的分布,比如上篇文章中的例子,又或是實際場景中更複雜的情況,比如生成不同人臉的圖像。這時候,作為具有universal approximation性質的神經網絡是一個看上去不錯的選擇[1]:



所以雖然GAN裡面同時包含了生成網絡和判別網絡,但本質來說GAN的目的還是生成模型。從生成式模型的角度,Ian Goodfellow總結過一個和神經網絡相關生成式方法的「家譜」[1]:


在這其中,當下最流行的就是GAN和Variational AutoEncoder(VAE),兩種方法的一個簡明示意如下[3]:


本篇不打算展開講什麼是VAE,不過通過這個圖,和名字中的autoencoder也大概能知道,VAE中生成的loss是基於重建誤差的。而只基於重建誤差的圖像生成,都或多或少會有圖像模糊的缺點,因為誤差通常都是針對全局。比如基於MSE(Mean Squared Error)的方法用來生成超解析度圖像,容易出現下面的情況[4]:


在這個二維示意中,真實數據分布在一個U形的流形上,而MSE系的方法因為loss的形式往往會得到一個接近平均值所在的位置(藍色框)。


GAN在這方面則完爆其他方法,因為目標分布在流形上。所以只要大概收斂了,就算生成的圖像都看不出是個啥,清晰度常常是有保證的,而這正是去除女優身上馬賽克的理想特性!


馬賽克->清晰畫面

超解析度(Super Resolution)問題


說了好些鋪墊,終於要進入正題了。


首先明確,去馬賽克其實是個圖像超解析度問題,也就是如何在低解析度圖像基礎上得到更高解析度的圖像:

視頻中超解析度實現的一個套路是通過不同幀的低解析度畫面猜測超解析度的畫面,有興趣了解這個思想的朋友可以參考我之前的一個答案:如何通過多幀影像進行超解析度重構? 


不過基於多幀影像的方法對於女優身上的馬賽克並不是很適用,所以這篇要講的是基於單幀圖像的超解析度方法。


SRGAN


說到基於GAN的超解析度的方法,就不能不提到SRGAN[4]:《Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network》。


這個工作的思路是:基於像素的MSE loss往往會得到大體正確,但是高頻成分模糊的結果。所以只要重建低頻成分的圖像內容,然後靠GAN來補全高頻的細節內容,就可以了:


這個思路其實和最早基於深度網絡的風格遷移的思路很像(有興趣的讀者可以參考我之前文章瞎談CNN:通過優化求解輸入圖像的最後一部分),其中重建內容的content loss是原始圖像和低解析度圖像在VGG網絡中的各個ReLU層的激活值的差異:



生成細節adversarial loss就是GAN用來判別是原始圖還是生成圖的loss:


把這兩種loss放一起,取個名叫perceptual loss。訓練的網絡結構如下:



正是上篇文章中講過的C-GAN,條件C就是低解析度的圖片。SRGAN生成的超解析度圖像雖然PSNR等和原圖直接比較的傳統量化指標並不是最好,但就視覺效果,尤其是細節上,勝過其他方法很多。比如下面是作者對比bicubic插值和基於ResNet特徵重建的超解析度的結果:


可以看到雖然很多細節都和原始圖片不一樣,不過看上去很和諧,並且細節的豐富程度遠勝於SRResNet。這些栩栩如生的細節,可以看作是GAN根據學習到的分布信息「聯想」出來的。


對於更看重「看上去好看」的超解析度應用,SRGAN顯然是很合適的。當然對於一些更看重重建指標的應用,比如超解析度恢復嫌疑犯面部細節,SRGAN就不可以了。


pix2pix


雖然專門用了一節講SRGAN,但本文用的方法其實是pix2pix[5]。


這項工作剛在arxiv上發布就引起了不小的關注,它巧妙的利用GAN的框架解決了通用的Image-to-Image translation的問題。舉例來說,在不改變解析度的情況下:

把照片變成油畫風格;

把白天的照片變成晚上;

用色塊對圖片進行分割或者倒過來;

為黑白照片上色;

………


每個任務都有專門針對性的方法和相關研究,但其實總體來看,都是像素到像素的一種映射啊,其實可以看作是一個問題。這篇文章的巧妙,就在於提出了pix2pix的方法,一個框架,解決所有這些問題。方法的示意圖如下:

就是一個Conditional GAN,條件C是輸入的圖片。除了直接用C-GAN,這項工作還有兩個改進:


1)利用U-Net結構生成細節更好的圖片[6]


U-Net是德國Freiburg大學模式識別和圖像處理組提出的一種全卷積結構。和常見的先降採樣到低維度,再升採樣到原始解析度的編解碼(Encoder-Decoder)結構的網絡相比,U-Net的區別是加入skip-connection,對應的feature maps和decode之後的同樣大小的feature maps按通道拼(concatenate)一起,用來保留不同解析度下像素級的細節信息。


U-Net對提升細節的效果非常明顯,

下面是pix2pix文中給出的一個效果對比:

可以看到,各種不同尺度的信息都得到了很大程度的保留。


2)利用馬爾科夫性的判別器(PatchGAN)


pix2pix和SRGAN的一個異曲同工的地方是都有用重建解決低頻成分,用GAN解決高頻成分的想法。


在pix2pix中,這個思想主要體現在兩個地方:一個是loss函數,加入了L1 loss用來讓生成的圖片和訓練的目標圖片儘量相似,而圖像中高頻的細節部分則交由GAN來處理:


還有一個就是PatchGAN也就是具體的GAN中用來判別是否生成圖的方法。


PatchGAN的思想是,既然GAN只負責處理低頻成分,那麼判別器就沒必要以一整張圖作為輸入,只需要對NxN的一個圖像patch去進行判別就可以了。這也是為什麼叫Markovian discriminator,因為在patch以外的部分認為和本patch互相獨立。


具體實現的時候,作者使用的是一個NxN輸入的全卷積小網絡,最後一層每個像素過sigmoid輸出為真的概率,然後用BCEloss計算得到最終loss。這樣做的好處是因為輸入的維度大大降低,所以參數量少,運算速度也比直接輸入一張快,並且可以計算任意大小的圖。


作者對比了不同大小patch的結果,對於256x256的輸入,patch大小在70x70的時候,從視覺上看結果就和直接把整張圖片作為判別器輸入沒什麼區別了:


生成帶局部馬賽克的訓練數據


利用pix2pix,只要準備好無碼和相應的有碼圖片就可以訓練去馬賽克的模型了,就是這麼簡單。那麼問題是,如何生成有馬賽克的圖片?


有毅力的話,可以手動加馬賽克,這樣最為精準。這節介紹一個不那麼準,但是比隨機強的方法:利用分類模型的激活區域進行自動馬賽克標註。


基本思想是利用一個可以識別需要打碼圖像的分類模型,提取出這個模型中對應類的CAM(Class Activation Map)[7],然後用馬賽克遮住響應最高的區域即可。


這裡簡單說一下什麼是CAM,對於最後一層是全局池化(平均或最大都可以)的CNN結構,池化後的feature map相當於是做了個加權相加來計算最終的每個類別進入softmax之前的激活值。CAM的思路是,把這個權重在池化前的feature map上按像素加權相加,最後得到的單張的激活圖就可以攜帶激活當前類別的一些位置信息,這相當於一種弱監督(classification-->localization)


上圖是一個CAM的示意,用澳洲梗類別的CAM,放大到原圖大小,可以看到小狗所在的區域大致是激活響應最高的區域。


那麼就缺一個可以識別XXX圖片的模型了,網上還恰好就有個現成的,yahoo於2016年發布的開源色情圖片識別模型Open NSFW(Not Safe For Work):

yahoo/open_nsfw:https://github.com/yahoo/open_nsfw

CAM的實現並不難,結合Open NSFW自動打碼的代碼和使用放在了這裡:給XX圖片生成馬賽克https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/random_bonus/generate_mosaic_for_porno_images


(成功打碼的)效果差不多是下面這樣子:

去除(愛情)動作片中的馬賽克


這沒什麼好說的了,一行代碼都不用改,只需要按照前面的步驟把數據準備好,然後按照pix2pix官方的使用方法訓練就可以了:

Torch版pix2pix:https://github.com/phillipi/pix2pix

pyTorch版pix2pix(Cycle-GAN二合一版):https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix


從D盤裡隨隨便便找了幾千張圖片,用來執行了一下自動打碼和pix2pix訓練(默認參數),效果是下面這樣:


什麼

你問說好給女優去馬賽克呢?

女優照片呢???

還是要說一下,在真人照片上的效果比蘑菇和花強。


對偶學習(Dual Learning)


去馬賽克已經講完了,接下來就是給女孩穿(tuo)衣服了,動手之前,還是先講一下鋪墊:對偶學習和Cycle-GAN。


對偶學習是MSRA於2016年提出的一種用於機器翻譯的增強學習方法[8],目的是解決海量數據配對標註的難題,個人覺得算是一種弱監督方法(不過看到大多數文獻算作無監督)。以機器翻譯為例,對偶學習基本思想如下圖[9]:



左邊的灰衣男只懂英語,右邊的黑衣女只懂中文,現在的任務就是,要學習如何翻譯英語到中文。對偶學習解決這個問題的思路是:給定一個模型一上來無法知道f翻譯得是否正確,但是如果考慮的對偶問題,那麼我可以嘗試翻譯一個英文句子到中文,再翻譯回來。這種轉了一圈的結果,灰衣男是可以用一個標準(BLEU)判斷x'和x是否一個意思,並且把結果的一致性反饋給這兩個模型進行改進。同樣的,從中文取個句子,這樣循環翻譯一遍,兩個模型又能從黑衣女那裡獲取反饋並改進模型。其實這就是強化學習的過程,每次翻譯就是一個action,每個action會從環境(灰衣男或黑衣女)中獲取reward,對模型進行改進,直至收斂。


個人覺得還是不一樣的,Co-Training是一種multi-view方法,比如一個輸入x,如果看作是兩個拼一起的特徵,並且假設互相獨立,那麼這時候訓練兩個分類器對於任意樣本x應該有


這對沒有標註的樣本是很有用的,相當於利用了同一個樣本分類結果就應該一樣的隱含約束。所以Co-Training的典型場景是少量標註+大量未標註的半監督場景。並且其實是兩個不同,但是domain指向相同的任務。而Dual Learning中是對偶任務,利用的隱含約束是的cycle consistency。對輸入的特徵也沒有像Co-Training有那麼明確的假設,學習方法上也不一樣,Dual Learning算是強化學習。


CycleGAN和未配對圖像翻譯

(Unpaired Image-to-Image Translation)


CycleGAN,翻譯過來就是:輪著幹,是結合了對偶學習和GAN一個很直接而巧妙的想法[10],示意圖如下:


X和Y分別是兩種不同類型圖的集合,比如穿衣服的女優和沒穿衣服的女優。所以給定一張穿了衣服的女優,要變成沒穿衣服的樣子,就是個圖片翻譯問題。CycleGAN示意圖中(b)和(c)就是Dual Learning:


在Dual Learning基礎上,又加入了兩個判別器    和   用來進行對抗訓練,讓翻譯過來的圖片儘量逼近當前集合中的圖片:


全考慮一起,最終的loss是:


也許有人會問,那不加cycle-consistency,直接用GAN學習一個的映射,讓生成的Y的樣本儘量畢竟Y裡本身的樣本可不可以呢?這個作者在文中也討論了,會產生GAN訓練中容易發生的mode collapse問題。

mode collapse問題的一個簡單示意如下[11]:


上邊的是真實分布,下邊的是學習到的分布,可以看到學習到的分布只是完整分布的一部分,這個叫做partial mode collapse,是訓練不收斂情況中常見的一種。如果是完全的mode collapse,就是說生成模型得到的都是幾乎一樣的輸出。而加入Cycle-consistency會讓一個domain裡不同的樣本都儘量映射到另一個domain裡不同的地方,理想情況就是雙射(bijection)。直觀來理解,如果通過都映射在Y中同一個點,那麼這個點y通過映射回來顯然不可能是多個不同的x,所以加入cycle-consistency就幫助避免了mode collapse。這個問題在另一篇和CycleGAN其實本質上沒什麼不同的方法DiscoGAN中有更詳細的討論[12],有興趣的話可以參考。


有一點值得注意的是,雖然名字叫CycleGAN,並且套路也和C-GAN很像,但是其實只有adversarial,並沒有generative。因為嚴格來說只是學習了和的mapping,所謂的generative network裡並沒有隨機性。有一個和CycleGAN以及DiscoGAN其實本質上也沒什麼不同的方法叫DualGAN[13],倒是通過dropout把隨機性加上了。不過所有加了隨機性產生的樣本和原始樣本間的cycle-consistency用的還是l1 loss,總覺得這樣不是很對勁。當然現在GAN這麼熱門,其實只要是用了adversarial loss的基本都會取個名字叫XXGAN,也許是可以增加投稿命中率。


另外上節中提到了Co-Training,感覺這裡也應該提一下CoGAN[14],因為名字有些相似,並且也可以用於未配對的圖像翻譯。CoGAN的大體思想是:如果兩個Domain之間可以互相映射,那麼一定有一些特徵是共有的。比如男人和女人,雖然普遍可以從長相區分,但不變的是都有兩個眼睛一個鼻子一張嘴等等。所以可以在生成的時候,把生成共有特徵和各自特徵的部分分開,示意圖如下:


其實就是兩個GAN結構,其中生成網絡和判別網絡中比較高層的部分都採用了權值共享(虛線相連的部分),沒有全職共享的部分分別處理不同的domain。這樣每次就可以根據訓練的domain生成一個樣本在兩個domain中不同的對應,比如戴眼鏡和沒戴眼鏡:

分別有了共有特徵和各自domain特徵,那麼做mapping的思路也就很直接了[15]:


在GAN前邊加了個domain encoder,然後對每個domain能得到三種樣本給判別器區分:直接採樣,重建採樣,從另一個domain中transfer後的重建採樣。訓練好之後,用一個domain的encoder+另一個domain的generator就很自然的實現了不同domain的轉換。用在圖像翻譯上的效果如下:

還有個巧妙的思路,是把CoGAN拆開,不同domain作為C-GAN條件的更加顯式的做法[16]:


第一步用噪聲Z作為和domain無關的共享表徵對應的latent noise,domain信息作為條件C訓練一個C-GAN。


第二步,訓練一個encoder,利用和常見的encode-decode結構相反的decode(generate)-encode結構。學習好的encoder可以結合domain信息,把輸入圖像中和domain無關的共享特徵提取出來。


第三步,把前兩步訓練好的encoder和decoder(generator)連一起,就可以根據domain進行圖像翻譯了。


CoGAN一系的方法雖然結構看起來更複雜,但個人感覺理解起來要比dual系的方法更直接,並且有latent space,可解釋性和屬性對應也好一些。


又扯遠了,還是回到正題:


給女優穿上衣服


其實同樣沒什麼好說的,Cycle-GAN和pix2pix的作者是一撥人,文檔都寫得非常棒,準備好數據,分成穿衣服的和沒穿衣服的兩組,按照文檔的步驟訓練就可以:

Torch版Cycle-GAN:https://github.com/junyanz/CycleGAN

pyTorch版Cycle-GAN(pix2pix二合一版):https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix


Cycle-GAN收斂不易,我用了128x128解析度訓練了各穿衣服和沒穿衣服的女優各一千多張,同樣是默認參數訓練了120個epoch,最後小部分成功「穿衣服」的結果如下:

雖然都有些突兀,但好歹是穿上衣服了。注意馬賽克不是圖片裡就有的,是我後來加上去的。


那麼

脫衣服的例子在哪裡?

最後

場主祝大家國慶快樂!

並要堅信

書中自有顏如玉!

古人誠不我欺也


 作者本人提供的參考文獻:

[1] I. Goodfellow. Nips 2016 tutorial: Generative adversarial networks. arXiv preprint arXiv:1701.00160, 2016.

[2] A. B. L. Larsen, S. K. Sønderby, Generating Faces with Torch. Torch | Generating Faces with Torch

[3] A. B. L. Larsen, S. K. Sønderby, H. Larochelle, and O. Winther. Autoencoding beyond pixels using a learned similarity metric. In ICML, pages 1558–1566, 2016.

[4] C. Ledig, L. Theis, F. Huszar, J. Caballero, A. Aitken, A. Tejani, J. Totz, Z. Wang, and W. Shi. Photo-realistic single image super-resolution using a generative adversarial network. arXiv:1609.04802, 2016.

[5] P. Isola, J.-Y. Zhu, T. Zhou, and A. A. Efros. Image-to-image translation with conditional adversarial networks. arxiv, 2016.

[6] O. Ronneberger, P. Fischer, and T. Brox. U-net: Convolutional networks for biomedical image segmentation. In MICCAI, pages 234–241. Springer, 2015.

[7] B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Learning deep features for discriminative localization. arXiv preprint arXiv:1512.04150, 2015.

[8] He, D., Xia, Y., Qin, T., Wang, L., Yu, N., Liu, T.-Y., and Ma, W.-Y. (2016a). Dual learning for machine translation. In the Annual Conference on Neural Information Processing Systems (NIPS), 2016.

[9] Tie-Yan Liu, Dual Learning: Pushing the New Frontier of Artificial Intelligence, MIFS 2016

[10] J.-Y. Zhu, T. Park, P. Isola, and A. A. Efros. Unpaired image-to-image translation using cycle-consistent adversarial networkss. arXiv preprint arXiv:1703.10593, 2017.

[11] Ian Goodfellow, NIPS 2016 Tutorial: Generative Adversarial Networks, NIPS, 2016.

[12] T. Kim, M. Cha, H. Kim, J. Lee, and J. Kim. Learning to Discover Cross-Domain Relations with Generative Adversarial Networks. ArXiv e-prints, Mar. 2017.

[13] Z. Yi, H. Zhang, P. T. Gong, et al. DualGAN: Unsupervised dual learning for image-to-image translation. arXiv preprint arXiv:1704.02510, 2017.

[14] M.-Y. Liu and O. Tuzel. Coupled generative adversarial networks. In Advances in Neural Information Processing Systems (NIPS), 2016.

[15] M.-Y. Liu, T. Breuel, and J. Kautz. Unsupervised image-to-image translation networks. arXiv preprint arXiv:1703.00848, 2017.

[16] Dong, H., Neekhara, P., Wu, C., Guo, Y.: Unsupervised image-to-image translation with generative adversarial networks. arXiv preprint arXiv:1701.02676, 2017


若對作者感興趣

可直接點擊「閱讀原文」,看他的系列文章~

相關焦點

  • 提高駕駛技術:用GAN去除(愛情)動作片中的馬賽克和衣服
    作為一名久經片場的老司機,早就想寫一些探討駕駛技術的文章。這篇就介紹利用生成式對抗網絡(GAN)的兩個基本駕駛技能:1) 去除(愛情)動作片中的馬賽克2) 給(愛情)動作片中的女孩穿(tuo)衣服生成式模型上一篇《用GAN生成二維樣本的小例子》中已經簡單介紹了GAN,這篇再簡要回顧一下生成式模型,算是補全一個來龍去脈。
  • 老司機車牌號是什麼意思啥梗?老司機車牌號怎麼用方法介紹
    老司機車牌號什麼意思 老司機車牌號怎麼用方法介紹  自從老司機這個網絡詞上線後,成為了大多數網民們專用的一個詞彙,這個詞指的是在各個網站、論壇裡接觸時間比較長,熟悉站內各種規則,內容以及技術、玩法,並且掌握著一定資源的老手。
  • 老司機:若是不懂就別開車
    當被問及老司機有什麼駕駛技術時,很多司機肯定會說出自己的駕駛經驗,其中一條就是「超車看車頭,會車看車尾」,這是很多老司機多次強調的。當被問到這句話是什麼意思時,老司機給我們詳細解釋了一下,指出道路能否保證安全就看這句話了。
  • 滷素燈照明效果那麼差,為啥老司機還堅持用?不懂夜間開車得當心
    滷素燈照明效果那麼差,為啥老司機還堅持用?不懂夜間開車得當心汽車大燈是汽車上技術含量不高,但是有非常重要的裝置了,他就像人的眼睛一樣,一輛汽車的形象氣質,全是靠大燈的形狀帶起來的!但是細心的車主可能會發現,很多老司機依然在用滷素燈,不免有人疑惑,難道老司機跟不上時代了嗎?滷素燈效果那麼差,為啥老司機還堅持用呢?其實滷素燈雖然亮度低,但它依然還在被使用是有道理的。比起疝氣燈,滷素燈的發熱更低,耗電更低,壽命也比疝氣燈要長。比起LED燈,滷素燈的穿透力更強,在雨天和霧天的能見度比LED好,尤其是在夜晚的雨天和霧天,滷素燈還能看清道路,LED就啥也看不見。
  • 一鍵去除馬賽克,這次真的來了
    機哥今天想起,之前每次說到馬賽克技術的發展時,都會有機友給我留言:我們想要的是打碼嗎?!明明更想要去除馬賽克啊……害,你們這些人吶,別以為機哥不知道你們在想啥~實際上,機哥在去年就已經給大家介紹過,iPhone 上的一個打碼功能被破解了。
  • GAN快速入門資料推薦:17種變體的Keras開原始碼,附相關論文
    這項「造假神技」的創作範圍,已經從最初的手寫數字和幾百像素小渣圖,拓展到了壁紙級高清照片、明星臉,甚至藝術畫作。心癢難耐想趕快入門?通過自己動手、探索模型代碼來學習,當然是墜吼的~如果用簡單易上手的Keras框架,那就更贊了。
  • AI技術能做什麼:一鍵去除「馬賽克」,還原圖片「真面目」
    我們經常在網上看到許多圖片有馬賽克,對於許多男網友來說這些馬賽克簡直就是人類文明的最大阻礙。但是隨著AI技術的不斷進步與發展,一鍵去除馬賽克也變得不那麼難了,因此在網上就有人開發了一款利用AI技術去除馬賽克的黑科技產品。
  • AI換臉之後,智能去除馬賽克視頻工具被瘋傳,測試結果令人意外
    用過ZAO的人都知道,這是一款號稱可以AI將自己的臉與喜歡的明星「P」到一起表演的軟體,僅需大家把自己的照片傳到ZAO上面,軟體就會通過AI的方式讓你「參演」電影片段。其實在ZAO風靡的背後,國外早就流行一款名為Deepfakes,當然兩款軟體最後的命運都比較類似,同時引發外界對隱私問題的擔憂和關注。
  • 開車用哪個導航最好?看看老司機總結的地圖對比,學會不吃虧
    開車用哪個導航最好?評論:0開車用哪個導航最好?看看老司機總結的地圖對比,學會不吃虧1/ 9開車用哪個導航最好?看看老司機總結的地圖對比,學會不吃虧猜你喜歡開車用哪個導航最好?看看老司機總結的地圖對比,學會不吃虧[車友頭條-車友號-阿喵汽車]  大家好我是喵哥,現在外出開車不可避免的都會使用導航,而比較主流的無非就是高德和百度,所以今天喵哥就跟大家對比一下百度和高德這兩款導航它們之間的優勢和劣勢,首先喵哥以廣州火車站為終點,然後兩個地圖同時規劃路線,推薦路線都是以距離最短為首頁推薦
  • 冬天開車暖風犯困怎麼辦?老司機:用這4招,既提神又省油
    汽車在當今的社會現象中還是非常普遍的同時,汽車也給人們帶來了非常多的方便,尤其是在冬天的時候,它可以有效的幫助人們抵禦寒冷,但是經常開車的司機朋友們也會發現這樣的問題,那就是在冬天開暖風的時候經常會犯困,同時如果犯困也會造成非常嚴重的危險發生,所以冬天開車暖風犯困怎麼辦?
  • 老司機什麼意思是什麼梗起源揭秘 老司機帶帶我意思
    同時,老司機的數量也隨之增長,這也是為什麼你總能在社交媒體中刷到它。  2. 老司機一詞最早出自於雲南山歌《老司機帶帶我》。    這並不是一首普通的山歌,這是一首神奇、邪惡、雷人又經典的雲南山歌。一經面世,便受到廣大觀眾的一致好評,更是獲得了「百歌之王」、「神曲之父」的美譽。  而老司機一詞也隨著歌曲的大火獲得了廣泛的傳播。
  • 掌握這幾個開車小技巧,你也可以成為老司機
    茶餘飯後,談論新手和老司機的區別時,最常用來區分兩者的通常是駕齡,認為只要開車時間足夠的長,公裡數足夠的多,那麼就能稱之為老司機。其實並非如此,老司機之所以能稱之為老司機,往往是因為一些普通駕駛者沒有掌握的開車技巧以及寶貴的駕駛經驗,小編這裡給大家總結了幾條實用的經驗技巧。
  • 開車遇「鋸齒車道」怎麼走?老司機教你一句口訣,再也不怕走錯
    導讀:開車遇「鋸齒車道」怎麼走?老司機教你一句口訣,再也不怕走錯隨著科學技術的發展,現在的交通設施越來越向智能化方向邁進,比如交管部門可以遠程調取交通電子眼來查看車主的違法行為,還可以查看道路擁堵情況和實時的交通流量,用大屏告知司機每一條路的通行情況。交通設施的智能化和信息化給司機提供了很多便利。然而,如今的智能化不僅體現在交通設施方面,還體現在路口的道路標線上面。
  • 未成年人禁止觀看:這次親測「去馬賽克」神器,我們發現…
    雖然在與馬賽克鬥爭的的長久日子裡,老司機們早已練就一身「心中無碼」的境界。但是有碼觀影,總是無法讓人生到達巔峰。所以馬賽克不是不好,只是容易被用在錯的地方,就會導致了不好的結果。從官網給出的效果圖來看,馬賽克的去除效果非常不賴的。
  • 車內有異味怎麼去除?在車內放個它,老司機都在偷偷用
    不知道大家有沒有這種感覺:無論新車還是老車,車內都會有一股難聞的味道。那麼汽車內的異味太重該怎麼去除呢?這裡有個去除汽車異味的好物,指南車汽車去異味除臭劑,特別推薦你使用,連老司機都在偷偷用呢!這款汽車除臭劑,採用的是綠色環保生物酶技術。
  • 高速開車用內循環還是外循環?老司機說了實話,新手:怎麼不早說
    目前,在國內有很多人購買私家車,車方便日常生活,有車也是身份的象徵,對於大多數車主來說,有過開車高速行駛經驗的人不在少數,高速行駛的時候,不能打開兩側的玻璃窗,因為在高速行駛中,氣流會從窗戶被切斷,發出像轟鳴聲一樣的破風聲,開車的時候會影響車主的判斷,因此也會產生安全問題,因此,很多人都有快速使用空調物理循環系統的習慣
  • 天黑後開車視野很差怎麼辦?老司機傳你一句「口訣」,照著開很穩
    白天開車時,視野比較好,路看的也比較清楚。但是到了晚上就不是這樣了,黑夜之中經常處於茫然狀態。在一些路段都是沒有路燈的,路上基本都是黑乎乎的一片,這個時候很多司機開車都非常緊張,害怕出現什麼問題。那黑天視野差我們應該怎麼開車呢?老司機傳你一句「口訣」,照著開非常穩健。「走灰不走白,見黑停下來」。這句口訣是什麼意思呢?
  • 馬賽克終於被破解了,看片除碼離我們不遠了 ?
    其實是源於一個吻,1896年,電影攝影機發明的第二年,一對「夫妻」獻上了人類影史上的第一吻, 而在當時那個封閉年代,這樣的舉動引起了人們的反感和批判。《梅・歐文和約翰・賴斯的接吻》由於當時還沒有馬賽克技術,於是人們主張色情、暴力、血腥的場面都要被剪掉。
  • ABS:點剎這麼用才是老司機
    要想開車回家轉,沒有技術不要談。幾年成為老司機,開車技術賽飛機。開車朋友都知道,少踩剎車省油耗。無奈車多路太窄,寶馬也得乖乖慢。五一過節回家轉,沒想路上堵一天。一百公裡八小時,人人都有尿不溼。如今五一第二天,還有車友在轉圈。高速免費一塊擠,怠速燒油賽點滴。
  • 老司機:這五點做好就可以
    老司機:這五點做好就可以對於現在的人來說,沒有汽車就等於是沒有了可以出行的交通工具一樣,因為現在國內汽車數量在不斷的攀升中。也導致越來越多的人為了能夠開一輛心儀的汽車,會選擇靠近半生的經歷也要考到駕照。但是現在很多人開車技術不過關,給道路交通帶來一定的安全隱患。尤其是在高速公路上行駛的時候,更加要小心萬分。那麼車開到什麼水平才可以獨自上高速?老司機表示說,只要把這5點做好就可以了。