分類: 未分類

  • Python 大量修改陣列賦值 – 陣列索引賦值法

    在 Python 裡面用索引取陣列裡面的值,通常我們會這麼寫:

    var = tensor[index]

    進階一點,如果你今天得到的索引值是一張陣列,而且你需要得到一張陣列的返回值呢?
    在 C 語言裡面,比較直覺的方法可能是 For loop,
    但是我們都用到 Python 了,該用高級一點的方法了!

    以下介紹 Python (list, numpy 適用)中 PyTorch 的 tensor 陣列索引賦值法:

    data = np.random.randint(0,1023, size=(32, 32))
    data = torch.from_numpy(data)
    index = np.argmin(data, axis=1)
    data = data.contiguous().view(-1)
    base = np.arange(0,32)*32
    index = index + base
    output = data[index]
    上面程式碼等效:

    output = np.min(data, axis=1)

    這樣你會問我:哇!Ben 為什麼一行能解決的問題,你要這麼費工?

    傻傻的,
    今天是因為有 np.min() 可以用,如果你今天要取得的並不是這麼簡單的統計值呢?
    這種賦值法的價值在於核心演算法複雜時,
    還能提供高效率的計算複雜度。
    讓我們來看一個比較實際的例子,
    當你今天是一個通訊所的學生,老師要你量化 16-QAM 的訊號:

    B, C, H  = 32000, 3, 16
    Q = 16
    data = np.random.randint(0,1023, size=(B, C, H))
    data = torch.from_numpy(data)
    data = data.contiguous().view(-1)
    
    ###################   Kernel    #########################
    q_list = torch.unsqueeze(torch.arange(1,Q+1)*64, dim=0)
    data = torch.unsqueeze(data, dim=1).repeat(1, Q)
    q_matrix = q_list.repeat(int(list(data.size())[0]), 1)
    index = np.argmin((data - q_matrix)**2, axis=1)
    feature = q_list[0, index]
    #########################################################
    

    上述核心來自於我先前提到的 KNN 算法

    既然都算出來了,讓我們來比較與 double for loop 賦值 的速度:

    f1s = time.time()
    feature = q_list[0, index]
    f1e = time.time()
    print("non-loop processing time: " + "%.3f" %(f1e-f1s))
    
    feature2 = torch.ones(int(list(data.size())[0]))
    f2s = time.time()
    k=0
    for i in index:
        for j in torch.arange(0,len(q_list[0]+1)):
            if j == i:
                feature2[k] = q_list[0][int(j)]
                k=k+1
                break
    f2e = time.time()
    print("for-loop processing time: " + "%.3f" %(f2e-f2s))
    
    feature = feature.type(torch.FloatTensor)
    print("feature = feature2? : " + str(torch.equal(feature, feature2)))
    
    差了六十萬倍呢!
    結論:當數據足夠大時,陣列索引賦值法會與迴圈賦值法速度差距會越來越明顯。


    如果對於文章內容有疑問的,歡迎聯絡我: wuyiulin@gmail.com


  • Cross Entropy 與 Binary Cross Entropy 之選擇。

     


    To be, or not to be, that is the question.

    BY William Shakespeare

    選擇 CE 或是 BCE,這是一個問題。

    要解答這個問題,我們要從兩個層面探討:

    1. 前置 Activation funtion 選擇(Softmax, Sigmoid)
    2. 下游任務的目標


    前置 Activation funtion 選擇:


    Softmax 與 Sigmoid 都是把數值壓縮到 [0, 1] 區間的函數,
    差別在於 Softmax 會考慮整體數值向量做處理。
    舉例來說:
    如果給定向量 S = [1, 2, 3]:
    Softmax(S) = [0.09003057 0.24472847 0.66524096]
    Sigmoid(S) = [0.73105858 0.88079708 0.95257413]
    Softmax 輸出的總和會是 1,會有抑制相對小數值的作用;
    Sigmoid 則會把每個輸出入都視為獨立去做壓縮。
    下游任務的目標:

    目前是還沒看到拿 CE 或 BCE 做分類以外的任務,
    所以這邊只探討三種分類情境。

    • 單標籤二分類
    • 單標籤多分類
    • 多標籤多分類

    先解釋一下標籤跟分類的意思,
    這邊標籤指的是 Loss function  input 進去的那張 Ground True,
    單標籤 = 對於每個樣本來說只有一個屬性(或類別)標成對的(1),其他都是 0 。

    分類的意思是依據任務需求分成幾類,
    不一定一個標籤對一個類別。


    舉例來說,如果有一則新聞標題是:

    “職棒啦啦隊性愛影片外流”
    假設有棒球、啦啦隊、性愛的標籤,
    那要歸類到棒球、啦啦隊、性愛,還是八卦?
    這就是一個多標籤多分類的問題。
    單標籤二分類:


    CE + Softmax 可以做, BCE + Sigmoid 也可以做。

    有一派說法是 BCE 要用一個節點
    (意指只提供一個類的正確率,第二類正確率則用 1 – 該類正確率去算。),
    否則用兩個節點的話,因為有可能你模型訓練出來會給出 [1, 1]。
    (模型認為這個樣本兩個類型都符合,直接做成多標籤任務。)
    但是根據我拿 BCE 做單標籤多分類的結論,
    應該不會出現這種現象。
    單標籤多分類:

    CE + Softmax 可以做, BCE + Sigmoid 也可以做。
    接續上面一個節點的問題,我認為就算給出 [1, 1] 的 logit 預測結果,
    訓練後也會乘上 Ground True 壓抑掉,反而因為有提供預測錯誤標籤的梯度收斂會更快。
    提供 CE 與 BCE 公式參考:
    多標籤多分類:


    CE + Softmax 完全不能做,因為 Softmax 會把最大機率以外的其他機率壓抑掉。
    那就用 CE + Sigmoid 不就好了(天真),
    不能這樣做的原因是 CE 只會照正確的標籤分類給梯度,
    多標籤裡面會難以收斂。
    所以這邊通常拿 BCE + Sigmoid 來做。
    結論:

    腦袋當機不知道要放什麼 Loss function 的時候拿 BCE 先試試看就對了,
    反正這顆很泛用。
    單標籤多分類任務只關心一個標籤,其他分類梯度不管的,再拿 CE + Softmax 減少計算量。
    以上。

  • [論文筆記]POINTVIEW-GCN SOTA of ModelNet40 導讀

     

    沒錯又是我,實驗是越來越好了。

    總之學弟講了一個 ModelNet40 有人 Classfication 的 Overall ACC 做到 95%,

    所以大頭很開心地要我去 Survey 一下前幾名的方法來做。

    目前第一名的方法就是這款 POINTVIEW-GCN,拿多視角的方法來分類。

    主架構有兩個亮點:

    1. NonLocal, Local 的 Skip connection:

    簡單來說就是每層神經網路分成兩路輸出, Local 會直接進 Skip connection 後 Concat 到最後一層;

    NonLacl 放進下一層繼續轉。

    2. Selective View-Sampling(SVS):

    從多視圖裡面找最好的那張,再傳下去。

    個人認為是簡單的資料增強。

    這個架構是怎麼更新參數呢?

    首先我們知道這個架構有四個視圖(G),每個的後綴是 j 。

    先來看 Local Conv 的部分,

    在每個視圖裡面的特徵為:

    L為 ReLU 函數。

    A是與鄰居關係的矩陣(抓特徵的意思,視為 KNN 結果。)

    右側的Fj 應該是誤植,應該是表上一層 F(j-1) 的意思。

    W,alpha 是訓練來的權重參數、矩陣。

     完成 Local Conv 的 Fj 會送進 Skip connection 到最後一層。

    有 Local 當然有 NonLocal 啊!

    那 NonLocal 是 Non 在哪裡?

    NonLocal Conv 其實就是多了一個更新比較遠節點的部分,

    (因為 Local Conv 做了一次 KNN,

     而 NonLocal Conv 的 input 是 Local Conv 的 output,

     這兩個的 Conv 其實有前後的關係。)

    論文裡面利用 message 函數 來做這件事情。

    j 是 G視圖 的層級,i,p 是 node 的編號(F有 N 個 node,i & p 屬於 N。)

    這樣應該比較好理解。

    最後那個 R(.) A.K.A 相關函數,我一直看不太懂,

    總之在程式碼裡面是長這樣的,首先 input 是一顆尺寸 (X,Y,Z) 的 Feature:

    R(.)

    有行 參數 20 的,是用 repeat 做出來的。

    所以我們用 R(.)得到 message 函數 的結果 = Feature M。

    最後利用 M 來更新參數:

    實際上就是 concat 起來。 

    經過 R(.)還有 C(.),據論文所說是要更新參數啦,

    寫得有模有樣,但是很懷疑單純 concat 起來是要更新什麼參數?

    或許進到下一層 Conv 可以利用這些資訊?

    加上這篇只有給出 Overall 的 數據(做最好的那次數據,不是平均。),

    這邊我打個大大的問號。

    以上,大概是這篇的簡介。

    我對於這篇貢獻的理解是讓最後的 Feature 保留粗的特徵(因為只抓附近鄰居+少層 Conv),

    越後面的 G 視圖 特徵越抓越遠、越細。

    與我手上這篇 DGCNN 的做法最大的區別應該是少了每層 KNN + 多視圖的 SVS。

    Skip connection it’s worked for me.

    附上論文連結:https://ieeexplore.ieee.org/document/9506426

    與 GIthub Repo:https://github.com/SMohammadi89/PointView-GCN

    以上

  • [論文筆記] Point2SpatialCapsule 看完這篇就入門 CapsuleNet!

     

    最近要提升手上模型分類的準確度,

    所以在讀各種各樣的論文(#

    這篇主要發想來自 Geoffrey E. Hinton 大師覺得 BP 根本太荒謬了,

    人腦不會有 BP 這種架構,他想把神經網路更優化、更趨近於人腦所做的 Capsule 計畫。

    (避免誤會,這篇是左岸同胞的延伸論文,並不是 Geoffrey E. Hinton 大師手筆。

    CapsuleNet 架構最主要想解決的問題是:

    1.傳統 CNN 需要大量資料學習

    2.提升 Permutation invariance

    (廢話xD 一堆論文都在做這東西)

    這篇論文與 CapsuleNet 架構最大的不同就是:

    把空間特徵塞進去膠囊裡面

    簡單用一張圖解釋:

    人腦辨識左邊是R的過程是把圖型旋轉過來,但是 CNN 是需要看過很多不同狀態的R。

    像是轉了30度、60度、90度 的 R 都拿下去訓練,最後把這些結果分給 R 這個 Label,

    CNN 才知道:噢?這個是R?

    大師覺得要解決這種問題,就要從圖型的內部結構下手。

    像是人臉的眼睛會在鼻子的上面、鼻子在嘴巴的上面、嘴巴會在下巴的上面。

    只要獲得這一連串的內部對應關係,神經網路就不用每個角度再造一次車輪。

    這篇怎麼做的?



    Geometric Feature Aggregation

    Multi-Scale Local Feature Extraction

    首先用 GMM (Gaussian Mixture Model – Free Mind) + MSG (Multi-Scale Grouping)

    抓相鄰點特徵。

    作者說因為計算量會比較小所以用 GMM 而不是 K-Means。

    這點我認為是完全唬爛,

    GMM的計算量、變數量都比 K-Means 要來得大。


    經過 MSG抓特徵的影響

    經過 MSG 抓特徵後會有特徵太相似的困擾,

    設想一個狀況,上圖是 MSG 抓兩層特徵 ( K=2 )  的狀況下的圖示。

    外面那圈重疊的面積比裡面那圈大很多,對吧?

    面積在這裡可以換成機率,所以對於相鄰點來說:

    外面那圈的大尺度抓到的特徵有很大的機率會很像。

    Multi-Scale Shuffling

    洗牌!(T代表抓取的尺度,C代表通道維度)

    所以我們做一個洗牌的動作(文字癌),把大小尺度的特徵混在一起增強特徵。

    Spatial Relationship Aggregation

    Rearrange and Squashing

    其中 C(qk) 代表 xyz 軸輸入、 C(yk) 代表 MLP 過後的 高維度特徵。
    C(Sk) 僅代表 C(qk) 與 C(yk)  concat 起來,也是本篇最大的改進
    ui是 C(Sk) 經過全連接層做出來的東西,論文用 256個 輸出的全連接層做。
    物理意義上ui代表每個不同的特徵(顏色、深度、方向…等)。
    以下詳細解說膠囊如何運作:

    我們要知道 CapsuleNet 架構裡面,
    每個特徵點被觸發的方式是由底層的膠囊一層一層傳播上去。

    至於為什麼膠囊架構會長成這樣,這篇講得很好,我就不多贅述了。
    fixation point 的部分
    首先從第 i 層抓一個膠囊啟動,輸出向量為 Ui。
    這個 Ui 會乘上權重矩陣 變成預測的 hat Uij,
    hat Uij 的物理意義是估計 Uj 這顆膠囊的輸出向量來說 Ui 輸出向量的比重。

    然後乘上耦合函數 Cij 後用 squashing函數 做真實輸出 -> 這顆膠囊的真實輸出 Vj
    乘上耦合函數 Cij 的物理意義是當 Ui 這顆膠囊對於 Uj 貢獻巨大時,
    Cij 會趨近於一(或等於一),Uj 的參數會全部灌給 Uj 去做輸出。
    很巧妙的一個設計。

    CapsuleNet 系列都有一個 squashing 函式,
    這邊給出的解釋是 Geoffrey E. Hinton 大師 希望膠囊的長度(本篇膠囊=ui)能夠代表機率,
    長度越長的膠囊長度越要趨近於一、長度越短的膠囊長度要趨近於零。

    所以這個函數會把每個向量(膠囊)長度正規化,
    圖形會長這樣:

    X軸代表原向量長度、Y軸代表經過函數轉換後乘上的乘積。


    這邊的長度要用 Two-norm 帶入,否則會證不出來。

    然後特別要注意的一點是這裡的 squashing 只會在 Vj 做一次,
    第一行 squashing 的函式與 第三行的 Ui 沒有半點毛線關係。
    這篇看很久都看不透,一部分是因為數學符號混用,
    強烈建議這篇方程式要跟原版論文對照著看。
    (嚴重懷疑變數會長這麼醜,是為了規避論文重疊性比對。)

    後面的 bij 就是迭代真實輸出與估計去更新 Cij 而已。


  • [程式碼筆記] 利用程式碼實現 KNN

     因為前陣子在審視架構的時候,亂報(X)沒讀熟(O),

    所以架構被老師質疑,被遣送回實驗室重讀一遍 DGCNN 怎麼刻 KNN 的部分?

    以下的 KNN 程式碼 都是 base on DGCNN 的 model.py 裡面的 KNN function。

    前情提要:

    1. KNN 要幹嘛?

    :拿到兩點的歐式距離。


    2. 歐式距離是什麼?

    吃公式:

    我們塞進 KNN function 的資料 x 會長得像是:

    [ Batch_size, Channel, Number_of_point ]

    其中 Channel 是資料維度的意思,如果是三維的 x, y ,z 座標,

    Channel 就會等於 3。

    接下來來看程式碼:

    inner = -2*torch.matmul(x.transpose(2, 1), x)

    因為 torch.matmul 代表矩陣相乘

    ineer 出來的資料尺寸就會是

    [ Batch_size, Number_of_point , Number_of_point ]

    令 P1 = [ x1, y1, z1], P2 =[ x2, y2, z2]

    ineer 所代表的數學意義為

    [ x1*x2 + y1*y2 + z1*z2]


    再來看第二行程式碼:


    xx = torch.sum(x**2, dim=1, keepdim=True)


    xx 出來的資料尺寸為

    Batch_size1 , Number_of_point ]

    因為 keepdim=True 的關係,所有 sum 起來的資料會存到第一格。


    xx 所代表的數學意義為

    [x1^2 + y1^2 + z1^2, … , xn^2 + yn^2 + zn^2]


    最後一行程式碼就是組合起來,變成歐式距離的平方:


    pairwise_distance = -xx - inner - xx.transpose(2, 1)

    會變成:

    就是歐式距離平方的展開。
    至於負號是為了後面要做 TopK 所以放上的。
    以上 ODO



  • [論文筆記] SE-NET 的威力加強版 – Convolutional Block Attention Module (CBAM)

     

    我為什麼要讀這篇論文?


    這篇論文可以做什麼?


    這篇論文怎麼做?

    首先,因為我的 DGCNN 模型遭遇到了訓練瓶頸,

    所以我到處找論文來 inprove 模型的準確度。

    這篇論文可以加強模型的準確度,前提是 base on ResNet-50。

    裡面提到這種架構可以插在任意的 convolution 層中間,

    是不會消耗太多計算量的輕量型架構。

    這篇論文是從 SE-Net 加強而來,

    最主要的差別在於 SE-Net 只對 Channel 做 Attention Module,

    而 CBAM 對 Spatial 也做了 Attention Module 並且把它加進來。

    整個核心觀念就是用 attention Module 對 CNN 去優化,

    至於 Attention Module 是什麼概念可以參考上一篇 SE-Net

    整個架構會長這樣:

    圖一:CBAM整體架構

    圖二:Channel Attention 架構

    請參照圖一,那顆 Feature 的尺寸是 C x H x W,

    這對解釋接下來的方程式很有幫助。
    想像那顆 Feature 是一顆生吐司,每一片都是不同口味。
    其中有地瓜、甜芋頭、秋葵三種口味,
    我是一個特別喜歡甜芋頭、極度討厭秋葵的人,
    Channel Attention 在做的事情就是找出我喜歡的部分,
    然後想辦法甜芋頭變得更甜、秋葵變得更無味、讓我更喜歡這顆生吐司。
    這顆生吐司(Feature)在我心目中的價值就會越來越高。
    我不知道未來的女朋友會不會閒到來看部落格,
    但是如果妳覺得火鍋裡面一定要放芋頭,
    我會好好思考我們之間的關係。

    會把芋頭放進火鍋都是邪教徒吧?





    從公式來看架構,剛剛(圖一)說過了尺寸很重要。
    這部分會叫 Channel Attention 就是因為它是從 Channel 下去切割的。
    Maxpooling 與 Avgpooling 過後的資料尺寸為 C x 1 x 1 的一條濃縮吐司。
    MC(F) 就是整個做完的特徵圖(資料)、sigma = sigmoid operator;
    W0 與 W1 是結構圖中間進 MLP 的權重,我在 SE-Net 有講過就不贅述了。

    至於最重要的,為什麼要做 Maxpooling + Avgpooling?

    原作者表示:啊這樣可以更精確地分別每個通道的權重…(幹話。

    我自己的觀察:

    從 PointConv 這篇論文提到 PointNet 的問題在於 Maxpooling 只能提供 global 或是 local 的 Feature。

    SE-Net 使用 Avgpooling 能夠促進模型的性能。

    所以小孩子才做選擇,我們兩種混在一起做撒尿牛丸!

    圖三:Spatial Attention 架構
    解釋一下為什麼這個叫 Spatial Attention ,因為他是切 1 x H x W。
    所以得到的特徵是 H x W 在每個通道的值(也就是空間位置)。
    比較需要解釋的是 f 7*7,這顆是 Hyperparameter,試出來最好的 kernel。

    結論:

    根據數據來看 CBAM base on ResNet-50 的時候,
    最差那個圖的錯誤率(Top-1 Error)減少了 1.9%。
    這種 Attention 架構是一定會變好,
    但是我個人猜測要在某些架構的前提下才會變好比較多。
    至於CBAM 加進 DGCNN 會不會變好?
    我還沒嘗試,但是根據上次 SE-NET 的經驗,
    是增加了 萬分之十的準確率。
    這次預估能增加萬分之十五應該就很不錯了(O)
  • 【青春紀行】桃園高雄 11小時 - 無價之旅

    桃園到高雄 11小時心得

    媽我回來啦!我阿霖啊!


      我一定是瘋了才跪在電腦前打這篇文章。


      2015/12/25 晚上十點 我與其他兩個室友從元智的車棚出發

      目的地:高雄 鳳山火車站


      距離:353km

      

      桃園到新竹



      一路沿著台一前進,這邊因為室友有一個新竹人的關係,這邊我們騎得比較順,沒有下

    來看地圖,中途有點小雨。

      不過因為一個室友一個紅燈恍神,我差點騎著Q龍親上室友的GSR

      (後煞前煞鎖死,右手手動ABS)

      最後停在經國路上麥當勞休息,約莫11:40到達。


      新竹到台中

      

      這邊我們切西濱(台61),一路很順,不用擔心有半夜想吃永和豆漿的阿伯出來Gank。

      因為路況不熟加上西濱尾段施工一路走走停停。

      大約一點半到台中路上一間全家,休息到兩點出頭繼續出發。

      不過這時間因為西濱催太爽所以右手開始出現發麻症狀。

      台中到彰化



        台中進彰化是一條橋,過了以後就是彰化。

      大約3:40進彰化市區,西濱彰化只有規畫兩線道,隨時需要注意有阿伯出來Gank。

      

      彰化堪稱整條路線裡面最亂的地方,隨時要鑽進田裡找下一條路。
      
      
      這時候會感覺自己體力消失最快,進市區的時候我們一行人一直保持表速110穿越……

      (我還能活著真好)

      

      彰化到嘉義  雲林是一個很小的地方,晃一下就過去了。

      
      一進嘉義體力瞬間消失,想說再進台南就到高雄了一個鬆懈。

      大概五點到麥當勞

      在中正路上麥當勞打呼了20分鐘

      嘉義的路很大條很好騎,但是脫離市區(太保附近?)要接出去台南的地方很亂,不知

    道該怎麼騎。

      尤其這時間又接近通勤時間(早上六點左右),該出來賣菜的阿婆、買菜的大嬸都出來

    了。

      在嘉義終於完成我一路騎車騎著看到天亮的願望了XDDDD

      只是跟浪漫扯不太上邊,反正有一種爆肝的感覺QQQQQQQQQ

      台南近郊>關廟阿蓮

      這地方就是最危險的路,差點死在這鬼地方!

      不為什麼,這時騎車的總時數來到八小時 (約莫六點半)

      看著台一上的牌子:台南市區  45 公里

      這句話就夠抹殺我的意志力了,接下來一百公里我與室友都是屬於脫隊狀態。

      
      我甚至出現短暫記憶喪失:

      "已經綠燈了嗎?我怎麼進一檔加油門了?

      "靠北!我不是剛進一檔?這聲音明明就是四檔!我現在是要勾五檔嗎?

      "喔台南市區14公里

        
      一路還在某間療養院前面停下來靠著院子前面的白板樹睡了一下
      

      直到經過奇美醫院才覺得回到市區。

      中途在市區全家與室友會合,喝了人生中第一罐為了補充精神的蠻牛

      過了阿蓮看看鳳火還有26公里,我實在快起肖!

      這邊因為速度太慢,於是又與室友脫隊,想切到岡山看看有沒有早餐能吃。

      路上感覺就是回到高雄了,我索性從岡山切台一出去民族路四檔萬轉。

      我還蠻期待經過興達港能夠聞到海風的味道,忘記那段路早就過了TAT

      高雄

      到高雄後我的機油就跳燈了,Q龍整個騎起來就像狼R=_=

      去民族路上中油上個廁所馬上從本館路接青年路回鳳火。

      在本館路上,原本想拋棄室友去吃芳城市早餐,不過基於良心的譴責XDDD

      之後就是去鳳山火車站裡面的7-11弄了一杯美式暖暖手,順便像是老人坐在藤椅上

    曬太陽一般問著自己:我真的騎回來高雄了嗎?

      一邊等著室友吃早餐等搭車一邊像是老人曬太陽的感覺不錯,其實。


      後記  我再也不要趕時間騎這麼快了......

      我覺得我還是不要肖想重機夢好了XD 心臟不夠大顆

      然後,老媽很抱歉我回高雄沒回家顆顆顆,我現在在宿舍發這篇文。

      (別忘記你在高雄還有一個媽!)
      這趟旅程超便宜的啦~桃高用一桶油(汽油加台塑95+ 跳一格燈加到滿175元)

      下次機油應該用好一點的10W50,熱衰讓Q龍騎起來像狼R……

      

      我一定是瘋了才跪在電腦前打這篇文章。












      僅以此篇文章紀念19歲的我__2015.12.28 00:21

  • Tag&Rename-簡單好用的音樂名稱編輯器


    Tag&Rename

    簡單好用的音樂名稱編輯器

      想必大家都有手上有音樂檔案卻缺失名稱或是亂碼的問題吧?
         
            今天 Ben 要來教你如何解決它!
      首先,你必須去弄到 Tag&Rename 這個軟體 試著去找找。

      接下來就是教學了,讓我們請到 Jacky Cheung 張學友 來幫我們做示範!

      

    喔! Ben 我有一張學友的專輯,但是怎麼都是不明專輯?

    沒問題!讓我來!

    這裡來為你示範怎麼修改單首歌曲的標籤 (也就是Tag)

    點選左上角的遮罩,並且輸入你想要的名稱儲存就好囉!

    白癡 Ben 就跟你說我的是一整張專輯吼?

    別急!點選旁邊的多檔案標籤編輯器! ( 或是Ctrl+F4 )



    然後讓我們回到 Foobar2000 看看!

    哇!爾美林!

    是否?

    其他標籤也如法炮製看看?

    當我們回到 Foobar2000 的時候 ( 左上角 )


    是不是覺得 爾美林?

    以往的未知的演出者一瞬間變成歌王-張學友

    是不是很潮?

    我們在 ” Walkman ” 裡面也能正常顯示唷!

    這種改一次用一生的方法還不快學起來?

    讓你手機裡面的不明演出者通通消失吧~

    Ben 下台一鞠躬 !

  • MegaDownloader – 穩定好用的第三方下載器 (Only For MEGA!)

    MegaDownloader

    穩定好用的第三方下載器

    (Only For MEGA)

      沒錯!Mega 空間(前身為 MU),在一陣片片風雲中

    被 FBI 抄家以後又復活啦!

      於是有志(有情有液?)的網友為了 Mega 寫了這款免

    費、好用兩者兼具的軟體:

    MegaDownloader】!

      

      
      主介面大概長這樣子,俗擱有力!

      (也常常讓人不知道要幹嘛,笑。)

      因為有附贈軟體之情事發生!

      
    在此不推薦各位使用 v9.0 Beta 以後的版本。

      什麼?妳說妳已經有 ” hao 123 “護身?

      那還是去吧,孩子 XD

      


      咳咳!接著我們點開右上角的齒輪看看究竟這個葫蘆裡

    面賣的是什麼藥!
      



      傳說中硬碟從A排到Z都不夠用的筆者是使用G:當作資料碟使用!所以預設路徑當然是排在G槽囉!
      至於 Movie 嘛?那就是男人的浪漫了......

    至少我是這麼認為!

    (Adult Movie!)


      知道了基本的路徑設定後,我們來看看比較常用的功能!

      

      我解釋一下各項功能:

      使用者資料如果你只是個載片宅,就不用填了。這個功能最主要是登入 Mega 下載朋友分享給你的資料。但是我很擔心個資外洩,所以我也沒填。
      
      擷取剪貼簿下載:這項功能會自動幫你把複製的 Mega 連結加入下載任務列!

      執行本程式時自動下載:這項功能大多用在載上次關機前還沒載好的資料。

      Windows 啟動時自動執行:這項功能實在是很雞肋,強烈建議別開!一是因為吃你的開機記憶體,拖慢開機速度!二是因為,要是你上次下載一些很露骨的資料
    (EX:18Onlygirls 之類的......)

    然後心儀的妹子又坐在旁邊等你D資料下來做PPT就GG惹!

    「欸!這個 18Onlygirls 是什麼啊?好像才剛下載好欸!?」

    「啊!不要!不要點開!!」

      你會很感謝一個叫 Ben 的傢伙曾提醒過你!


        不要開啟這個鬼功能!


      



      自動解壓縮 優先權:這個完全看不懂它在混什麼吃的選項其實大有來頭!

      只要點選了這個選項,對!這個選項就有另外兩種模式可以選擇!

      一個是一般,一個是低。

      想必載過資料的紳士、淑女們都知道溫良恭儉讓的暈倒死不會讓我們一次解壓縮兩個壓縮檔。

      所以你只要點選了自動解壓縮,它就會自動幫你解壓縮。

      至於兩種選項的差別,就是當你下載好了,但是有一堆解壓縮序列在排隊的時候,一般的選項下會自動進入序列排隊。
      
      至於低,就是等你那群資料解壓縮好了才解壓縮這裡的資料。

      每個封裝各自建立資料夾舉例來說,如果我下載了一個 18Onlygirls 的檔案,沒開之前它的路徑長這樣:(G:Movie18OnlyGirls.avi),開了以後長這樣:(G:Movie18OnlyGirls18OnlyGirls.avi)。
      

      大致上就是這樣,需要注意的地方就是我們知道MEGA常常在耍傲嬌、移檔案,但是那些動作都是以"天"為單位,所以幾分後重新下載,個人覺得是沒什麼用。
      

      還有"同時下載數量"與"每個檔案的連線數",最高就是"10",管你是超強 I7-4930K 或什麼的?

      最高就是10!多了不行!

    至於該死的串流 VLC

    Ben 我還在進行相關測試,貌似太大的檔案就不能串流?

    我正在找極限,家裡配備是 100M/20M,所以應該是軟體設定極限問題,並不是我的設備問題。

    各位網民,我們下次見!

    期待我摸索出用串流線上看片的功能!

    附上官方網站(同學不要裝最新版R,試著找找免安裝0.8x)

  • 大家安安,今天是我用部落格的第一天!

    我創立這個部落格主要是為了組一台新電腦!
    AMD A10 5800K!
    本部落格主要以3C產品開箱、單車日記、地方食記這三個方向為主軸!
    還請各位多多支持!不吝指教!