Page 1 sur 1

Resolution et valeur CRF optimales pour un debit fixe

Posté : ven. 30 oct., 2015 19:29
par leon1789
Bonsoir,

EDIT : mince, j'ai mis un accent dans le titre, et du coup, il n'apparaît pas...
Resolution et valeur CRF optimales pour un débit fixe

Petite expérience, puis question :)

J'ai pris un film 1080p et je l'ai encodé à plusieurs débits (de 400 kb/s à 1700 kb/s) et plusieurs résolutions (allant de 640 x 360 à 1920 x 1080). Ensuite j'ai comparé la vidéo originale aux vidéos compressées en agrandissant toutes ces dernières à 1920 x 1080 (simulant la vision sur une TV full HD).
La comparaison se fait suivant le critère numérique VQM, mesurant la fidélité de la compression (comme on peut le faire avec le PSNR ou le SSIM).

Étrangement (en tout cas, je ne m'y attendais pas), en comparant des vidéos de même débit, mais avec des résolutions différentes, les compressions dont le Rate Factor est compris entre 23 et 25 comptent systématiquement parmi les meilleures (suivant le VQM).

Par exemple (les résolutions sont bâtardes, mais peu importe) :

-- si un encodage 1920 x 1080 crf 27 donne un certain débit, alors, tout en gardant le même débit, il vaut mieux diminuer la résolution à 1536 x 864 où le Rate Factor serait a priori compris entre 23 et 25. Cela diminuerait la formation de blocs de la vidéo compressée dû à une trop grande résolution.

-- si un encodage 1280 x 720 crf 20 donne un certain débit, alors, tout en gardant le même débit, il vaut mieux augmenter la résolution à 1856 x 1044 (ou simplement 1920 x 1080) où le Rate Factor serait a priori compris entre 23 et 25. Cela diminuerait le flou de la vidéo compressée dû à une trop petite résolution.

En conséquence, il vaut mieux choisir la valeur CRF entre 23 et 25, et prendre la résolution adaptée au débit désiré.
Choisir une résolution inférieure et diminuer la valeur du CRF (de sorte à conserver le même débit) serait une mauvaise idée.
Faire le contraire, augmenter la valeur CRF et choisir une résolution supérieure (en conservant le même débit), idem...

Une étude sur un seul film, c'est peu (euphémisme), même s'il y a beaucoup d'images, et cela demande à être confirmer. Je me demande si cette plage 23-25 est "générale" ou liée au film que j'ai analysé... En fait, même si une plage "optimale" existait, elle ne serait probablement pas la même pour tout le monde car elle dépend vraisemblablement des options d'encodage x264 (et possiblement d'autres choses).

Question :
est-ce que vous avez déjà fait / lu / vu une expérience similaire prouvant une plage de valeurs CRF sur laquelle on atteint un ratio "qualité / débit" maximal ? par exemple 23-25.

Posté : ven. 30 oct., 2015 19:58
par Underground78
Bonsoir,

Pour moi c'est quelque chose de bien connu et c'était vrai aussi pour l'encodage à débit moyen. Si tu choisis de limiter le débit que tu es prêt à donner pour l'encodage, alors il faut mieux sacrifier un peu la résolution pour avoir un résultat potable.

Finalement c'est assez logique, ce qui est détruit ne peut pas être récupéré mais l'upscaling à la volée est suffisamment bon pour donner le change sur la perte de résolution alors que l'encodeur poussé à bout donne un résultat irrécupérable.

Posté : ven. 30 oct., 2015 20:32
par leon1789
Qu'il existe, à débit fixé, une résolution optimale (ni trop grande pour éviter le blocking, ni trop petite pour éviter le flou), oui bien sûr.

