마이크를 정상적으로 연결하였으나, Google Meet(hangout) 등의 사이트에서 마이크 인식이 안되는 경우가 발생할 수 있다.

해결 방법은 아래와같이 해당 사이트 설정에서 마이크 권한을 허용해주면 된다.

 

[해결 방법]

1. 사이트 주소 옆 '자물쇠 모양 버튼' 클릭

2. '사이트 설정' 클릭

2. 마이크가 '요청(기본값)' 또는 '차단'으로 되어있을 텐데, 이를 '허용'으로 변경

3. 새로고침하면(또는 껐다가 다시 들어가면) 잘 인식되는 것을 볼 수 있음

 

[설치]

1. docker 설치

curl -fsSL https://get.docker.com/ | sudo sh

2. nvidia-docker 설치

아래 사이트를 참고하여 설치

https://github.com/NVIDIA/nvidia-docker

 

3. [선택] sudo 명령 간소화

 

sudo usermod -aG docker $USER

위 명령어를 수행 후 재부팅

 

[Docker 기초 커맨드]

docker pull [NAME]: 도커 허브로부터 도커 이미지 다운로드

docker create [IMAGE]: 이미지로부터 컨테이너 생성

docker exec [CONTAINER] [COMMAND] : 특정 컨테이너를 대상으로 커맨드 수행

docker attach [CONTAINER]: 특정 컨테이너 접속

docker run [IMAGE]: docker pull/create/exec를 동시에 수행 (디폴트 커맨드: /bin/bash)

 - ex) docker run --gpus all --name pytorch -it --rm pytorch/pytorch /bin/bash

   => --gpus all: GPU 사용 선언 (nvidia-docker 전용, 선언하지 않으면 cuda 사용 불가)

   => --name pytorch: 컨테이너 이름(사용자 지정, 중복불가)

   => -it: tty로 도커 컨테이너를 사용하도록 함 (자세한건 참조 페이지 1 확인)

   => --rm: 도커 컨테이너가 종료되면 컨테이너를 자동 제거

   => pytorch/pytorch: 도커 이름 (레포지토리+태그)

   => /bin/bash: 수행할 커맨드 (nvidia-smi 등의 명령어를 의미)

 

docker rm (--force) [CONTAINER_ID]: 생성한 컨테이너 제거

  - ID의 풀네임 대신 앞글자 일부만 입력 가능 (단, 중복되는 ID가 없어야함)

  - ex) container_id: 37b81722dadc => docker rm 3 or 37 or 37b ...

docker rmi [IMAGE_ID]: 이미지 제거

docker ps -a : 컨테이너 상태 확인

docker images : 이미지 확인

 

 

참조 페이지

1. https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%B2%98%EC%9D%8C-docker-%EC%A0%91%ED%95%A0%EB%95%8C-%EC%98%A4%EB%8A%94-%EB%A9%98%EB%B6%95-%EB%AA%87%EA%B0%80%EC%A7%80/

2. https://velog.io/@lazysoul/Docker-Basic-Usage

 

'실습 > Ubuntu' 카테고리의 다른 글

terminal에서 google drive 파일 받기  (0) 2019.12.02
requirements.txt 생성  (0) 2019.02.05
Ubuntu 설치 시 nouveau 오류, 빈화면 문제  (0) 2018.10.31
우분투에서 폴더 삭제하기  (0) 2018.07.10
ppa 추가 및 제거  (0) 2018.05.10

아직 작성중..

 

Benchmark Analysis of Representative Deep Neural Network Architectures

 

※ General Network

1. LeNet (1998)

LeNet-1 (1990): CNN 개념 수립

LeNet-5 (1998):

 - Average Pooling 사용 (Subsampling)

 - 각 feature를 구하기 위해 이전 conv layer의 output feature 중 일부만을 사용. (다양한 조합의 feature들을 사용하여 global feature를 추출하고자함)

 

LeNet-5 Architecture

 

