neuralchen / SimSwap

An arbitrary face-swapping framework on images and videos with one single trained model!
Other
4.57k stars 899 forks source link

Upgrade insightface #447

Open woctezuma opened 1 year ago

woctezuma commented 1 year ago

The following issue arises with insightface==0.6.2 or below, including the recommended version (0.2.1).

ValueError: This ORT build has ['AzureExecutionProvider', 'CPUExecutionProvider'] enabled. Since ORT 1.9, you are required to explicitly set the providers parameter when instantiating InferenceSession. For example, onnxruntime.InferenceSession(..., providers=['AzureExecutionProvider', 'CPUExecutionProvider'], ...)

See:

This issue is fixed by upgrading to insightface==0.7 or above, but the following issue arises.

TypeError: RetinaFace.detect() got an unexpected keyword argument 'threshold'

This pull request fixes this second issue, which allows to use the latest version of insightface (0.7.3).

Fix:

dimitrisTim commented 1 year ago

Can confirm, fix works :)

Mr-Nobody-dey commented 1 year ago

Again getting the same error "RetinaFace.detect() got an unexpected keyword argument 'threshold'". Can you share your .ipynb file?

!git clone https://github.com/woctezuma/SimSwap.git I have used insightface==0.7.3

woctezuma commented 1 year ago

!git clone https://github.com/woctezuma/SimSwap.git I have used insightface==0.7.3

You should use the branch which incorporates the fix.

!git clone https://github.com/woctezuma/SimSwap.git --branch upgrade-insightface --single-branch

Otherwise you get the main branch, which is an exact copy of the official SimSwap.

Mr-Nobody-dey commented 1 year ago

Ok thank you, It works like a charm. It is 9 commits behind, will you update it?

woctezuma commented 1 year ago

Ok thank you, It works like a charm. It is 9 commits behind, will you update it?

I can do that, but there is no much point: only the README and the notebook were modified in the 9 commits, so no Python code.

Edit: Done this time, but the point of this branch is that the pull request could be merged in the official repository, not to maintain it whenever there is a new update in the official repository. 😛

Mr-Nobody-dey commented 1 year ago

ok Thanks by the way.

yanmingsohu commented 1 year ago

In the latest insightface version, delete line 65 of insightface_func/face_detect_crop_multi.py:

        bboxes, kpss = self.det_model.detect(img,
                                             threshold=self.det_thresh, <---remove this LINE
                                             max_num=max_num,
                                             metric='default')

TO

        bboxes, kpss = self.det_model.detect(img,
                                             max_num=max_num,
                                             metric='default')

face_detect_crop_single.py is same.

woctezuma commented 1 year ago

Yes, that is partially what I did:

In the latest insightface version, delete line 65 of insightface_func/face_detect_crop_multi.py:

If you only do that, then you cannot specify the detection threshold. For instance, the default value (0.5) is used instead of 0.6.

https://github.com/deepinsight/insightface/blob/c2db41402c627cab8ea32d55da591940f2258276/python-package/insightface/model_zoo/scrfd.py#L85C1-L85C1

https://github.com/neuralchen/SimSwap/blob/a5f6dea67398eec9ee71e156f7ad15dbd7ce4977/test_wholeimage_swapsingle.py#L55-L56


NB: antelope.zip contains a file hinting at SCRFD for detection:

based on the outputs found in Colab:

find model: ./insightface_func/models/antelope/glintr100.onnx recognition
find model: ./insightface_func/models/antelope/scrfd_10g_bnkps.onnx detection

So the detection model is SCRFD.

https://github.com/neuralchen/SimSwap/blob/a5f6dea67398eec9ee71e156f7ad15dbd7ce4977/insightface_func/face_detect_crop_single.py#L41-L43

https://github.com/neuralchen/SimSwap/blob/a5f6dea67398eec9ee71e156f7ad15dbd7ce4977/insightface_func/face_detect_crop_single.py#L47-L48