Mais ce qui me surprend, c'est que la caractérisation d'une résolution optimale se fasse (hypothèse) aussi facilement par une valeur Rate Factor comprise dans un intervalle, genre 23 - 25, quel que soit le débit (et encore plus étonnant si c'était vrai pour la majorité des films...)

Avant, avec les codecs plus anciens, il n'y avait pas le RF, les choses n'étaient pas aussi simples.

Posté : ven. 30 oct., 2015 22:07
par Underground78
Ça me parait pas non plus étonnant puisque tu vises une qualité plus qu'un débit.

Si tu trouves la limite à partir de laquelle l'encodeur devient trop destructif (dans la majorité des cas) et que tu te mets à bidouiller la résolution pour rester dans les limites que tu considères acceptable pour le débit final alors à mon avis tu as juste déplacé la variable d'ajustement et donc le problème.

Posté : ven. 30 oct., 2015 23:41
par leon1789
Underground78 a écrit :Ça me parait pas non plus étonnant puisque tu vises une qualité plus qu'un débit.
Je ne sais pas si c'est plus la qualité que le débit, car je vise la qualité maximale (en fonction de la résolution) mais sous la forte contrainte d'un débit imposé.
Underground78 a écrit :Si tu trouves la limite à partir de laquelle l'encodeur devient trop destructif (dans la majorité des cas) et que tu te mets à bidouiller la résolution pour rester dans les limites que tu considères acceptable pour le débit final alors à mon avis tu as juste déplacé la variable d'ajustement et donc le problème.
Je ne comprends pas ce que tu expliques.

Quand tu parles de la limite à partir de laquelle l'encodeur devient trop destructif, tu parles de la limite haute de la valeur CRF (25 pour moi). Est-ce si clair que ça que c'est toujours la même, quelle que soit la résolution encodée ? En effet, les artefacts dus à une compressions trop forte (par exemple CRF 30) se voient beaucoup plus sur grand écran quand la résolution encodée est petite 360p par rapport à un encodage HD en 1080p. Donc cela donne l'impression que la limite haute du CRF aurait tendance à diminuer quand la résolution est diminue, et augmenter que la résolution augmente.

Et que dire de la limite basse de CRF où ce n'est plus l'encodeur qui est trop destructif, mais la résolution qui devient trop petite (afin de maintenir le débit fixé) pour maintenir la qualité ? Pourquoi cette limite basse (23 pour moi) serait toujours la même, quelles que soit le débit ?

Je ne sais pas, cela m'étonne. On sait effectivement qu'il faut diminuer la résolution si le débit (fixé) est trop faible (le "trop faible" dépendant de la résolution, de la vidéo, bref, ne pouvant être donné dans l'absolu), mais sans donner de valeur sur le RF. Et surtout, je ne vois nulle part le conseil de monter en résolution si le RF est plus bas qu'une certaine valeur bien déterminée.

Mais bon, on encode souvent en résolution "utile maximale", c'est-à-dire celle de la source ou celle qui sera utilisée pour regarder. Et dans ce cas, il n'y a plus de question à se poser : résolution fixée, plus le RF est bas, mieux c'est.

Posté : sam. 31 oct., 2015 0:17
par Underground78
leon1789 a écrit :Est-ce si clair que ça que c'est toujours la même, quelle que soit la résolution encodée ?
Pourquoi ça serait étonnant ? Après tout le RF est une métrique, il se pourrait très bien qu'elle ne soit que peu affectée par la résolution. En pratique je ne sais pas exactement ce qu'il en est mais visiblement tes tests avaient plutôt l'air de confirmer ça.
leon1789 a écrit :Pourquoi cette limite basse (23 pour moi) serait toujours la même, quelles que soit le débit ?
Parce qu'il s'agit d'une métrique qualitative qui est justement décorrélée du débit ?
leon1789 a écrit :On sait effectivement qu'il faut diminuer la résolution si le débit (fixé) est trop faible (le "trop faible" dépendant de la résolution, de la vidéo, bref, ne pouvant être donné dans l'absolu), mais sans donner de valeur sur le RF.
Si le RF est une métrique correcte de la qualité (ce que n'est pas le débit) ça parait logique de pouvoir trouver un intervalle relativement restreint où on est en général satisfait du résultat.
leon1789 a écrit :Et surtout, je ne vois nulle part le conseil de monter en résolution si le RF est plus bas qu'une certaine valeur bien déterminée.
Quand le débit devient trop haut on dit bien qu'il est gaspillé. Pour moi c'est pareil pour le RF, si tu descends trop bas et atteints un point où la différence n'est plus visible à l’œil nu alors il parait logique d'augmenter la résolution pour essayer de sauvegarder plus de détails à la place.
leon1789 a écrit : Je ne comprends pas ce que tu expliques.
Tout ce que je dis c'est que si tu as trouvé un RF qui te plaît mais que tu cherches à rester dans une certaine gamme de tailles, et par conséquent de débits, alors tu as juste fait de la résolution ta variable d'ajustement sans pouvoir la caractériser à l'avance.

r

Posté : sam. 31 oct., 2015 10:19
par leon1789
Underground78 a écrit :Après tout le RF est une métrique, il se pourrait très bien qu'elle ne soit que peu affectée par la résolution. En pratique je ne sais pas exactement ce qu'il en est mais visiblement tes tests avaient plutôt l'air de confirmer ça.
(...)
Parce qu'il s'agit d'une métrique qualitative qui est justement décorrélée du débit ?
Difficile de savoir. Je ne sais pas ce qu'est réellement le RF : sur quoi il agit en fonction de quoi, etc.
leon1789 a écrit :On sait effectivement qu'il faut diminuer la résolution si le débit (fixé) est trop faible (le "trop faible" dépendant de la résolution, de la vidéo, bref, ne pouvant être donné dans l'absolu), mais sans donner de valeur sur le RF.
Underground78 a écrit : Si le RF est une métrique correcte de la qualité (ce que n'est pas le débit) ça parait logique de pouvoir trouver un intervalle relativement restreint où on est en général satisfait du résultat.
Justement, ce n'est pas un intervalle où "on est satisfait", c'est un intervalle où "la qualité est la meilleure" (suivant une métrique numérique, ce qui n'est pas sans défaut, mais qui a le mérite d'être d'un jugement constant dans les évaluations).
Underground78 a écrit :Quand le débit devient trop haut on dit bien qu'il est gaspillé. Pour moi c'est pareil pour le RF, si tu descends trop bas et atteints un point où la différence n'est plus visible à l’œil nu alors il parait logique d'augmenter la résolution pour essayer de sauvegarder plus de détails à la place.
Je suis absolument d'accord. Mais de là à ce que ce soit la valeur 23, c'est étonnamment haut pour une valeur basse de CRF. Généralement, on lit des valeurs (très) en dessous de 20 comment donnant lieu à gaspillage.
Underground78 a écrit :Tout ce que je dis c'est que si tu as trouvé un RF qui te plaît mais que tu cherches à rester dans une certaine gamme de tailles, et par conséquent de débits, alors tu as juste fait de la résolution ta variable d'ajustement sans pouvoir la caractériser à l'avance.
... je ne sais pas si je te comprends.
"Qui me plait", non car cela n'a rien à voir avec mes yeux : la qualité est mesurée par un outil numérique.
Je cherche en effet à conserver le débit (fixé entre 400 et 1700, selon l'expérience), mais pour cela j'ai deux variables d'ajustement : la résolution et le RF. C'est en conclusion d'expérience que je vois que pour des valeurs de RF comprises entre 23 et 25, la qualité mesurée est maximale pour le débit fixé, et ce quelle que soit la résolution.
Mais je crois que l'intervalle 23-25 que j'obtiens est lié à la vidéo d'origine (entre autres).

Posté : sam. 31 oct., 2015 11:12
par Subbat
Je ne comprend pas tout, pour ne pas dire quasiment rien, mais si quand vous parlez de RF c'est de CRF qu'il s'agit, que la valeur 23 donne les résultats optimales ne seraient pas plus étonnant que ça puisque si je ne me trompe pas, c'est la valeur par défaut conseiller par son développeur...

Posté : sam. 31 oct., 2015 11:37
par leon1789
En effet, 23 est la valeur par défaut pour un encodage CRF. C'est un signe que l'intervalle 23-25 n'est pas déraisonnable.

La question peut être formulée comme ceci (résolution de la source et de l'écran de vision 1920x1080) :
-- vaut-il mieux encoder en 1920 x 1080 à crf 27 ou en 1536 x 864 à crf 24 ? (le débit étant grosso modo le même dans les deux cas)
-- vaut-il mieux encoder en 1280 x 720 à crf 20 ou 1856 x 1044 à crf 24 ? (le débit étant grosso modo le même dans les deux cas)

Pour moi, la réponse n'était pas simple a priori, car on a le choix entre la peste (compression plus importante quand le CRF augmente) ou le choléra (floutage quand la résolution diminue)... Certaines personnes conseillent d'augmenter la résolution (prendre celle de la source), d'autres de diminuer la valeur CRF (jusqu'à 18 ou 20)... Alors ???

Posté : sam. 31 oct., 2015 12:49
par Underground78
leon1789 a écrit : "Qui me plait", non car cela n'a rien à voir avec mes yeux : la qualité est mesurée par un outil numérique.
Il serait intéressant de savoir ce que te disent tes yeux, les métriques ne sont quand même pas la panacée.

En tout cas moi je crois à l'équilibre entre la résolution et la CRF, trop favoriser l'un par rapport à l'autre ne me semble pas pertinent.

Posté : sam. 31 oct., 2015 13:00
par leon1789
Je suis d'accord avec l'équilibre. Le problème est de savoir où est l'équilibre, quelle(s) valeur(s) de RF et quelle(s) résolution(s).

En partant d'un très bas débit en allant vers le très haut débit, on pourrait donc dire :
on part d'une petite résolution et un gros RF (très bas débit)
puis on diminue le RF jusqu'à 23 (toujours en petite résolution)
puis on augmente la résolution (en gardant le RF à 23)
puis, à résolution maximale, on diminue à nouveau le RF (haut débit).

Posté : dim. 01 nov., 2015 19:38
par leon1789
Je viens de tomber sur un post qui relate la même chose :
http://forum.doom9.org/showpost.php?p=1 ... stcount=44

Je traduit pour Subbat ;)
Je tombe sur CRF 23 comme réglage correct pour une compression maximale avant la réduction de résolution. Cela dépend aussi du rapport de réduction d'échelle, dans l' exemple ci-dessus avec de grands ratios 1,5 : 1 , la limite est CRF 25.
Lui aussi parle donc de l'intervalle RF 23-25 pour les changements de résolution.

Posté : lun. 02 nov., 2015 13:21
par Subbat
Merci pour la traduction ;) :D

Posté : mar. 03 nov., 2015 18:53
par Underground78
Après le PSNR c'est pas forcément la meilleure métrique. Le x264 a même un mode spécial pour favoriser le PSNR plutôt que la qualité visuelle (--tune psnr)...

Posté : mer. 04 nov., 2015 18:17
par leon1789
oui, je suis bien d'accord. C'est pour cela que j'utilise une autre métrique, moins éloignée de la perception humaine que l'est le PSNR.

Mais c'est amusant de voir la même conclusion avec des expériences différentes (pas la même façon de procéder, pas la même source, pas la même métrique d'analyse, pas la même configuration de x264, etc.)