2. AlexNet (2012), [ILSVRC 2012]

 - ILSVRC(ImageNet Large-Scale Visual Recognition Challenge) 2012에서 우승

 - 네트워크를 크게 두 부분으로 나눈 뒤 GPU 병렬 연산 수행 (단순히 큰 네트워크를 처리하기 위함)

 - ReLU와 Droout 사용

AlextNet Architecture

 

3. ZFNet (2013) [ILSVRC 2013]

 - ILSVRC 2013에서 우승

 - 학습된 Conv layer들의 시각화

ZFNet Architecture

 

Network In Network (ICLR14, arXiv:2013.12) https://arxiv.org/abs/1312.4400

 - 1x1 Conv (point-wise conv) 최초 사용

 - Global Average Pooling 최초 사용

 

4. GoogLeNet (Inception V1) (2014) [ILSVRC 2014]

 - ILSVRC 2014에서 우승

 - Inception Module을 구성

 - 다양한 크기의 필터 사용

 - 1x1 Conv (point-wise conv)를 사용하여 feature-wise 특징 추출(1x1)과 spatial-wise 특징 추출(?x?)을 분리하도록 함

https://datascienceschool.net/view-notebook/8d34d65bcced42ef84996b5d56321ba9/

 

5. VGG-16 (arXiv:2014.09) [ILSVRC 2014] https://arxiv.org/abs/1409.1556

 - ILSVRC 2014에서 2위

 - 3x3만을 이용한 간단한 구조 (5x5 => 3x3 두 번, 7x7 => 3x3 세 번)

 

6. ResNet (2015) [ILSVRC 2015]

 - ILSVRC 2015에서 우승 (최초로 사람의 성능을 넘음)

 - Skip Connection 개념 도입

 - 4개의 ResBlock(Bottlenect) 사용

 

7. Inception V2, V3

 - VGG-16의 3x3 conv 철학을 사용 (5x5를 3x3 두 개로 대체)

 - 또한 3x3을 3x1과 1x3 두 개로 대체

 - 참고 자료 : https://datascienceschool.net/view-notebook/8d34d65bcced42ef84996b5d56321ba9/

 

8. Inception V4, Inception-ResNet [ILSVRC 2016]

 - ILSVRC 2016에서 우승

 - 참고 자료 : https://datascienceschool.net/view-notebook/2537461edbac4ab081b8d7f2acb0d30d/

 

9. Xception (2016)

 - Depth-wise Seperable Convolution

 - ResNet의 Skip Connection 적용

 - 참고 자료 : https://datascienceschool.net/view-notebook/0faaf59e0fcd455f92c1b9a1107958c4/

 

10. ResNet v2

 - ResNet에서 activation function 위치를 변형

 

11. ResNeXt

 - ResNet에서 Group Convolution 사용 (Cadinality 개념 사용)

 

12. Wide ResNet

 - ResNet의 Bottleneck에서 채널의 크기를 늘림

 

13. DenseNet

 - dense하게 skip connection 사용

 

14. NasNet (ICLR17, arXiv:2016.11) https://arxiv.org/abs/1611.01578

 - AutoML의 architecture search를 통해 찾아낸 CNN

 

Residual Attention Network (CVPR17, arXiv:2017.04) https://arxiv.org/abs/1704.06904

 - ResNet에 Self-Attention 사용

 - spatial, channel 모두를 고려하여 attention

 

15. SENet (CVPR18, arXiv:2017.09) [ILSVRC 2017] https://arxiv.org/abs/1709.01507

 - ILSVRC 2017에서 우승

 - Residual Attention Network의 구조를 경량화함

 - Squeeze와 Excitation을 통해 channel 별로 attention 수행 (spatial은 고려 안함)

 

16. BAM (BMVC18) / CBAM (ECCV18)

 - SENet에서 spatial 까지 추가적으로 고려

 

