2008年11月10日 星期一

Progressive Report(CSMC+PT)

例行進度報告:

有關SPIHT+Peakmap的peakmap壓縮數據(初步)

http://ludwig.csie.ncku.edu.tw/members/LunaDance/20081111-Peakmap_Compression_1-%5bCompression%5d-DNA.pdf

15 則留言:

SCREAMLab 提到...

這有點難看耶!

我們的目標是8Kbps to 4 Kbps, 2-ch. 我知道這有點難, 不過這就有挑戰性了吧, 我們打垮AAC就在此一舉. 拜託你了.

In case 我忘記我講過什麼. 我說應該分bands, Adaptive, Multiple codebooks, 還有嗎? 請你補充一下.

還有, 應該在peak map與 main coder之間所需佔的bit取一個折衷, 也就是Threshold要砍在哪裡很重要, 我的意思是, 簡單的應該要有.

D. N. A. 提到...
作者已經移除這則留言。
D. N. A. 提到...

http://ludwig.csie.ncku.edu.tw/members/LunaDance/peakmap_2.pdf


最近嘗試了String Distance Matching來當作儲存peakmap的方式

以上老師所提的都在投影片內

近期會先做這個RDO的嘗試,然後確認一下字串比對這邊有沒有bug

目前292 per frame 朝一百邁進!

好想永遠這樣 提到...

如果目標訂在4~8Kbps, 2-ch, 44.1KHz,那麼就是speech,請一定要參考LPC-based的"想法",如何儘早表現出"Format"。
如果concern significant map overhead,另外可以考慮如何利用psychoauostic phenomenon來改變coding order,同時間保證音質。

SCREAMLab 提到...

維城, 假如我講錯請更正我.

1. 利用LPC modeling來產生那個Binary的Peak map, 然後記錄LPC coef就OK了. 這樣的話, 雖然比較不準, 可是peak map的overhead會比較省. 對texture coding 也還是有幫助.

2. 利用心理模型來產生另一種reordering的演算法, overhead可能小一點, 但是對音值會有正面的改善.

好想永遠這樣 提到...

老師說的是對的,我再對這兩點做點補充:
1. LPC modelling可以很方便地設定一個base layer(例如:14階),overhead應該能控制在一個upper bound以下。(是否能做成progressive式的LPC?MDCT跟LPC如何對應?)
2. 基本上scalable coder使用psychoacoustic model差不多可以確定是要用"被動式"的,也就是說利用前一次refined的結果來當作參考音源(形成masking threshould),跟mpeg video利用前一張decoded image來做motion estimation一樣的想法,因為這樣是zero overhead。

D. N. A. 提到...

想問一下學長XD

1. progressive LPC 不太了解@@

2. "被動式"的意義是什麼,是指用X(n-k) 來預測X(n)的方式嗎(k is constant)

87showmin 提到...

順便問些笨問題 :p

1. progressive LPC是指order可隨著目前的進展改變,以逼近最少overhead嗎?還沒看過這種做法。

2. 套用psychoacoustic model來保留音質可以理解,但不太清楚為何它跟被動式編碼的關係哩,如果不套用,是否一樣可以用被動式的方式達到zero overhead效果?

好想永遠這樣 提到...

1.對於第一點,showmin的提問是對的,progressive LPC只是我的一種想法,可行與否並不明確,所以我也同時丟出了另一個問題,是否可以從MDCT和LPC filter間找出關聯?不過這應該擺在傳統LPC作法在目前框架上所做的實驗結果,才能進一步評估。
2.對於第二點,D.N.A.的理解是對的,所謂的"被動"是相對於由原音分析出masking curve這樣的動作,這樣的masking curve是一種supervisal的資訊,它指出"哪一個頻率不需要補強",不存在被編碼的data bitstream中,只能以side information存在不同data-rate的bitstream;相反地,以lower bitrate bitstream所解出來的音訊,算出的masking curve,事實上提供了一個相反的資訊,就是"哪一個頻率還可以再補強",這樣的作法基本上是overhead free的。被動式的PM雖然在high bitrate的壓縮效率比傳統的低,但是在low bitrate卻一定比較好。

匿名 提到...

關於第二點, 我想補充一下可能的做法.

傳統的PM計算後事實上是將PM的資訊用Scalefactor記錄下來, 當然會耗掉一些bits. 利用維城提的方式雖然可以不花bits, 帶來的影響可能是quality的降低. 好了, 有實作方法嗎? 有折衷方案嗎?

1. 我覺得可以利用現行AAC的做法, 對不同bit rate情況下, AAC會採取的scalefactors以及當時所解出來的係數來當訓練資料. 當我們的coder解出一些資料後, 可以根據一定法則決定接下來的refinement bits是要給誰的或新的bits要讓哪一些係數進來. 這可以套用在原來的 AAC嗎?

2. 假如上面做法不夠準, 那麼加一點點side information可以變好嗎?

好想永遠這樣 提到...

我可能要強調一下,就我的了解,PM的運用還是跟coder本身是fixed-rate或scalable coder有本質上不可分割的關係;而我的觀察,就fixed-rate觀點,AAC應該已經把PM的運用推到一個極致(指scalefactor選擇的影響),而scalable觀點,主要可以有兩個好處:就是scalability和在low bitrate下可以達到比較好的quality(理論上);所以先建立一個base layer(即某個bitrate以下或某個quality以下),是屬於fixed-rate的範圍,再依序增加quality就是scalable的範圍。
由AAC採用SBR和Parametric coding,我認為兩種不同壓縮觀點的決戰點是在中低bitrate,只要scalable coder在中低bitrate有非常好的表現,高bitrate在聽覺感知上與fixed-rate coder的差異是非常小的,而scalable coder的其他好處則是fixed-rate coder無法彌補的。

匿名 提到...

我回憶一下過去小路做的東西:

小路先建立一個依照PM找出各個band的Quantization parameters然後進行SPIHT coding, 在第一次沒辦法被壓縮的係數就被掃到第二個tree, 有剩下的bits的情況下才被編碼, 但是這方法的問題是:

能符合PM所需消耗的bits已經在100K bps了, 所以我們能improve的只有在100k bps以上, 這實在是不太有用, 因為一般人聽不出來差別.

問題出在, 我們是以最好的狀況估的, 而不是像AAC一樣一邊壓一邊調, 在我們的coder不能比AAC有效率的情況下要比他好是不可能的, 因為我們缺乏adaptive機制.

怎麼辦?

匿名 提到...

維城提出的看法inspire我思維的是:

1. 可以不要像AAC一樣花一堆bits記錄scalefactor嗎?
2. 可以用解出來的資訊(或已壓縮的資料)配合上一些side information來決定接下來bits要分給哪一個bands? 其實就是減少這些bands的Quantization step.
3. 承接第二點要做的是, 我們應該倒過來先由low bit rate來壓, 而不是一下子就由high rate來壓.
4. 這方式應該同時適合bit plane coding與一般的AAC吧!!!???

匿名 提到...

DNA跟我討論過:

假如我們先對high rate與low rate的spectrum與scalefactor進行profiling, 然後用簡單的方式記錄之. 這樣, 當我們的bit rate由低到高時, 可以一步步依照此profiles來決定bits要給誰.

還有誰要補充的嗎?

SCREAMLab 提到...

請Gary開一串討論他要實驗的Perceptual model的做法