17. MnasNet (CVPR19, arXiv:2018.07) https://arxiv.org/abs/1807.11626

 - 기존 NasNet과 대비하여 적은 서치 스페이스 사용

 - acc와 latency를 보상으로 사용

 - 참고 자료 : https://www.youtube.com/watch?v=4uDZxefPd-I

 

17. EfficientNet (ICML19, arXiv:2019.05) https://arxiv.org/abs/1905.11946

 - 모델의 Depth(레이어 수), Width(conv layer의 채널 수), Resolution(입력 영상 크기)를 모델의 크기를 결정하는 하이퍼파라미터로 보고, 제한된 크기에 따라 효과적인 모델을 찾아냄

 - 적은 파라미터로 기존 sota 모델들에 비해 파라미터 대비 높은 성능을 이끌어냄

 - mobile inverted bottleneck (MobileNet V2, Inverted Resdual Block)과 Squeeze and Excitation(SENet)을 혼용하여 기본 블럭으로 사용 (기존 MNas와 같은 서치 스페이스에서 architecture search로 찾아냄)

 - 참고 자료 : https://www.youtube.com/watch?v=Vhz0quyvR7I

 

※ Efficient Network

1. SqueezeNet (2016)

 - Fire Module 사용

 - squeeze layer와 expand layer로 구성

 - squeeze layer : 1x1 conv를 이용하여 차원 축소

 - expand layer : 기존 resnet의 3x3를 일정 비율에 맞춰서 1x1로 대체

 - 기존 Resnet의 각 module을 fire module로 대체

 - AlexNet과 성능, 효율성 비교

 

2. MobileNet

 - 1x1 conv 사용 (차원 축소 + 선형 결합의 연산 이점 목적)

 - depth-wise separable convolution 사용 (Xception 영감)

 - deep compression을 함께 사용하면 모델 크기를 크게 줄일 수 있음을 보임 (inception v3와 비교)

 

3. ShuffleNet (CVPR18)

 - mobilenet 역시 sparse correlation matrix 문제가 발생

 - grouped convolution을 통해서 위 문제를 해결하고자 함

 - 하지만 grouped conv는 채널을 독립으로 나누기 때문에 서로 정보 교환이 없고 성능에 문제가 생김

 - grouped conv 후에 channel을 섞는 아이디어 제안

 - mobilenet보다 좋은 성능을 보임

 

4. MobileNet V2 (CVPR18)

 - Inverted Residual Connection 사용 : resnet의 bottleneck에서 1x1로 피쳐를 줄이는게 아니라, 오히려 늘임

  => 이를 통해 residual connection이 있는 부분의 피처 수를 줄이고, bottleneck 내부에서 피쳐를 늘리고 depth-wise separable conv 수행 (피쳐를 늘리기 때문에 depth-wise separable conv가 피쳐 간의 정보를 보기 어렵다는 단점을 보완)

 - MobileNet V1보다 성능과 효율을 높임. 또한 shuffle 보다 좀 더 좋은 성능을 보임

 - MobileNet V1, ShuffleNet, NASNet 과 비교

 

5. SqueezeNext (2018)

 -

 

6. ShuffleNet V2 (2018)

 - 

 

7. MobileNet V3 (ICCV19, arXiv:2019.05) https://arxiv.org/abs/1905.02244

 - network architecture search(NAS) 활용

 

 

Backbone Network

FPN

 - 

 

DarkNet

 - 

 

 

Modified Convolution

Deonvolution (CVPR10) https://ieeexplore.ieee.org/document/5539957

 - 

 

Dilated Convolution

 - 

 

Deformable Convolution

 - 

 

Deformable Convolution V2

 -

 

 

참고 자료

 - https://www.youtube.com/watch?v=Dvi5_YC8Yts

 - https://www.youtube.com/watch?v=ijvZsH4TlZc

 - S. Bianco, R. Cadene, L. Celona and P. Napoletano, "Benchmark Analysis of Representative Deep Neural Network Architectures," in IEEE Access, vol. 6, pp. 64270-64277, 2018.

 - https://kobiso.github.io/Computer-Vision-Leaderboard/imagenet

AUGMIX: A SIMPLE DATA PROCESSING METHOD TOIMPROVE ROBUSTNESS AND UNCERTAINTY

google AI research 팀이 발표한 논문

ICLR 2020에서 발표될 예정

paer : https://arxiv.org/abs/1912.02781

code : https://github.com/google-research/augmix

 

주제: Data Augmentation 방법 제안

 

 

AugMix는 이름처럼 여러 data augmentation 방법들을 혼합하여 사용한다.

하지만 기존 방법들과 달리 데이터 변환으로인한 manifold를 벗어나는 일을 방지하였다.

 

 

논문에서는 단순히 데이터를 변형시켜서 새로운 샘플을 만들어내는데에 그치지 않고 original 데이터와 함께 학습하는 방법을 제안하였다.

아래는 AugMix의 슈도 코드인데, 맨 아래 Loos Output 부문을 보면 기존 original loss와 Jensen-Shannon 값이 더해진 것을 볼 수 있다.

쉽게 말해 변형된 샘플 이미지에 대한 출력 값과 원본 이미지에 대한 출력 값의 차를 loss로 준다.

이는 모델이 주어진 데이터를 좀 더 잘 표현할 수 있도록 학습하는 효과를 줄 수 있다.

 

AugMix 슈도 코드

 

AugMix는 단순히 image classification 뿐만 아니라 다양한 computer vision 문제에 쉽게 적용할 수 있으며,

adversarial attack 방지 등에 효과적으로 사용될 수 있을 것 같다.

'이론 > 논문 리뷰' 카테고리의 다른 글

(작성중) Convolutional Neural Network 정리  (1) 2019.12.20

ssh_config 파일을 만들고,

 

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 30

 

라고 적어 넣는다.

 

 

그리고

ssh 커맨드에 "-F ssh_config" 옵션을 추가하면 됨.

ex) ssh -F ssh_config name@host -p 7777

 

FILEID: 다운로드 링크 주소에 id={???}에 해당되는 값

 

* 일반 크기의 파일

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME

 

* 큰 크기의 파일 ("파일이 너무 커서 Google에서 바이러스를 검사할 수 없습니다. 그래도 파일을 다운로드하시겠습니까?" 라고 뜨는 파일들)

curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=FILEID" > /dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=FILEID" -o FILDNAME

 

 

'실습 > Ubuntu' 카테고리의 다른 글

docker (nvidia-docker) 기본 사용  (0) 2020.02.12
requirements.txt 생성  (0) 2019.02.05
Ubuntu 설치 시 nouveau 오류, 빈화면 문제  (0) 2018.10.31
우분투에서 폴더 삭제하기  (0) 2018.07.10
ppa 추가 및 제거  (0) 2018.05.10

가끔 모델 학습이나 테스트를 진행하다보면

난데없이 'killed'라는 문구만 뜨고 종료될 때가 있다.

 

상당히 당혹스러운데, 찾아보니

sudo dmesg

명령을 통해 로그를 확인할 수 있다.

 

그리고 이런 경우는 대부분 RAM(GPU RAM 아님) 문제라고한다. 

참고로 램 용량은

free 또는 free -m (MB단위) 로 확인할 수 있다.

오류 내용

---------------------------------------------------------------------

Collecting package metadata (current_repodata.json): failed

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json>
Elapsed: -

An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.

If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.

SSLError(MaxRetryError('HTTPSConnectionPool(host=\'repo.anaconda.com\', port=443): Max retries exceeded with url: /pkgs/main/win-64/current_repodata.json (Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available."))'))

---------------------------------------------------------------------

 

해결 방법

1. "아나콘다경로/Library/bin/" 경로 열기

2. 다음 네 가지 파일들을 복사

libcrypto-1_1-x64.dll

libcrypto-1_1-x64.pdb

libssl-1_1-x64.dll

libssl-1_1-x64.pdb

3. "아나콘다경로/DLLs/" 경로에 붙여넣기

 

1. 시스템 환경변수 Path에 "아나콘다경로\Library\bin" 추가

 - 그래도 안되면 위에 적었던 해결방법 참조

 

-------

그 밖에

conda install openssl,

이전 버전의 아나콘다 설치,

 conda config --set ssl_verify false

등의 해결책들을 알게 되었지만 나에겐 아무것도 통하지 않았음.

결국 위에 써놓은 방법으로 해결함.

 

zipfile을 이용하면 zip 파일의 압축을 해제할 수 있다.

 

파일이 한글일 경우 깨짐 현상이 발생하는데,

구글링하면 이를 해결한 글을 찾을 수 있다.

http://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS8947142043

 

파이썬을 사용해 한글 파일명을 포함한 ZIP 파일 압축 해제

ZIP 압축과 인터넷 인터넷을 사용하는 인구가 늘면서 많은 사람이 대용량의 파일을 주고 받기 시작했다. 인터넷 이전의 지역적인 통신망이었던 PC 통신에서도 여러 개의 파일을 주고 받기 위해 다양한 압축 유틸리티가 사용되었다. 많은...

www.hanbit.co.kr

 

그런데 python 2.x만 가능하고, python 3.x에는 적용되지 않는다.

python 3.x 관련글을 찾으려 했으나, 아무런 포스팅이 없다.

 

그래서 이래저래 찾아본 결과 해결책을 찾을 수 있었다.

결과적으로

기존 member.filename = member.filename.decode("euc-kr").encode("utf-8")를

member.filename.encode('cp437').decode('euc-kr')로 변경하면 된다.

 

풀 코드는 아래처럼 쓰면 된다.

(참고로 이전 글의 함수에서 dest_path 기능이 없길래 추가했다.)

def unzip(source_file, dest_path):
    with zipfile.ZipFile(source_file, 'r') as zf:
        zipInfo = zf.infolist()
        for member in zipInfo:
            try:
                print(member.filename.encode('cp437').decode('euc-kr', 'ignore'))
                member.filename = member.filename.encode('cp437').decode('euc-kr', 'ignore')
                zf.extract(member, dest_path)
            except:
                print(source_file)
                raise Exception('what?!')

 

하지만 euc-kr로 표현되지 않는 파일명은 여전히 깨지긴한다.

https://discuss.pytorch.org/t/logsoftmax-vs-softmax/21386


요약

log softmax의 loss값이 softmax보다 좀 더 크다 (처벌 강화)

'이론 > 메모' 카테고리의 다른 글

모델링, 학습, 테스트  (0) 2019.02.20
용어 정리  (0) 2018.11.22
Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23

https://code.i-harness.com/ko-kr/q/567710

https://stackoverflow.com/questions/5666576/show-the-progress-of-a-python-multiprocessing-pool-map-call

수시 업데이트.



Modeling

 - 특징간 결합 시, 같은 도메인인지 살펴볼것.

 - CNN, RNN, FNN 등 각 네트워크 특징들을 잘 생각해볼것.

 - pooling, 특징간 결합 방법들은 의도에 따라 선택

 - 학습 성능이 낮을 시, 우선 단순한 방법으로 모델 크기를 늘려볼것. (유닛 수, 계층 반복 등)


Data

 - 모든 데이터는 전처리가 필수

 - 전처리 시, 의도대로 되었는지 꼭 시각화(또는 print)해서 확인


Train

 - output 특징에 따라 loss 선별 (상당히 중요)

    ex) 매우 작은 값의 regression이면, mse는 부적절 (l1, smooth l1이 나음)

 - 여러 loss가 나올 때, 가중치를 의도 및 실험적으로 선택 (생각 이상으로 영향을 많이끼침)

 - 직접적인 출력값을 얻기 어려워 보이면, 상대값을 학습

    ex) object detector에서 offset target 등.


Test

 - 적절한 척도를 우선적으로 완성할 것

   -> 또한 완벽하게 구현됬는지 충분히 테스트 해봐야함. (정답을 넣었을 때 최대 점수가 되는지 확인, 시각화 등)


'이론 > 메모' 카테고리의 다른 글

log softmax vs softmax  (0) 2019.03.06
용어 정리  (0) 2018.11.22
Object Detector  (0) 2018.11.07
데이터 전처리  (0) 2018.10.21
작은 네트워크  (0) 2018.09.23

설치 방법

pip install range-key-dict


사용법

from range_key_dict import RangeKeyDict


range_dict = RangeKeyDict({

(0.5, 104.12): 'apple',

(104.12, 232): 'tomato',

(232, 400): 'banana'

})


range_dict[50] # 'apple'

range_dict.get(300.51, 'none') # 'banana'

range_dict.get(1000, 'none') # 'none'


pip freeze > requirements.txt

conda update conda

conda install nb_conda


몇몇 패키지들이 설치가 안되는 경우가 있다.

증상 : Solving environment: /  만 뜨다가 그냥 종료.


이는 Windows Defender 때문에 일어나는 문제이다.

Windows Defender에 들어가서

방화벽 및 네트워크 보호에 도메인/개인/공용 네트워크를 모두 비활성화 시키면 해결된다.

'실습 > 오류 해결' 카테고리의 다른 글

Ubuntu 'killed' 오류  (0) 2019.10.24
anaconda SSL 관련 오류 해결  (15) 2019.10.18
pyinstaller PyQt5 오류  (0) 2018.10.12
Pytorch out of memory 오류  (0) 2018.08.30
[mujoco] command 'gcc' failed with exit status 1` 오류 해결  (0) 2018.08.13

개념


자료형 : https://blog.colab.kr/2

언더스코어(_) 개념 : https://mingrammer.com/underscore-in-python/

getter/setter 필요성 : https://mygumi.tistory.com/161




기본 모듈/함수


파일 경로 : https://hashcode.co.kr/questions/197/python%EC%9C%BC%EB%A1%9C-%ED%98%84%EC%9E%AC-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EC%9C%84%EC%B9%98%EB%A5%BC-%EC%95%8C%EC%95%84%EB%82%B4%EB%8A%94-%EB%B0%A9%EB%B2%95

UUID : https://code.tutsplus.com/ko/tutorials/quick-tip-how-to-create-a-universally-unique-identifier-in-python--cms-25927



정보 손실을 매우 조심해야함.

즉, Feature 추출(conv ..)보다, pooling을 더 조심스럽게 사용해야함.


어떤 feature가 필요할지를 생각.

입력 사이즈가 4:3 비율이라서, pooling도 4:3 비율로 해주면 폭망

이는 단순히 세로/가로 크기만 다르고, 각 축의 정보밀도는 동일하기 때문인데,

pooling 비율을 다르게 주면 같은 수준의 정보를 다른 수준으로 여기고 추출하는 꼴임.

https://github.com/fizyr/keras-retinanet/tree/master/keras_retinanet/utils

https://github.com/ronghanghu/cmn

https://github.com/yikang-li/MSDN

https://github.com/danielgordon10/thor-iqa-cvpr-2018




https://github.com/allenai/ai2thor


'이론 > 공부 자료들' 카테고리의 다른 글

활성화함수  (0) 2018.12.27
나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21

아래 커맨드 입력

conda upgrade conda

http://nittaku.tistory.com/267

'이론 > 공부 자료들' 카테고리의 다른 글

code 공부  (0) 2019.01.08
나이브 베이지안 분류 (Naive Bayesian Classification)  (0) 2018.12.21
여러가지 convolutional layer  (0) 2018.11.16
optimizers  (0) 2018.10.21
Loss Functions  (0) 2018.10.21

+ Recent posts